我已经构建了一个默认情况下使用SQL Server CE 4.0的应用程序,但也可以使用单独的SQL Server(SQL Server Express)。
我已经将它部署到办公室周围的大约10台计算机上,并且除了其中2台之外,它工作正常:副总裁和质量检查人员,当然:-/
在这些计算机上,每个数据库访问大约需要30秒!如果我安装了SQL Server Express 2008 R2,并告诉我的应用程序改用它,则它将运行非常快。
DbProviderFactory
DataAdapter
我不明白为什么该应用程序可以在大多数PC上运行,但在少数PC上却不能运行。
任何想法都欢迎。
谢谢!
此问题的中间原因和解决方法是通过用户访问受密码保护的数据库使用的.NET加密文件。通过更改文件夹的权限解决了该问题。
您可以使用Run-As Admin打开命令提示符并发出此命令(Win XP)
cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys" /E /G Everyone:R
我还在SQLCE连接字符串代码附近的代码中添加了此注释:
/************************************************************************************** * To get rid of the slowdown on non-admin users you need to grant them read access to this folder: * C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys (XP, 2003) * C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys (Windows 7 or 2008) **************************************************************************************/
此处:http : //social.msdn.microsoft.com/Forums/sqlserver/en- US/eb6a01a7-0bfd-41e3-b4c8-34581c5ccaa3/sql-compact-4-locks-up-30seconds- whens-accessing-encrypted Windows XP上运行时的数据库?forum = sqlce
注意:在有问题的计算机上,… \ MachineKeys文件夹在WinExplorer中可见,但实际上无法读取文件。“所有人”具有不允许“读取”的“特殊”权限。我认为.NET可能是由域管理员而非本地管理员安装的。
这只是一个解决方法。我仍然不明白为什么该文件夹在几台计算机上却具有奇怪的权限,而在其他计算机上却没有。我正在使用ClickOnce进行部署,因此无法自动更改文件夹权限。
我只在XP上看到过这个问题,其他帖子暗示这只是XP上的问题,因此希望我不必为此担心很长时间…