SQLServer 銜接掉敗毛病毛病的剖析與消除。本站提示廣大學習愛好者:(SQLServer 銜接掉敗毛病毛病的剖析與消除)文章只能為提供參考,不一定能成為您想要的結果。以下是SQLServer 銜接掉敗毛病毛病的剖析與消除正文
普通而言,有兩種銜接sql server 的方法,一是應用 sql server 自帶的客戶端對象,如企業治理器、查詢剖析器、事務探查器等;二是應用用戶本身開辟的客戶端法式,如ASP 劇本、VB法式等,客戶端法式中又是應用 ODBC 或許OLE DB等銜接 sql server。上面,我們遷就這兩種銜接方法,詳細談談若何來處理銜接掉敗的成績。
1、"sql server 不存在或拜訪被謝絕"
(圖1)
"sql server 不存在或拜訪被謝絕"毛病,平日是最輕易產生的,由於毛病產生的緣由比擬多,所以須要檢討的方面也比擬多。
普通說來,有以下幾種能夠性:
1、收集銜接成績;
2、sql server辦事器成績;
3、辦事器端收集設置裝備擺設成績;
4、客戶端收集設置裝備擺設成績。
起首,我們檢討收集銜接:
1、ping辦事器IP地址。起首先封閉辦事器和客戶真個防火牆,這是為了消除防火牆軟件能夠會屏障對 ping,telnet 等的呼應。然後開端ping辦事器IP地址,假如 ping辦事器IP地址不勝利,解釋物理銜接有成績,這時候候要檢討硬件裝備,如網卡,HUB,路由器等。
2、ping辦事器稱號。假如掉敗則解釋名字解析有成績,這時候候要檢討Netbuis協定能否裝置、;DNS 辦事能否正常。
其次,應用 telnet 敕令檢討sql server辦事器任務狀況。假如敕令履行勝利,可以看到屏幕一閃以後光標在左上角一直明滅,這解釋 sql server 辦事器任務正常,而且正在監聽1433端口的 TCP/IP 銜接;假如敕令前往"沒法翻開銜接"的毛病信息,則解釋辦事器沒有啟動 sql server 辦事,也能夠辦事器端沒啟用 TCP/IP 協定,或許辦事器沒有在 sql server 默許的端口1433上監聽。
最初,我們要檢討辦事器、客戶端收集設置裝備擺設。辦事器檢討能否啟用了定名管道;能否啟用了 TCP/IP 協定等等。我們可以應用 sql server 自帶的辦事器收集應用對象來停止檢討。
單擊:法式-> Microsoft sql server 辦事器收集應用對象;翻開該對象後,在"慣例"中可以看到辦事器啟用了哪些協定,默許我們啟用定名管道和 TCP/IP 協定。點中 TCP/IP 協定,選擇"屬性",我們可以來檢討 SQK Server 辦事默許端口的設置。普通而言,我們應用 sql server 默許的1433端口。假如選中"隱蔽辦事器",則意味著客戶端沒法經由過程列舉辦事器來看到這台辦事器,起到了掩護的感化,但不影響銜接。
(圖2)
(圖3)
接上去我們要到客戶端檢討客戶真個收集設置裝備擺設。我們異樣可以應用 sql server 自帶的客戶端收集應用對象來停止檢討,所分歧的是此次是在客戶端來運轉這個對象。單擊:法式-> Microsoft sql server 客戶端收集應用對象翻開該對象後,在"慣例"項中,可以看到客戶端啟用了哪些協定。異樣,我們須要啟用定名管道和 TCP/IP 協定。點擊 TCP/IP 協定,選擇"屬性",可以檢討客戶端默許銜接端口的設置,該端口必需與辦事器分歧。
(圖4)
經由過程以上幾個方面的檢討,根本上可以消除第一種毛病。
2、"沒法銜接到辦事器,用戶xxx上岸掉敗"
(圖5)
該毛病發生的緣由是因為sql server應用了"僅 Windows"的身份驗證方法,是以用戶沒法應用sql server的登錄帳戶(如 sa )停止銜接。處理辦法以下所示:
1、在辦事器端應用企業治理器,而且選擇"應用 Windows 身份驗證"銜接上 sql server;
2、睜開"sql server組",鼠標右鍵點擊sql server辦事器的稱號,選擇"屬性",再選擇"平安性"選項卡;
3、在"身份驗證"下,選擇"sql server和 Windows ";
4、從新啟動sql server辦事。
在以上處理辦法中,假如在第1步中應用"應用 Windows 身份驗證"銜接 sql server 掉敗,那就經由過程修正注冊表來處理此成績:
1、點擊"開端" "運轉",輸出regedit,回車進入注冊表編纂器;
2、順次睜開注冊表項,閱讀到以下注冊表:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\mssqlServer\mssqlServer];
3、在屏幕右方找到稱號"LoginMode",雙擊編纂雙字節值;
4、將原值從1改成2,點擊"肯定";
5、封閉注冊表編纂器;
6、從新啟動sql server辦事。
此時,用戶可以勝利地應用sa在企業治理器中新建sql server注冊,然則依然沒法應用Windows身份驗證形式來銜接sql server。這是由於在 sql server 中有兩個缺省的上岸戶:
BUILTIN\Administrators
<機械名>\Administrator 被刪除。
要恢復這兩個帳戶,可使用以下的辦法:
1、翻開企業治理器,睜開辦事器組,然後睜開辦事器;
2、睜開"平安性",右擊"登錄",然後單擊"新建登錄";
3、在"稱號"框中,輸出 BUILTIN\Administrators;
4、在"辦事器腳色"選項卡中,選擇"System Administrators" ;
5、點擊"肯定"加入;
6、應用異樣辦法添加 <機械名>\Administrator 登錄。
解釋:
以下注冊表鍵:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\mssqlServer\mssqlServer\LoginMode的值決議了sql server將采用何種身份驗證形式。
1、表現應用"Windows 身份驗證"形式;
2、表現應用混雜形式(Windows 身份驗證和 sql server 身份驗證)。
3、提醒銜接超時
(圖6)
假如碰到第三個毛病,普通而言表現客戶端曾經找到了這台辦事器,而且可以停止銜接,不外是因為銜接的時光年夜於許可的時光而招致失足。這類情形比擬少見,普通產生在當用戶在Internet上運轉企業治理器來注冊別的一台異樣在Internet上的辦事器,而且是慢速銜接時,有能夠會招致以上的超時毛病。有些情形下,因為局域網的收集成績,也會招致如許的毛病。
要處理如許的毛病,可以修正客戶真個銜接超時設置。默許情形下,經由過程企業治理器注冊別的一台sql server的超時設置是 4 秒,而查詢剖析器是 15 秒。
詳細步調為:
企業治理器中的設置:
1、在企業治理器中,選擇菜單上的"對象",再選擇"選項";
2、在彈出的"sql server企業治理器屬性"窗口中,點擊"高等"選項卡;
3、在"銜接設置"下的"登錄超時(秒)"左邊的框中輸出一個比擬年夜的數字,如 30。
查詢剖析器中的設置:
單擊“對象”->"選項"->"銜接"; 將登錄超時設置為一個較年夜的數字,銜接超時改成0。
4、運用法式銜接掉敗
以上的三種毛病信息都是產生在 sql server 自帶的客戶端對象中,在運用法式中我們也會碰到相似的毛病信息,例如:
Microsoft OLE DB Provider for sql server (0x80004005)
[DBNETLIB][ConnectionOpen (Connect()).]Specified sql server not found.
Microsoft OLE DB Provider for sql server (0x80004005)
用戶 'sa' 登錄掉敗。緣由: 未與信賴 sql server 銜接相干聯。
Microsoft OLE DB Provider for ODBC Drivers 毛病 '80004005'.
[Microsoft][ODBC sql server Driver]超時已過時.
假如碰到銜接超時的毛病,我們可以在法式中修正 Connection 對象的超時設置,再翻開該銜接。例如:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={sql server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"
Conn. Properties("Connect Timeout") = 15 '以秒為單元
Conn.open DSNtest
%>
假如碰到查詢超時的毛病,我們可以在法式中修正 Recordset 對象的超時設置,再翻開成果集。例如:
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
. . .
cmd1 = txtQuery.Text
Set rs = New ADODB.Recordset
rs.Properties("Command Time Out") = 300
'異樣以秒為單元,假如設置為 0 表現無窮制
rs.Open cmd1, cn
rs.MoveFirst
. . .
5、小結
本文針對年夜部門用戶在應用 sql server 進程中罕見的銜接掉敗的毛病,重點評論辯論了在應用 sql server 客戶端對象和用戶開辟的運用法式兩種情形下,若何診斷並處理銜接掉敗的毛病。看過本文今後,信任每個讀者都邑對 sql server 的銜接任務道理、身份驗證方法和運用法式開辟等有一個較為周全而深刻的懂得。