前几天对服务器升了级,数据库放在独立服务器上,并且采用sql Server 2008,结果现在只要访问人数稍微有点多,整个网站的访问速度就会很慢.并提示:
Microsoft OLE DB Provider for SQL Server 错误 '80004005'
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问。
令人奇怪的是,这时候打开一些静态页面的速度也会变慢,并且FTP的速度也会跟着变慢.请问这是不是因为ASP和Sql Server 2008的兼容性不好造成的?
不是的,SQL Server只是个数据库,和ASP不存在兼容性的冲突,你可以当它是SQL Server2000的用
如果是人数多了之后性能下降厉害,估计是系统设计有问题,看有拒绝访问的错误,是不是连接在使用后没有关闭而导致连接数满了?记得adodb.connection在ASP中使用后必须立即关闭的
FTP和静态页也慢,这个估计是整个服务器都变得很慢了,看下IIS、SQL Server等进程占用的CPU和内存占用是不是正常,估计你的sql server占用内存会比较多了
报这个错误可能有以下几种情况,希望能给你些帮助:
这个错误发生在当IIS使用匿名帐号(通常是IUSR)时,该帐号在NT中对数据库所在的目录
没有正确的权限.
还要检查一下数据源文件(DSN)是否被别的程序标志成为正在使用中,
这些别的程序一般是Visual
InterDev,关闭任何一个InterDev中的正打开和数据库连接的项目。
这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用
本地路径进行测试,因为如果对本地数据库使用UNC也可能出错。
还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。
最可能的原因是ConnectString是一个在global.asa中初始化的Session变量,但是global.asa
却没有正常工作。解决办法是,检查赋值时是否正确;还有一个原因就是你在你的ConnectString中加入了多余的空格
例如:
Set conn = Server.CreateObject("ADODB.Connection")
connstr =
"Provider=Sqloledb; User ID=" & SqlUsername & "; Password=" &
SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data
Source=" & SqlLocalName & ";"
conn.Open connstr
改为
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Driver={SQL
Server};Server=local;uid="&SqlUsername&";pwd="&SqlPassword&";database="&SqlDatabaseName&";autotranslate=yes;"
conn.Open connstr
或者
Set conn =
Server.CreateObject("ADODB.Connection")
connstr="Driver={SQL
Server};Server=local;uid="&SqlUsername&";pwd="&SqlPassword&";database="&SqlDatabaseName&";autotranslate=yes;Data
Source=" & SqlLocalName & ";"
conn.Open connstr