我的ASP应用程序连接到安装了SQL Server 2000的网络服务器没有问题。有效的旧代码:
myConn.Open ("Driver={SQL Server};
Server=myNetwrkServer;
Database=myDB;
UID=myID;PWD=myPWD;Trusted_Connection=NO;")
SQL Server 2008的实例安装在同一网络服务器上。新代码不起作用:
myConn.Open ("Driver={SQL Server Native Client 10.0};
Server=myNetwrkServer\SQLServ2008;
Database=myDB;
UID=myID;PWD=myPWD;Trusted_Connection="NO";)
请帮忙!
答案 0 :(得分:10)
命名实例需要启用并启动SQL Server Browser Service。如果未在myNetwrkServer
计算机上启动此服务,则网络连接将失败,因为它们无法将实例名称解析为实际侦听端口。
第二个问题是您将驱动程序更改为{SQL Server Native Client 10.0}
。这要求您在ASP计算机上安装SQL Server 2008本机驱动程序。没有理由更改驱动程序,您应该将驱动程序保留到旧{SQL Server}
并让OleDB为您解析低级连接驱动程序。通过不仅指定本机驱动程序,甚至指定版本号,您将指示低级别连接堆栈,即使它可以工作,它也会在您升级到SQL Server 2008 R2时中断。只需将其留在通用{SQL Server}
,让司机经理弄清楚细节。
最后,您需要确保在新服务器上定义了登录名/密码。
作为一般规则,“新代码不起作用”绝不是您应该提出的帮助请求。始终将如何不起作用。你得到例外或错误吗?什么异常,什么消息?试图帮助你不一定是一本神秘的小说。
答案 1 :(得分:8)
您在行尾附近有不匹配的引号。
应该是这样的
myConn.Open ("Driver={SQL Server Native Client 10.0};
Server=myNetwrkServer\SQLServ2008;
Database=myDB;
UID=myID;PWD=myPWD;Trusted_Connection=NO;")
答案 2 :(得分:2)
Trusted_Connection="NO";)
看起来用双引号包围那里的值会把事情搞砸。
而不是:
("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection="NO";)
看起来你应该:
("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection=NO;")
答案 3 :(得分:1)
您的Trusted_Connection
参数似乎正在不正确地终止连接字符串。
考虑完全删除Trusted_Connection
,或确保不将NO放在引号中。
myConn.Open ("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;
Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection=NO;")
答案 4 :(得分:1)
正如其他人所说,报价不匹配。但是,您不应该需要可信连接位。您可以使用UID=
和PWD=
,或Trusted_Connection=yes
。您不需要同时拥有所有属性。
这应该可以正常工作:
myConn.Open ("Driver=SQLNCLI10;
Server=myNetwrkServer\SQLServ2008;
Database=myDB;
UID=myID;
PWD=myPWD;")
答案 5 :(得分:1)
这是我从任何网络应用程序连接到新SQL Server失败时检查的清单(已经提到了一些要点):
答案 6 :(得分:0)
除了Eton B和Remus Rusanu所说的,你还应该检查SQL Server上是否启用了命名管道协议。检查(在服务器上):
如果未启用“命名管道”,请右键单击“属性”,将Enabled
更改为Yes
。
另一个选择是强制tcp(显然使用与上面类似的步骤来验证是否启用了tcp)。您可以通过更改连接字符串来强制tcp,以便在服务器名称前添加tcp:
:
myConn.Open ("Driver={SQL Server};
Server=tcp:myNetwrkServer;
Database=myDB;
UID=myID;PWD=myPWD;Trusted_Connection=NO;")
如果您强制使用tcp,请注意默认情况下您的应用程序将访问端口1433上的数据库,这意味着如果该服务器正在运行防火墙,则需要在服务器上打开该端口。