小编典典

SQL Server CE在某些计算机上极慢

sql

我已经构建了一个默认情况下使用SQL Server CE 4.0的应用程序,但也可以使用单独的SQL Server(SQL Server Express)。

我已经将它部署到办公室周围的大约10台计算机上,并且除了其中2台之外,它工作正常:副总裁和质量检查人员,当然:-/

在这些计算机上,每个数据库访问大约需要30秒!如果我安装了SQL Server Express 2008 R2,并告诉我的应用程序改用它,则它将运行非常快。

  • 这两个有问题的计算机都是WinXP SP3,但是大多数可运行的PC也是XP。
  • 我正在使用C#.NET 4.0 App通过ClickOnce使用SQL Server CE的私有部署。
  • DbProviderFactory用来允许使用相同的查询文本(或数据适配器)访问SQL Server Express或SQL Server CE。
  • 大多数查询很简单。几个用途DataAdapter
  • 几乎所有查询最终都会返回数据,但是我在日志文件中看到一个返回空的记录,没有错误/异常,但是应该有大约20-40行和大约80列。
  • 对于每个查询,我都会创建,打开和关闭连接。我不清楚SQL Server CE是否需要/建议/不建议这样做。

我不明白为什么该应用程序可以在大多数PC上运行,但在少数PC上却不能运行。

任何想法都欢迎。

谢谢!


阅读 186

收藏
2021-04-28

共1个答案

小编典典

此问题的中间原因和解决方法是通过用户访问受密码保护的数据库使用的.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上的问题,因此希望我不必为此担心很长时间…

2021-04-28