我有一个相当大的SQL2000应用程序(大约有10年历史,是用c++编写的),它可以与MSDE Express一起使用。它对数据库的操作相当广泛,但没有性能问题。由于Windows与Windows7/8的兼容性问题,我想将应用程序迁移到SQL2014 Express。
所有数据库访问代码都是用t/sql编写的,因此应用程序无需任何代码更改即可迁移到SQL2014,并且所有功能都按预期工作。除非它太慢了,所以在SQL2014下使用这个应用程序是没有意义的。所有的select/update/insert查询的执行时间大约是原来的5-20倍。
下面是我尝试过的连接字符串:
Provider=SQLOLEDB;Data Source=localhost\app;User ID=app_user;Password=password;
Provider=SQLOLEDB;Data Source=localhost\app;Trusted_Connection=yes;我不会将SQL2000数据库转换到2014,因为应用程序在第一次运行时会从头开始从脚本创建新的数据库。没有失败,默认的DB大小是12MB,模式得到了很好的优化。
我也在SQL2008R2 Express上尝试了同样的方法--它和SQL2014 Express一样慢。已在Windows 7/8/8.1下试用不同的PCs都是一样的。
我注意到的主要细节是,当我在SQL2014下运行应用程序时,Windows任务管理器中消耗CPU最多的进程是“本地安全授权进程”。当我在SQL2000 MSDE下运行它时,这个进程根本不会出现在任务管理器中,并且应用程序的运行速度要快得多。我猜LSA可能会非常繁重地处理我的“开放连接”请求,但我不知道该怎么办。
编写应用程序的方式是,它不会保持连接打开,而是按需创建连接,然后释放。我尝试在不同的账户下运行SQL 2014服务--结果没有什么不同。
发布于 2014-11-30 14:24:13
当我在SQL2000 MSDE下运行它时,
这个进程根本不会出现在任务管理器中,并且应用程序运行得更快。我猜LSA可能会非常繁重地处理我的“开放连接”请求,但我不知道该怎么办。
通常,IPSEC服务(PolicyAgent)、ProtectedStorage和安全帐户管理器(SamSs)都会使用lsass.exe
尝试禁用IPSEC服务(PolicyAgent)
https://stackoverflow.com/questions/27209563
复制相似问题