今天遇到一個問題,sql server無法登陸,到Services裡看,服務沒有起來。但是在啟動Service時遇到問題說無法啟動。去Administrative Tools->Event Viewer中查看了一下,發現如下錯誤(該錯誤在SQL Server日誌中也可以查看到,目錄在C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log):
Server TCP provider failed to listen on [ 'any' <ipv4> 1433]. Tcp port is already in use.
TDSSNIClient initialization failed with error 0x2740, status code 0xa. Reason: Unable to initialize the TCP/IP listener. Only one usage of each socket address (protocol/network address/port) is normally permitted.
知道可以用netstat -ano命令查看系統連接埠的使用方式。檢查後沒有發現1433連接埠在使用。
所以直接改了SQL Server的TCP/IP連接埠。更改辦法如下:
- In SQL Server Configuration Manager, expand SQL Server Network Configuration, and then click on the server instance you want to configure.
- In the right pane, double-click TCP/IP.
- In the TCP/IP Properties dialog box, click the IP Addresses tab.
- In the TCP Port box of the IPAll section, type an available port number. For this tutorial, we will use 1500.
- Click OK to close the dialog box, and click OK to the warning that the service must be restarted.
- In the left pane, click SQL Server Services.
- In the right pane, right-click the instance of SQL Server, and then click Restart. When the Database Engine restarts, it will listen on port 1500.
更改後終於可以訪問了。
附:netstat命令詳細解釋
netstat的全部參數及說明如下:
顯示協議統計資訊和當前 TCP/IP 網路連接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 顯示所有串連和監聽連接埠。
-b 顯示包含於建立每個串連或監聽連接埠的
可動作項目。在某些情況下已知可動作項目
擁有多個獨立組件,並且在這些情況下
包含於建立串連或監聽連接埠的組件序列
被顯示。這種情況下,可動作項目名
在底部的 [] 中,頂部是其調用的組件,
等等,直到 TCP/IP 部分。注意此選項
可能需要很長時間,如果沒有足夠許可權
可能失敗。
-e 顯示乙太網路統計資訊。此選項可以與 -s
選項組合使用。
-n 以數字形式顯示地址和連接埠號碼。
-o 顯示與每個串連相關的所屬進程 ID。
-p proto 顯示 proto 指定的協議的串連;proto 可以是
下列協議之一: TCP、UDP、TCPv6 或 UDPv6。
如果與 -s 選項一起使用以顯示按協議統計資訊,proto 可以是下列協議
之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 顯示路由表。
-s 顯示按協議統計資訊。預設地,顯示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統計資訊;
-p 選項用於指定預設情況的子集。
-v 與 -b 選項一起使用時將顯示包含於
為所有可動作項目建立串連或監聽連接埠的
組件。
interval 重新顯示選定統計資訊,每次顯示之間
暫停時間間隔(以秒計)。按 CTRL+C 停止重新
顯示統計資訊。如果省略,netstat 顯示當前
配置資訊(只顯示一次)