SQLServer 2000个人人版和企业版的并发性性能差异

        最近公司的一个内部管理系统频频出问题,其后台用的是SQLServer 2000。
20人并发访问时,有的延迟10分钟以上,最终Timeout。该服务器在20人并发访问时,
CPU、内存、硬盘、网络等方面的指标都正常,所以不是硬件性能导致的问题。
        经过各种测试未果后,偶尔在应用程序日志中发现“SQLServer 个人版”字样,
立刻考虑是不是由于SQLServer个人版引起的性能问题。因为内部管理系统在另一分公
司(使用SQLServer2000企业版)已经使用几年,并发一二百人时,延迟也不超过几
秒钟。    
        微软说SQLServer2000个人版在并发超过5人时性能作了限制。
        通过select @@version,确定该服务器用的就是个人版。接下来就是重装了。
        首先分离数据库,卸载个人版,安装企业版中途出错。经过Google一番,解决
问题,在第二次安装SQLServer时把老的SQLServer清除干净就OK了,步骤:
1、删除SQLServer2000安装目录
2、删除注册表项:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Microsoft SQLServer

        接下来在新装的SQLServer 2000上附加分离的数据库。遇到孤立用户的问题。
比如,老数据库的表是用户test建立的,当附加该数据库后,test用户此时就成了孤
立用户,没有与之对应的登陆用户名,即使新建一个test登录用户名,而且是以前的
用户密码,使用该用户登录后同样不能操作以前属于test的用户表。因为系统中使用
sid来标识用户,新老test用户有不同的sid,所以出现了上面的问题。

        解决的简便方法是使用存储过程sp_change_users_login把登录用户test和
数据库的孤立用户test对应起来: 
        sp_change_users_login有三种动作,分别是report,update_one和auto_fix。
        sp_change_users_login 'report'
                列出当前数据库的孤立用户
        sp_change_users_login 'update_one','test','test'
                把老的test用户和新建的test登陆用户对应起来
        如果没有建立test的登录用户,还可以用
        sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'
                创建一个登录用户test,密码为testpassword。把老的test用户和新建的
                test登陆用户对应起来
posted @ 2008-03-26 10:55  h2appy  阅读(691)  评论(0编辑  收藏  举报