2009-12-07 225 views
1

我有一個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日線出現的錯誤。我很困惑,爲什麼這個腳本在幾乎所有的服務器上工作,只有少數人失敗。它們所連接的數據庫在每個服務器的結構上都是相同的,它只有那些發生變化的數據。

回答

2

修復了以下問題: 已打開SQL Server配置管理器,並進入了MSSQLSERVER協議 - > TCP/IP在IP地址選項卡中,我注意到IP2的地址爲127.0.0.1已激活但未啓用。已更改爲啓用並重新啓動的SQL服務。我的VB腳本現在成功地打開了連接到127.0.0.1。

0

這不是一個數據庫錯誤,而是客戶端工具或配置錯誤

發生故障的服務器可能會:

  • 有不同的級別是SQL服務器的安裝/包括服務包)
  • 僅針對Windows身份驗證進行配置
  • 具有較舊的MDAC(鏈接到SQL Service Pack,OS Service Pack等)

編輯:

SQL Server SSL加密,server side, is described here。而在KB 316898

  • 「服務器端」只需要一個服務器證書和所有連接進行加密
  • 「客戶端」需要客戶端證書,是可選的,僅適用於客戶端

某些客戶端庫(特別是MS JDBC)不支持這一點。

如果我猜得不錯,你就會有客戶端或基於服務器的服務器SSL加密集(您的腳本作爲客戶端)

+0

所有服務器具有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

+0

這是嘗試通過Management Studio連接到發生故障的服務器上的127.0.0.1時發生的錯誤:與服務器建立了連接,但在登錄前握手過程中發生錯誤。連接到SQL Server 2005時,此故障可能是由於在默認設置下,SQL Server不允許遠程連接。 (提供程序:命名管道提供程序,錯誤:0 - 沒有進程在管道的另一端。)(Microsoft SQL Server,錯誤:233) – VBscripter 2009-12-07 05:53:42

+0

@VBScripter:你可以ping 127.0.0.1嗎?這些服務器是否配置爲encrpytion? – gbn 2009-12-07 07:09:14

0

可能如果數據庫未配置爲偵聽TCP/IP通信,則會失敗。錯誤「命名管道提供程序,錯誤:0 - 沒有進程在管道的另一端。」指向那個方向。

您可以測試與:

telnet 127.0.0.1 1433 

要配置在服務器監聽,使用'SQL服務器網絡實用程序」的SQL Server 2000,或 「SQL Server外圍應用配置」 爲SQL Server 2005及以上

+0

好的我已經完成了telnet測試,並且失敗了,無法連接到端口1433.服務器正在使用SQL Server 2005,我已經打開了SQL Server表面區域配置,但是您能否告知我去哪裏配置服務器聽? – VBscripter 2009-12-07 06:25:47

+0

@VBScripter:單擊「服務和連接的表面區域配置」,然後單擊「MSSQLSERVER」 - >「數據庫引擎」 - >「遠程連接」,並確保選擇了TCP/IP選項之一 – Andomar 2009-12-07 06:55:18

+0

'local遠程連接「和」同時使用TCP/IP和命名管道「,但我仍然無法通過管理工作室連接到127.0.0.1或通過端口1433連接到127.0.0.1。 – VBscripter 2009-12-07 06:59:53

-1
  1. 嘗試禁用WPF,這應該可以解決問題(控制面板 - > Windows防火牆)。

  2. 如果沒有,那麼你也可以停止該服務的防火牆(從SERVICES.MSC - > Windows個人防火牆)

+0

這將有助於您解答很多問題,以解釋爲什麼您認爲Windows防火牆可能會出現問題。 – Aiken 2015-01-28 07:51:55