我有一个VB脚本连接到本地SQL数据库来检索一个值。完全相同的脚本在大约100台服务器上运行,但少数服务器产生此错误:[DBNETLIB] [ConnectionOpen(PreLoginHandshake())。]一般网络错误 - 连接到VB脚本中的SQL数据库
[DBNETLIB] [ConnectionOpen(PreLoginHandshake())。]一般网络错误。检查您的网络文档
下面是运行该代码:
Function GetPrimaryServerID
On Error Resume Next
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=xxx;User ID=xxx;Password=xxx"
sqlquery = "SELECT ServerID FROM tblSettings"
objRecordSet.Open sqlquery,objConnection
objRecordSet.MoveFirst
GetPrimaryServerID = objRecordSet("ServerID")
objRecordSet.Close
objConnection.Close
End Function
试图打开连接字符串时,5日线出现的错误。我很困惑,为什么这个脚本在几乎所有的服务器上工作,只有少数人失败。它们所连接的数据库在每个服务器的结构上都是相同的,它只有那些发生变化的数据。
所有服务器具有Windows 2003 R2 SP2 64位。 所有服务器都使用SQL Server 9.0.3042 64位。 这包括成功和失败的服务器。我已经仔细检查了发生故障的服务器,以确保安全。我不知道如何检查MDAC版本。 我刚刚注意到,在失败的服务器上,当打开SQL Server Management Studio时,我无法连接到127.0.0.1,我必须连接到服务器名称。但是,在其他所有服务器上,我都可以连接到127.0.0.1。 – VBscripter 2009-12-07 05:50:43
这是尝试通过Management Studio连接到发生故障的服务器上的127.0.0.1时发生的错误:与服务器建立了连接,但在登录前握手过程中发生错误。连接到SQL Server 2005时,此故障可能是由于在默认设置下,SQL Server不允许远程连接。 (提供程序:命名管道提供程序,错误:0 - 没有进程在管道的另一端。)(Microsoft SQL Server,错误:233) – VBscripter 2009-12-07 05:53:42
@VBScripter:你可以ping 127.0.0.1吗?这些服务器是否配置为encrpytion? – gbn 2009-12-07 07:09:14