Thank you for reading...
2007/05/20 22:37
朋友的一个网站经常一天之中会出现几次访问很慢甚至完全打不开的情况,开始一直怀疑是程序问题,也优化了些,但是一直没能彻底解决。
前几天,比较严重的问题出现了。经常卡,有时iisreset完后就马上卡。我在服务器上的事件日志中,突然发现大量的SQL事件,打开一看,类似如下描述:
17052:
SQL Server 已为 8 个并发查询而优化。1 个查询超过了此限制,因而性能可能会受到不良影响。
搜索引擎中查一下,说是sql版本问题,改成企业版就行了。
咦,难道安装的不是企业版?先看看是什么版本,select @@version看下,显示
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
晕,真的是个人版。。。
第二天,他让重装了企业版,程序没动,到现在还没有发现有访问非常慢的情况,看来这个SQL个人版是造成这个问题的罪魁祸首!我估计访问量只要稍大(超过1wIP),用SQL个人版就可能会出问题。
另有一篇的解决方法:
前几天,比较严重的问题出现了。经常卡,有时iisreset完后就马上卡。我在服务器上的事件日志中,突然发现大量的SQL事件,打开一看,类似如下描述:
17052:
SQL Server 已为 8 个并发查询而优化。1 个查询超过了此限制,因而性能可能会受到不良影响。
搜索引擎中查一下,说是sql版本问题,改成企业版就行了。
咦,难道安装的不是企业版?先看看是什么版本,select @@version看下,显示
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
晕,真的是个人版。。。
第二天,他让重装了企业版,程序没动,到现在还没有发现有访问非常慢的情况,看来这个SQL个人版是造成这个问题的罪魁祸首!我估计访问量只要稍大(超过1wIP),用SQL个人版就可能会出问题。
引用
SQL Server 2000 桌面版和 SQL Server 2000 个人版都有一个并发工作负荷调控器,可在并发执行 5 个以上的批处理时限制数据库引擎的性能。
并发工作负荷调控器限制了数据库引擎的性能。当同时执行五个以上的批处理命令时,个别 Transact-SQL 批处理命令的性能将降低。
来源:http://www.9zhidao.cn/info/8304.htm
并发工作负荷调控器限制了数据库引擎的性能。当同时执行五个以上的批处理命令时,个别 Transact-SQL 批处理命令的性能将降低。
来源:http://www.9zhidao.cn/info/8304.htm
另有一篇的解决方法:
引用
你的服务器上有 多个 CPU?
用sp_configure 改一下 cost threshod for parallelism,和max degree of parallelism
的值,企业服务器的 server属性的处理器页也有这个选项.
你在企业管理器中的'处理器'页下有个'并发',其中的最小查询计划阀值改一个看行不行.
还有连接页下的并发用户连接数也看一下
来源:http://www.9zhidao.cn/info/23105.htm
用sp_configure 改一下 cost threshod for parallelism,和max degree of parallelism
的值,企业服务器的 server属性的处理器页也有这个选项.
你在企业管理器中的'处理器'页下有个'并发',其中的最小查询计划阀值改一个看行不行.
还有连接页下的并发用户连接数也看一下
来源:http://www.9zhidao.cn/info/23105.htm
2007/05/14 09:00
在查询分析器中运行select @@version
我的是
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
其中看到May 3 2005 就说明是打了SP4了。
我的是
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
其中看到May 3 2005 就说明是打了SP4了。
2007/05/11 12:54
参照用Win2003 server打造安全的个人Web服务器对服务器进一步做了一些配置。出于对SQL安全性的考虑,我参照
4、删除以下的扩展存储过程格式为:
use master
sp_dropextendedproc '扩展存储过程名'
xp_cmdshell:是进入操作系统的最佳捷径,删除
访问注册表的存储过程,删除
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regwrite Xp_regremovemultistring
删除了这些存储过程,但今天发现在MSSQL中使用新建作业时提示找不到xp_regread,于是就想办法恢复这些SP。找了另一台2003的机子对比,通过sp_addextendedproc exec 'xp_regread','xp_star.dll',恢复了'xp_regread'。
但是这回提示变成,
Cannot load the DLL xp_star.dll, or one of the DLLs it references.
Reason: 126(The specified module could not be found.).
(注:我的其实是中文的,但错误提示没Copy下来,在搜索时找到了他人英文版出的一模一样的提示)
晕,再把其它过程也都恢复,
sp_addextendedproc xp_regaddmultistring,'xp_star.dll'
sp_addextendedproc xp_regdeletekey,'xp_star.dll'
sp_addextendedproc xp_regdeletevalue,'xp_star.dll'
sp_addextendedproc xp_regenumvalues,'xp_star.dll'
sp_addextendedproc 'xp_cmdshell','xplog70.dll'
还是一样的提示,不知道哪里出了问题:(
MSSQL重打一次SP4,打一下后,还是不行。
最后在安装目录的Install目录下,看到了最后一个文件xpstar.sql,有希望,查询分析器运行了它一下,哈,搞定:)
引用
4、删除以下的扩展存储过程格式为:
use master
sp_dropextendedproc '扩展存储过程名'
xp_cmdshell:是进入操作系统的最佳捷径,删除
访问注册表的存储过程,删除
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regwrite Xp_regremovemultistring
删除了这些存储过程,但今天发现在MSSQL中使用新建作业时提示找不到xp_regread,于是就想办法恢复这些SP。找了另一台2003的机子对比,通过sp_addextendedproc exec 'xp_regread','xp_star.dll',恢复了'xp_regread'。
但是这回提示变成,
Cannot load the DLL xp_star.dll, or one of the DLLs it references.
Reason: 126(The specified module could not be found.).
(注:我的其实是中文的,但错误提示没Copy下来,在搜索时找到了他人英文版出的一模一样的提示)
晕,再把其它过程也都恢复,
sp_addextendedproc xp_regaddmultistring,'xp_star.dll'
sp_addextendedproc xp_regdeletekey,'xp_star.dll'
sp_addextendedproc xp_regdeletevalue,'xp_star.dll'
sp_addextendedproc xp_regenumvalues,'xp_star.dll'
sp_addextendedproc 'xp_cmdshell','xplog70.dll'
还是一样的提示,不知道哪里出了问题:(
MSSQL重打一次SP4,打一下后,还是不行。
最后在安装目录的Install目录下,看到了最后一个文件xpstar.sql,有希望,查询分析器运行了它一下,哈,搞定:)
2007/02/01 23:21
昨天上午把连接代码改成:
"Provider=SQLOLEDB.1;Network=DBMSSOCN;Password='" & db_password & "';Persist Security Info=True;User ID=" & db_username & ";Initial Catalog=" & db_name &";Data Source='" & db_host & "'"
后,经常发现网站打不开,非常慢,但有时访问并不慢的情况,网站访问量明显下降。
觉得还是连接代码的问题,但是恢复成原来的又连接不上:(
搜索了DBMSSOCN下,查到:
如果我使用DSN-Less的方式连接到SQL Server,如何指定使用TCP/IP的通信协议?
答: 您可以使用 "NETWORK=DBMSSOCN" 的属性。Connection String 使用TCP/IP协议。如"driver={SQL Server};server=MyServer;" & _ "uid=sa;pwd=;database=pubs;NETWORK=DBMSSOCN"其中的DBMSSOCN为TCP/IP网络库的DLL名称。
把原来的连接代码加了"NETWORK=DBMSSOCN" ,即:
"Driver={SQL Server}; NETWORK=DBMSSOCN; server=" & db_host & "; uid=" & db_username & "; pwd=" & db_password & "; database=" & db_name
成功连上。
观察了几小时,连接正常,网站访问量也正常。
问了网管,搬迁后没改过数据库和Web服务器任何设置,至于为什么原来可以现在要加这句才连得上,另外一台Web服务在就不需要改动,不知道怎么回事。
"Provider=SQLOLEDB.1;Network=DBMSSOCN;Password='" & db_password & "';Persist Security Info=True;User ID=" & db_username & ";Initial Catalog=" & db_name &";Data Source='" & db_host & "'"
后,经常发现网站打不开,非常慢,但有时访问并不慢的情况,网站访问量明显下降。
觉得还是连接代码的问题,但是恢复成原来的又连接不上:(
搜索了DBMSSOCN下,查到:
如果我使用DSN-Less的方式连接到SQL Server,如何指定使用TCP/IP的通信协议?
答: 您可以使用 "NETWORK=DBMSSOCN" 的属性。Connection String 使用TCP/IP协议。如"driver={SQL Server};server=MyServer;" & _ "uid=sa;pwd=;database=pubs;NETWORK=DBMSSOCN"其中的DBMSSOCN为TCP/IP网络库的DLL名称。
把原来的连接代码加了"NETWORK=DBMSSOCN" ,即:
"Driver={SQL Server}; NETWORK=DBMSSOCN; server=" & db_host & "; uid=" & db_username & "; pwd=" & db_password & "; database=" & db_name
成功连上。
观察了几小时,连接正常,网站访问量也正常。
问了网管,搬迁后没改过数据库和Web服务器任何设置,至于为什么原来可以现在要加这句才连得上,另外一台Web服务在就不需要改动,不知道怎么回事。
2007/01/31 09:57
早上发现Web服务器连不上数据库了,提示“SQL Server 不存在或访问被拒绝”。想起凌晨服务器搬迁,应该是数据库IP没改,FTP连上一看,改了。想到应该是安全策略没改,上服务器一看,果然是旧的IP,改正。
本来以为好了,确发现,一台Web连数据库正常,另一台还是不行,提示:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC SQL Server Driver][Named Pipes]没有发现指定的 SQL Server。
奇怪!IP安全策略没问题啊,删除了再加,还是这样:(
试试IP安全策略是否有效,Telnet 数据库IP 1433,能连上!
重启下IIS,还是不行。看来只是代码的问题。
换成其它的连接方式试试,原来是用:
connstr = "Driver={SQL Server}; server=" & db_host & "; uid=" & db_username & "; pwd=" & db_password & "; database=" & db_name
换成:
connstr = "Provider=SQLOLEDB.1;Network=DBMSSOCN;Password='" & db_password & "';Persist Security Info=True;User ID=" & db_username & ";Initial Catalog=" & db_name &";Data Source='" & db_host & "'"
居然搞定了。。。为什么这样就行了的原因不明。
哎,由于连服务器挺慢,解决这个小小的问题化了一个多小时:(
赶快吃早餐了:)
附:MS官方的如何解决 SQL Server 2000 中的连接问题,有时间再仔细看看。
本来以为好了,确发现,一台Web连数据库正常,另一台还是不行,提示:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC SQL Server Driver][Named Pipes]没有发现指定的 SQL Server。
奇怪!IP安全策略没问题啊,删除了再加,还是这样:(
试试IP安全策略是否有效,Telnet 数据库IP 1433,能连上!
重启下IIS,还是不行。看来只是代码的问题。
换成其它的连接方式试试,原来是用:
connstr = "Driver={SQL Server}; server=" & db_host & "; uid=" & db_username & "; pwd=" & db_password & "; database=" & db_name
换成:
connstr = "Provider=SQLOLEDB.1;Network=DBMSSOCN;Password='" & db_password & "';Persist Security Info=True;User ID=" & db_username & ";Initial Catalog=" & db_name &";Data Source='" & db_host & "'"
居然搞定了。。。为什么这样就行了的原因不明。
哎,由于连服务器挺慢,解决这个小小的问题化了一个多小时:(
赶快吃早餐了:)
附:MS官方的如何解决 SQL Server 2000 中的连接问题,有时间再仔细看看。







