排除問題的詳細步奏
接下來將會對於每一個步奏會有更加詳細的介紹。
確定連線的DB Server Name
需要先確認DB的Instance名稱。
從上一個步奏確認服務是否有啟動的部分,可以看到在括弧裡面的就是DB的Instance名稱。以剛剛那個為例子,就是
SQLEXPRESS
。
Instance名稱有分為2種:
Default Instance -
MSSQLSERVER
是Default Instance
Named Instance - 其他設定都是Named Instance
如果是
Default Instance
,那麼連線的DB Server Name就是
{電腦名稱}
,如果是
Named Instance
,那麼就是
{電腦名稱}\{Instance名稱}
以剛剛那個instance為例,因為它是Named Instance,因此它的Server Name是
localhost\SQLEXPRESS
測試的連線畫面
Network:用local檢查tcp是否有通
當上面步奏連線成功的時候,走的是
Shared Memory
的通道,因此
不表示tcp連線
(因為從另外一台連過來走的通道)是可以通。
為了避免其他network的問題,可以先在local(DB在的那台)測試tcp通道是否有問題。
做法很簡單,就是把上一步取得的DB Server Name的前面加上
tcp:
即可,因此最後的結果是:
tcp:localhost\SQLEXPRESS
測試tcp連線的畫面
如果連線失敗,用
Sql Server Configuration Manager
->
Sql Server Network Configuration
裡面的
Protocols for {instance name}
確定
TCP/IP
處於
Enabled
的狀態。
確認TCP/IP是啟用的狀態
Network: 用local檢查Database的port
如果上一個步奏
TCP/IP
已經是
Enabled
的情況但是還是連不到,檢查一下port是否正確。
預設port是
1433
,如果DB不在預設port,那麼連線的時候需要打上port號。
先用local的方式連到DB(不要加上tcp的部分)去檢查log看看目前在聽那個port:
檢查步奏
選擇
Management
選擇
SQL Server Log
選擇最新的一筆
從跳出的畫面選擇
Filter
在
Message Contains Text
輸入:server is listening on
勾起來
Apply Filter
選擇ok
檢查結果,可以看到這個聽的port是50021
修改port號可以透過
Sql Server Configuration Manager
工具的:
Sql Server Network Configuration
->
Protocols for {instance name}
對
TCP/IP
點
右鍵
然後選擇
內容
切換到頁簽
IP Address
,並且卷到做下面,檢查
IP All
的TCP port是不是1433。
檢查port的方式
如果有改TCP Port,記得要重啟DB Service才會有作用。
假設port有修改,連線的時候在後面加上
,{port號}
即可使用哪個port做連線。例如假設port號是
50021
,那麼連線就是:
tcp:localhost\SQLEXPRESS,50021
連線畫面
用local檢查sql帳號登入是否通過
一般來說連線的時候都是使用Sql帳號(而不是Windows驗證),因此要用local測試使用Sql帳號是否能夠登入。
假設出現了登入錯誤,Sql Error 18456,表示沒有開啟
Mixed Mode
,解決方式:
先用Windows驗證連到DB並且對DB點
右鍵
,選擇
Properties
切換到
Security
的左邊menu
選擇
Sql Server and Windows Authentication Mode
- 並且記得
重啟DB的Service
設定畫面
用remote測試連線 - 防火墻
基本上如果上面都做完,基本上連線就不會有什麼問題,剩下可能會擋的部分就剩下防火墻。
可以先嘗試把DB那台和需要連到DB的那台的防火墻
先關掉
做測試,如果可以連,在把它打開,然後設定允許DB的port連線。