我有一個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