SQL Server无法连接客户端的问题
SQL Server 客戶(hù)端連接的問(wèn)題
?
SQL Server 客戶(hù)端無(wú)法連接到SQL Server 實(shí)例(服務(wù))問(wèn)題歸納:
?
一、SQL Server 實(shí)例(服務(wù))的問(wèn)題
1、實(shí)例(服務(wù))未啟動(dòng)
打開(kāi)“SQL Server 配置管理器”(或者“管理工具”中的“服務(wù)”),檢查對(duì)應(yīng)的實(shí)例(服務(wù))的狀態(tài)是否為“正在運(yùn)行”(或者“已啟動(dòng)”)。如果該實(shí)例沒(méi)有啟動(dòng)(甚至客戶(hù)端在連接時(shí)使用了錯(cuò)誤的主機(jī)名和實(shí)例名),這個(gè)時(shí)候客戶(hù)端當(dāng)然連接不到SQL Server數(shù)據(jù)庫(kù)了。
?
?
2、網(wǎng)絡(luò)通訊協(xié)議未啟用
如果客戶(hù)端使用網(wǎng)絡(luò)協(xié)議去連接SQL Server,那么就要求SQL Server的實(shí)例(服務(wù))也要啟用相應(yīng)的網(wǎng)絡(luò)協(xié)議。一般可能出現(xiàn)有2種狀況:
1. 發(fā)現(xiàn)在 SQL Server 本機(jī)可以訪問(wèn),但是客戶(hù)端不行。這是因?yàn)?#xff0c;從 SQL Server 2005 開(kāi)始,本地訪問(wèn)時(shí)默認(rèn)使用 Shared Memory(可以理解為直接去內(nèi)存中訪問(wèn)),而遠(yuǎn)程客戶(hù)端是不可能使用Shared Memory 的。
2. 修改了網(wǎng)絡(luò)配置,啟用了 TCP/IP 協(xié)議,務(wù)必記得重啟 SQL Server 實(shí)例(服務(wù)),不然就沒(méi)有生效。
?
3、TCP/IP 端口配置
對(duì)于 TCP/IP 協(xié)議,請(qǐng)注意端口的配置。
(1) 是否“全部偵聽(tīng)”
如下圖,此時(shí)“協(xié)議”選項(xiàng)卡的“全部偵聽(tīng)”為“是”,表示本機(jī)所有的網(wǎng)卡都使用相同的配置,即所有網(wǎng)卡都使用同一個(gè)TCP端口號(hào)碼提供連接(忽略每一塊網(wǎng)卡獨(dú)立的配置信息,只使用?IPAll節(jié)點(diǎn)的配置)。
?
?
如果“全部偵聽(tīng)”設(shè)置為“否”,那么這臺(tái)服務(wù)器的每一塊網(wǎng)卡都可以獨(dú)立配置“TCP端口”以及“已啟用”。
?
(2) 動(dòng)態(tài)端口
如果“TCP動(dòng)態(tài)端口”設(shè)為0,那么將使用動(dòng)態(tài)端口。
由于動(dòng)態(tài)端口在每次啟用SQL Server實(shí)例(服務(wù))時(shí)都可能改變,所以客戶(hù)端訪問(wèn)時(shí)將自動(dòng)向這臺(tái)服務(wù)器的 UDP 1434 端口查詢(xún),詢(xún)問(wèn)對(duì)應(yīng)的 SQL Server 實(shí)例(服務(wù))的當(dāng)前端口。UDP 1434 對(duì)應(yīng)的服務(wù)是 SQL Server Browser,它負(fù)責(zé)向客戶(hù)端返回其查詢(xún)的SQL Server實(shí)例(服務(wù))對(duì)應(yīng)的TCP端口。
因此,如果啟用了動(dòng)態(tài)端口,請(qǐng)啟動(dòng) SQL Server Browser 服務(wù)。
?
(3) 查看端口狀態(tài)
例如,對(duì)于默認(rèn)實(shí)例,可以使用 netstat 命令檢查 TCP1433 端口是否打開(kāi)。
?
?
4. 總結(jié)
對(duì)于實(shí)例(服務(wù))的問(wèn)題,可以直接查看啟動(dòng)日志,啟動(dòng)日志一般為ERRORLOG(沒(méi)有后綴),通常位于 C:\Program Files\Microsoft SQL Server\<實(shí)例ID>\MSSQL\Log 文件夾。
?
?
二、網(wǎng)絡(luò)問(wèn)題
1. 防火墻
由于 Windows 2008 及后續(xù)版本增強(qiáng)了安全性,因此在安裝 SQL Server 時(shí)并不會(huì)自動(dòng)打開(kāi)防火墻端口。
?
關(guān)于防火墻的配置,請(qǐng)參考?“http://jimshu.blog.51cto.com/3171847/590411”為SQL Server 開(kāi)放端口”。
?
2. DNS
這里又可能出現(xiàn)兩種常見(jiàn)問(wèn)題。
(1)主機(jī)名錯(cuò)誤
如果填寫(xiě)了錯(cuò)誤的主機(jī)名,例如 localhsot,肯定連接不上。
?
(2)DNS服務(wù)器
如果是DNS服務(wù)器的問(wèn)題,建議在連接之前先嘗試 PING。同樣要注意,PING也需要目標(biāo)計(jì)算機(jī)打開(kāi)防火墻端口。
?
?
三、帳戶(hù)與密碼錯(cuò)誤
1. 訪問(wèn)權(quán)限的問(wèn)題
客戶(hù)端訪問(wèn)時(shí)使用的某個(gè)帳戶(hù)沒(méi)有權(quán)限,當(dāng)然也就不能訪問(wèn) SQL Server。
?
2. 帳戶(hù)被禁用
例如,默認(rèn)情況下sa帳戶(hù)被禁用,需要手動(dòng)修改為“已啟用”。
?
3. 如果是SQL帳戶(hù)登錄
如果在安裝SQL Server時(shí)就指定身份驗(yàn)證模式為“混合模式”,那么就可以允許SQL Server帳戶(hù),否則只允許Windows帳戶(hù)。
安裝完成之后,如果要修改身份驗(yàn)證模式,可以通過(guò)SQL Server Management Studio修改。修改后需要重啟該SQL Server實(shí)例(服務(wù))才會(huì)生效。
?
4. 總結(jié)
帳號(hào)的問(wèn)題比較簡(jiǎn)單,通常報(bào)錯(cuò)信息比較明顯。
?
?
附錄:
附件是舒老師在培訓(xùn)時(shí)寫(xiě)給學(xué)員的一個(gè)用于測(cè)試客戶(hù)端連接的小工具。
總結(jié)
以上是生活随笔為你收集整理的SQL Server无法连接客户端的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何解决类模板的分离编译问题?
- 下一篇: 嵌入式数据库sqlite在ARM上的的移