- 相關(guān)推薦
SQLServer連接中常見錯誤解決方法
SQL Server 中的連接問題有多種原因。 接下來,小編用收集到的SQLServer連接中常見錯誤解決方法,希望能幫助大家解決這一問題,從而更好的訪問sql數(shù)據(jù)庫。
一、sqlserver不存在或訪問被拒絕
分析:此問題最為復雜,由于錯誤發(fā)生的原因比較多,所以需要檢查很多方面。
一般情況下,有幾種可能性:
1.sql server名稱或ip地址拼寫有誤。
2.服務器端網(wǎng)絡配置有誤。
3.客戶端網(wǎng)絡配置有誤。
要解決此問題,我們一般要遵循以下的步驟來一步步找出導致錯誤的原因。
首先,檢查網(wǎng)絡物理連接
ping <服務器ip地址>
假如ping<服務器ip地址>不成功,說明物理連接有問題,這時候要檢查硬件設備,如網(wǎng)卡,hub,路由器等.。
另外還有一種可能是由于客戶端和服務器之間安裝有防火墻軟件造成的,比如isaserver。
防火墻軟件可能會屏蔽對ping,telnet等的響應,因此在檢查連接問題的時候,我們要先把防火墻軟件暫時關(guān)閉,或者打開所有被封閉的端口。
如果ping<服務器ip地址>成功而,ping<服務器名稱>失敗則說明名字解析有問題,這時候要檢查dns服務是否正常。
有時候客戶端和服務器不在同一個局域網(wǎng)里面,這時候很可能無法直接使用服務器名稱來標識該服務器,這時候我們可以使用hosts文件來進行名字解析,具體的方法是:
1.使用記事本打開hosts文件(一般情況下位于c:winntsystem32driversetc)。
添加一條ip地址與服務器名稱的對應記錄,如:
172.168.10.24 myserver
2.或在sqlserver的客戶端網(wǎng)絡實用工具里面進行配置,后面會有詳細說明。
其次,使用telnet命令檢查sqlserver服務器工作狀態(tài)
telnet <服務器ip地址> 1433
如果命令執(zhí)行成功,可以看到屏幕一閃之后光標在左上角不停閃動,這說明sqlserver服務器工作正常,并且正在監(jiān)聽1433端口的 tcp/ip 連接。
如果命令返回"無法打開連接"的錯誤信息,則說明服務器端沒有啟動sqlserver服務, 也可能服務器端沒啟用 tcp/ip 協(xié)議,或者服務器端沒有在sqlserver默認的端口1433上監(jiān)聽。
接著,我們要到服務器上檢查服務器端的網(wǎng)絡配置,檢查是否啟用了命名管道.是否啟用了tcp/ip協(xié)議等等
可以利用 sql server 自帶的服務器網(wǎng)絡使用工具來進行檢查。
點擊:程序—microsoft sql server—服務器網(wǎng)絡使用工具。
打開該工具后,在“常規(guī)”中可以看到服務器啟用了哪些協(xié)議。
一般而言,我們啟用命名管道以及 tcp/ip 協(xié)議.
點中 tcp/ip 協(xié)議,選擇"屬性",我們可以來檢查 sqk server服務默認端口的設置.一般而言,我們使用 sqlserver默認的1433端口.如果選中"隱藏服務器",則意味著客戶端無法通過枚舉服務器來看到這臺服務器,起到了保護的作用,但不影響連接。
接下來我們要到客戶端檢查客戶端的網(wǎng)絡配置
我們同樣可以利用 sql server自帶的客戶端網(wǎng)絡使用工具來進行檢查,所不同的是這次是在客戶端來運行這個工具.
點擊:程序—microsoft sql server—客戶端網(wǎng)絡使用工具。
打開該工具后,在"常規(guī)"項中,可以看到客戶端啟用了哪些協(xié)議。
一般而言,我們同樣需要啟用命名管道以及tcp/ip 協(xié)議。
點擊tcp/ip協(xié)議,選擇"屬性",可以檢查客戶端默認連接端口的設置,該端口必須與服務器一致。
單擊"別名"選項卡,還可以為服務器配置別名.服務器的別名是用來連接的名稱,連接參數(shù)中的服務器是真正的服務器名稱,兩者可以相同或不同.別名的設置與使用hosts文件有相似之處。
通過以上幾個方面的檢查,基本上可以排除第一種錯誤。
二、無法連接到服務器,用戶xx-x登陸失敗
該錯誤產(chǎn)生的原因是由于sql server使用了"僅windows"的身份驗證方式,
因此用戶無法使用sqlserver的登錄帳戶(如sa)進行連接,解決方法如下所示:
1.在服務器端使用企業(yè)管理器,并且選擇"使用windows身份驗證"連接上sqlserver在企業(yè)管理器中
—右鍵你的服務器實例(就是那個有綠色圖標的)
—編輯sql server注冊屬性
—選擇"使用windows身份驗證"
2.展開"sql server組",鼠標右鍵點擊sqlserver服務器的名稱,選擇"屬性",再選擇"安全性"選項卡。
3.在"身份驗證"下,選擇"sql server和 windows "。
4.重新啟動sql server服務。
在以上解決方法中,如果在第1步中使用"使用windows身份驗證"連接sql server失敗, 那就通過修改注冊表來解決此問題:
1.點擊"開始"—"運行",輸入regedit,回車進入注冊表編輯器。
2.依次展開注冊表項,瀏覽到以下注冊表鍵:
[hkey_local_machinesoftwaremicrosoftmssqlservermssqlserver]
3.在屏幕右方找到名稱"loginmode",雙擊編輯雙字節(jié)值。
4.將原值從1改為2,點擊"確定"。
5.關(guān)閉注冊表編輯器。
6.重新啟動sql server服務。
此時,用戶可以成功地使用sa在企業(yè)管理器中新建sqlserver注冊,
但是仍然無法使用windows身份驗證模式來連接sql server。
這是因為在sql server中有兩個缺省的登錄帳戶:
builtinadministrators
<機器名>administrator 被刪除。
要恢復這兩個帳戶,可以使用以下的方法:
1.打開企業(yè)管理器,展開服務器組,然后展開服務器
2.展開"安全性",右擊"登錄",然后單擊"新建登錄"
3.在"名稱"框中,輸入 builtinadministrators
4.在"服務器角色"選項卡中,選擇"system administrators"
5.點擊"確定"退出
6.使用同樣方法添加 <機器名>administrator 登錄。
詳細說明:
以下注冊表鍵:
hkey_local_machinesoftwaremicrosoftmssqlservermssqlserverloginmode的值決定了sqlserver將采取何種身份驗證模式.
1.表示使用"windows 身份驗證"模式
2.表示使用混合模式(windows 身份驗證和 sql server身份驗證)。
三、提示連接超時
如果遇到第三個錯誤,一般而言表示客戶端已經(jīng)找到了這臺服務器,并且可以進行連接,不過是由于連接的時間大于允許的時間而導致出錯。
這種情況一般會發(fā)生在當用戶在internet上運行企業(yè)管理器來注冊另外一臺同樣在internet上的服務器,并且是慢速連接時,有可能會導致以上的超時錯誤.有些情況下,由于局域網(wǎng)的網(wǎng)絡問題,也會導致這樣的錯誤。
要解決這樣的錯誤,可以修改客戶端的連接超時設置.默認情況下,通過企業(yè)管理器注冊另外一臺sql server的超時設置是4秒,而查詢分析器是15秒(這也是為什么在企業(yè)管理器里發(fā)生錯誤的可能性比較大的原因).
具體步驟為:
企業(yè)管理器中的設置:
1.在企業(yè)管理器中,選擇菜單上的"工具",再選擇"選項"
2.在彈出的"sqlserver企業(yè)管理器屬性"窗口中,點擊"高級"選項卡
3.在"連接設置"下的"登錄超時(秒)"右邊的框中輸入一個比較大的數(shù)字,如20.
查詢分析器中的設置:
工具—選項—連接—將登錄超時設置為一個較大的數(shù)字
四、大部分機都用tcp/ip才能成功,有時你會發(fā)現(xiàn)用namedpipes才可以?
這是由于在windows 2000以后的操作系統(tǒng)中,ms為解決sqlserver的安全問題將tcp/ip配置為sqlserver的默認連接協(xié)議,你可以在client networkutility中看到tcp/ip和name pipe 的順序。
也可以在:
[hkey_local_machinesoftwaremicrosoftmssqlserverclientsupersocketnetlib]
"protocolorder"=hex(7):74,00,63,00,70,00,00,00,00,00
此處可以看到默認的協(xié)議。
問:怎么在程序中更改namedpipes,tcp/ip其sql語句怎么寫?
答:可以在以上提到的注冊表的相對位置來修改,示例如下:
·client端:
[hkey_local_machinesoftwaremicrosoftmssqlserverclientsupersocketnetlib]
"protocolorder"=hex(7):74,00,63,00,70,00,00,00,00,00
·server端:
[hkey_local_machinesoftwaremicrosoftmssqlservermssqlserversupersocketnetlib]
"protocolorder"=hex(7):74,00,63,00,70,00,00,00,00,00
其他常見錯誤
1.檢查網(wǎng)絡物理連接
ping 服務器名稱 或者 ping 服務器ip地址
===》ping 服務器ip地址失敗 :說明物理連接出問題,需要檢查硬件設備;需要注意將防火墻關(guān)掉,因為它也許會屏蔽你的ping命令
===》ping 服務器ip地址成功 ping 服務器名稱失。赫f明服務器名稱有問題。如果服務器和客戶端不在同一局域網(wǎng)內(nèi),很可能無法直接使用服務器名稱標志服務器。
2.使用telnet命令檢查sql server服務器工作狀態(tài)
telnet 服務器ip地址 14323(默認端口號)
===>如果有“無法打開連接”的信息,說明你的sql server服務沒開啟,或者你的tcp/ip協(xié)議沒有啟用,或者你的服務器沒有在端口1433上監(jiān)聽
3.檢查服務器端的網(wǎng)絡配置,看是否啟用命名管道,是否啟用tcp/ip協(xié)議
這個可以在不同版本的sql server自帶的工具管理器里找到,比如2000是服務器網(wǎng)絡使用工具 2017是sql server配置管理器
4.檢查客戶端的網(wǎng)絡配置,查看使用的協(xié)議
一般需要啟用命名管道;
b-用戶sa登入失敗
錯誤有以下可能:
1.你的登入身份為“僅windows身份登入”
2.你改完登入方式后,設置賬戶后沒有運行sp_password
第一個原因解決方法:以2000為例:
1.在服務器端使用企業(yè)管理器,并且選擇"使用 windows 身份驗證"連接上 sql server
2.展開"sql server組",鼠標右鍵點擊sql server服務器的名稱,選擇"屬性",再選擇"安全性"選項卡
3.在"身份驗證"下,選擇"sql server和 windows ".
4.重新啟動sql server服務.
在以上解決方法中,如果在第 1 步中使用"使用 windows 身份驗證"連接 sql server 失敗,那就通過修改注冊表來解決此問題:
1.點擊"開始" "運行",輸入regedit,回車進入注冊表編輯器
2.依次展開注冊表項,瀏覽到以下注冊表鍵:
[hkey_local_machinesoftware microsoft mssqlserver mssqlserver]
3.在屏幕右方找到名稱"loginmode",雙擊編輯雙字節(jié)值
4.將原值從1改為2,點擊"確定"
5.關(guān)閉注冊表編輯器
6.重新啟動sql server服務;
--or
use[master]
go exec xp_instance_regwrite nhkey_local_machine, nsoftware/microsoft/mssqlserver/mssqlserver, nloginmode, reg_dword,2go
此時,用戶可以成功地使用sa在企業(yè)管理器中新建sql server注冊,但是仍然無法使用windows身份驗證模式來連接sql server。這是因為在 sql server 中有兩個缺省的登錄帳戶:builtinadministrators 以及<機器名>administrator 被刪除。要恢復這兩個帳戶,可以使用以下的方法:
1、打開企業(yè)管理器,展開服務器組,然后展開服務器;
2、展開"安全性",右擊"登錄",然后單擊"新建登錄";
3、在"名稱"框中,輸入 builtinadministrators;
4、在"服務器角色"選項卡中,選擇"system administrators" ;
5、點擊"確定"退出;
6、使用同樣方法添加 <機器名>administrator 登錄。
以下注冊表鍵
hkey_local_machinesoftwaremicrosoftmssqlservermssqlserverloginmode
的值決定了sql server將采取何種身份驗證模式。該值為1,表示使用windows 身份驗證模式;該值為2,表示使用混合模式(windows 身份驗證和 sql server 身份驗證)。
第二個原因解決方法:sql server2017為例
1、登陸設置改為,sql server and windows authentication方式同時選中,
具體設置如下:
manage管理器->windows authentication(第一次用windows方式進去),->對象資源管理器中選擇你的數(shù)據(jù)服務器--右鍵>屬性>security>sqlserver and windows authentication方式同時選中.
2、設置一個sql server方式的用戶名和密碼,具體設置如下:
manage管理器->windows authentication>new query>sp_password null,sa123456,sa 這樣就設置了一個用戶名為sa ,密碼為:sa123456的用戶,下次在登陸時,可以用sql server方式, 用戶名為sa ,密碼為:sa123456的用戶進數(shù)據(jù)庫了.
3、用ssms運行的 sp_password null,sa123456,sa 然后重新啟動sql;
c-連接超時
如果遇到這樣的錯誤,一般而言表示客戶端已經(jīng)找到了這臺服務器,并且可以進行連接,不過是由于連接的時間大于允許的時間而導致出錯。
這種情況比較少見,一般發(fā)生在當用戶在internet上運行企業(yè)管理器來注冊另外一臺同樣在internet上的服務器,并且是慢速連接時,有可能會導致以上的超時錯誤。
有些情況下,由于局域網(wǎng)的網(wǎng)絡問題,也會導致這樣的錯誤。
要解決這樣的錯誤,可以修改客戶端的連接超時設置。默認情況下,通過企業(yè)管理器注冊另外一臺sql server的超時設置是 4 秒,而查詢分析器是 15 秒。
具體步驟為:
企業(yè)管理器中的設置:
1、在企業(yè)管理器中,選擇菜單上的"工具",再選擇"選項";
2、在彈出的"sql server企業(yè)管理器屬性"窗口中,點擊"高級"選項卡;
3、在"連接設置"下的"登錄超時(秒)"右邊的框中輸入一個比較大的數(shù)字,如 30。
查詢分析器中的設置:
單擊“工具”->"選項"->"連接"; 將登錄超時設置為一個較大的數(shù)字,連接超時改為0
d-登入的1069錯誤:
癥狀:
由于更改了你的計算機名字,再次啟動時,就會發(fā)生“由于登入失敗而無法啟動服務”的情況。
解決方法:
1.改回你的計算機名字;
2.使用控制面板,找到ms server服務,更改啟動賬號信息到安裝時候的信息,再啟動服務;
3.創(chuàng)建一個用戶,專門用于啟動服務,安裝sql的時候就用該用戶啟動sql server,這樣可以避免頻繁更改administrator帶來的1069錯誤。
即使已經(jīng)安裝好了sql server,你也可以在控制面板下的服務里的服務賬號信息更改到那個專門啟動的用戶。
e-連接sql server 201718452/18456錯誤
f-sql server 2017 錯誤233的解決辦法
g-sql server express 2017無法使用sa用戶登陸解決
在安裝vs2017/2017(我機器上安裝的vs2017)時會默認把sql server express 2017安裝上,默認安裝時并沒有打開遠程連接及sa用戶登陸功能
無法使用sa用戶登陸解決方案
解決方法如下,打microsoft sql server management studio express,以windows驗證方式登陸,打開服務器屬性窗口(在數(shù)據(jù)庫服務器圖標上點右鍵選"屬性"),選擇"安全性"選項
服務器驗證方式選擇sql servertt和windows驗證方式,確認
然后再到"安全性-登陸名"處設置sa用戶屬性
設置密碼
解決方法:打開“開始—所有程序—microsoft sql server 2017 —配置工具—sql server 配置管理器”,在彈出的窗體中,找到“sql server 2017 網(wǎng)絡配置”,把“mssqlserver的協(xié)議”下的“named pipes”和“tcp/ip”啟用,然后重新啟動sql server 即可。
證書錯誤時
癥狀:
當連接到 SQL Server 時,你可能會收到以下錯誤消息:
已成功與服務器建立連接,但是在登錄過程中發(fā)生錯誤。 (提供程序: SSL 提供程序,錯誤: 0 - 證書鏈是由不受信任的頒發(fā)機構(gòu)頒發(fā)的。) (.Net SqlClient 數(shù)據(jù)提供程序)
解決方法:
1、導出服務器證書
1.本例使用名為“caCert.cer”的文件作為證書文件。 你必須從服務器獲取此證書文件。 以下步驟說明如何將服務器證書導出到文件:
2.依次單擊“開始”和“運行”,然后鍵入“MMC”。 (MMC 是 Microsoft 管理控制臺的英文首字母縮略詞。)
3.在 MMC 中,打開“證書”。
4.展開“個人”,然后展開“證書”。
5.右鍵單擊服務器證書,然后選擇“所有任務導出>”。
6.單擊“下一步”跳過“證書導出”向?qū)У摹皻g迎”對話框。
7.確認“否,不要導出私鑰”處于選中狀態(tài),然后選擇“下一步”。
8.確保已選擇“DER 編碼的二進制 X.509 (.CER)”或“Base-64 編碼的 X.509 (.CER)”,然后單擊“下一步”。
2、輸入導出文件名。
1.單擊“下一步”,然后單擊“完成”以導出證書。
2.在客戶端計算機上安裝根證書頒發(fā)機構(gòu) (CA)
3.在客戶端計算機上啟動 MMC 的證書管理單元,然后添加證書管理單元。
4.在“證書管理單元”對話框中,選擇“計算機帳戶”,然后選擇“下一步”。
5.在“選擇計算機”窗格中,選擇“本地計算機: (此主機在) 上運行的計算機,然后選擇”完成”。
6.選擇“確定”以關(guān)閉“添加或刪除管理單元”對話框。
7.在 MMC 的左窗格中,展開“證書 (本地計算機)節(jié)點。
8.展開“受信任的根證書頒發(fā)機構(gòu)”節(jié)點,右鍵單擊“證書”子文件夾,選擇“所有任務”,然后選擇“導入”。
9.在“證書導入向?qū)А钡摹皻g迎”頁上,選擇“下一步”。
10.在“要導入的文件”頁上,選擇“瀏覽”。
11.瀏覽到caCert.cer證書文件的位置,選擇該文件,然后選擇“打開”。
12.在“要導入的文件”頁上,選擇“下一步”。
13.在“證書存儲”頁上,接受默認選擇,然后選擇“下一步”。
14.在“完成證書導入向?qū)А表撋,選擇“完成”。
對于方案 1 和 2,請在客戶端應用程序中將“信任服務器證書”設置設置為true。
【SQLServer連接中常見錯誤解決方法】相關(guān)文章:
SQL數(shù)據(jù)庫連接常見錯誤的解決方法09-22
寬帶連接錯誤651的原因及解決方法03-16
電腦硬盤的常見錯誤提示及解決方法09-22
Matlab常見語法錯誤及解決方法轉(zhuǎn)02-26
寬帶連接失敗的解決方法03-04
應用程序中的服務器錯誤及解決方法02-28
錯誤711的解決方法09-22
explorerexe錯誤的解決方法09-22