1. 程式人生 > >SQL Server 客戶端連線的問題

SQL Server 客戶端連線的問題

 經常遇到 SQL Server 客戶端無法連線到SQL Server 例項(服務)。現在將這類問題歸納如下:

一、SQL Server 例項(服務)的問題

wKiom1Vn2z-B9S0WAAHTrKIN064798.jpg

1、例項(服務)未啟動

  開啟“SQL Server 配置管理器”(或者“管理工具”中的“服務”),檢查對應的例項(服務)的狀態是否為“正在執行”(或者“已啟動”)。如果該例項沒有啟動(甚至客戶端在連線時使用了錯誤的主機名和例項名),這個時候客戶端當然連線不到SQL Server資料庫了。

wKiom1NLaRLBNLR0AAMMXCxz8lU385.jpg

2、網路通訊協議未啟用

  如果客戶端使用網路協議去連線SQL Server,那麼就要求SQL Server的例項(服務)也要啟用相應的網路協議。一般可能出現有2種狀況:

  1. 發現在 SQL Server 本機可以訪問,但是客戶端不行。這是因為,從 SQL Server 2005 開始,本地訪問時預設使用 Shared Memory(可以理解為直接去記憶體中訪問),而遠端客戶端是不可能使用Shared Memory 的。

  2. 修改了網路配置,啟用了 TCP/IP 協議,務必記得重啟 SQL Server 例項(服務),不然就沒有生效。

wKiom1NLadDhDZQZAAGeIy9HJfE551.jpg

3、TCP/IP 埠配置

  對於 TCP/IP 協議,請注意埠的配置。

(1) 是否“全部偵聽”

  如下圖,此時“協議”選項卡的“全部偵聽”為“是”,表示本機所有的網絡卡都使用相同的配置,即所有網絡卡都使用同一個TCP埠號碼提供連線(忽略每一塊網絡卡獨立的配置資訊,只使用 IPAl

l節點的配置)。

wKioL1NLbLywKq_nAAGqGaUR6-g469.jpg

wKiom1NLbYSxoYoKAAEDQcPIJ54247.png

  如果“全部偵聽”設定為“否”,那麼這臺伺服器的每一塊網絡卡都可以獨立配置“TCP埠”以及“已啟用”。

(2) 動態埠

  如果“TCP動態埠”設為0,那麼將使用動態埠。

  由於動態埠在每次啟用SQL Server例項(服務)時都可能改變,所以客戶端訪問時將自動向這臺伺服器的 UDP 1434 埠查詢,詢問對應的 SQL Server 例項(服務)的當前埠。UDP 1434 對應的服務是 SQL Server Browser,它負責向客戶端返回其查詢的SQL Server例項(服務)對應的TCP埠。

  因此,如果啟用了動態埠,請啟動 SQL Server Browser 服務。

wKioL1NLbyPRrf2QAALSDlr4tJ8557.jpg

(3) 檢視埠狀態

  例如,對於預設例項,可以使用 netstat 命令檢查 TCP1433 埠是否開啟。

wKiom1VK4vCAPpDNAAKkF3kK81Q046.jpg

4. 總結

  對於例項(服務)的問題,可以直接檢視啟動日誌,啟動日誌一般為ERRORLOG(沒有後綴),通常位於 C:\Program Files\Microsoft SQL Server\<例項ID>\MSSQL\Log 資料夾。

wKioL1Vn22Kxm45VAAJPGWmdww4994.jpg

二、網路問題

1. 防火牆

  由於 Windows 2008 及後續版本增強了安全性,因此在安裝 SQL Server 時並不會自動開啟防火牆埠。

wKioL1NLa82zg5mOAALiCtiAKrU387.jpg

2. DNS

  這裡又可能出現兩種常見問題。

(1)主機名錯誤

  如果填寫了錯誤的主機名,例如 localhsot,肯定連線不上。

(2)DNS伺服器

  如果是DNS伺服器的問題,建議在連線之前先嚐試 PING。同樣要注意,PING也需要目標計算機開啟防火牆埠。

三、帳戶與密碼錯誤

1. 訪問許可權的問題

  客戶端訪問時使用的某個帳戶沒有許可權,當然也就不能訪問 SQL Server。

2. 帳戶被禁用

  例如,預設情況下sa帳戶被禁用,需要手動修改為“已啟用”。

wKioL1NUl5yzLs_qAAMEOVHti1c595.jpg

3. 如果是SQL帳戶登入

  如果在安裝SQL Server時就指定身份驗證模式為“混合模式”,那麼就可以允許SQL Server帳戶,否則只允許Windows帳戶。
wKioL1NLeYryDZFHAADup6PsA6U309.png


  安裝完成之後,如果要修改身份驗證模式,可以通過SQL Server Management Studio修改。修改後需要重啟該SQL Server例項(服務)才會生效。
wKiom1NLecHBtDTVAAEOExwvl80750.png

4. 總結

  帳號的問題比較簡單,通常報錯資訊比較明顯。

wKioL1Vn3CPS194sAACmoEsgWC4485.jpg

附錄:

  附件是舒老師在培訓時寫給學員的一個用於測試客戶端連線的小工具。

wKiom1Vn15aBHeM5AAL2UoXguRc861.jpg