使用具名管道建立有效的連接字串
除非經使用者變更,否則當預設的 MicrosoftSQL Server 執行個體接聽具名管道通訊協定時,會使用 \\.\pipe\sql\query 做為管道名稱。其中句點表示該電腦為本機電腦,pipe 表示連接是具名管道,而 sql\query 則是管道的名稱。若要連接到預設管道,別名必須用 \\<computer_name>\pipe\sql\query 做為管道名稱。若將 SQL Server 設定為接聽其他管道,則管道名稱必須使用該管道。例如,若 SQL Server 是使用 \\.\pipe\unit\app 當作管道,則別名必須使用 \\<computer_name>\pipe\unit\app 做為管道名稱。
若要建立有效的管道名稱,您必須:
指定別名名稱。
選取 [具名管道] 做為 [通訊協定]。
輸入 [管道名稱]。或者,您可以將 [管道名稱] 留白,在您指定 [通訊協定] 與 [伺服器] 之後,SQL Server 組態管理員便會完成適當的管道名稱。
指定 [伺服器]。對於具名執行個體,您可以提供伺服器名稱與執行個體名稱。
在連接時,SQL Server Native Client 元件會從登錄中讀取指定之別名名稱的伺服器、通訊協定與管道名稱值,並以 np:\\<computer_name>\pipe\<pipename> 或 np:\\<IPAddress>\pipe\<pipename> 格式建立管道名稱。具名執行個體的預設管道名稱是 \\<computer_name>\pipe\MSSQL$<instance_name>\sql\query。
[!附註]
Microsoft Windows XP Service Pack 2 會啟用 Windows 防火牆,而它預設會關閉通訊埠 445。由於 MicrosoftSQL Server 是透過通訊埠 445 來進行通訊,因此如果 SQL Server 設定為使用具名管道來接聽內送的用戶端連接,您就必須重新開啟該通訊埠。如需有關設定防火牆的資訊,請參閱《SQL Server 線上叢書》中的<如何:設定防火牆供 SQL Server 存取>,或請檢閱您的防火牆文件集。
連接到本機伺服器
連接到與用戶端在同一部電腦上執行的 SQL Server 時,可以使用 (local) 做為伺服器名稱。但不建議您使用 (local),因為這會造成混淆,但是若確實知道用戶端正在預期的電腦上執行,這就很有用。例如,為行動式、非連接的使用者 (例如銷售人員) 建立應用程式 (亦即 SQL Server 將會在膝上型電腦上執行並儲存專案資料) 時,連接到 (local) 的用戶端一律會連接到在膝上型電腦上執行的 SQL Server。可以使用 localhost 或句點 (.) 來取代 (local)。
驗證您的連接通訊協定
下列查詢會傳回目前連接所使用的通訊協定。
SELECT net_transport
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
範例
使用伺服器名稱連接到預設管道:
Alias Name <serveralias>
Pipe Name <blank>
Protocol Named Pipes
Server <servername>
使用 IP 位址連接到預設管道:
Alias Name <serveralias>
Pipe Name <leave blank>
Protocol Named Pipes
Server <IPAddress>
使用伺服器名稱連接到非預設管道:
Alias Name <serveralias>
Pipe Name \\<servername>\pipe\unit\app
Protocol Named Pipes
Server <servername>
使用伺服器名稱連接到具名執行個體:
Alias Name <serveralias>
Pipe Name \\<servername>\pipe\MSSQL$<instancename>\SQL\query
Protocol Named Pipes
Server <servername>
使用 localhost 連接到本機電腦:
Alias Name <serveralias>
Pipe Name <blank>
Protocol Named Pipes
Server localhost
使用句點連接到本機電腦:
Alias Name <serveralias>
Pipe Name <left blank>
Protocol Named Pipes
Server .
[!附註]
若要指定網路通訊協定做為 sqlcmd 參數,請參閱《SQL Server 線上叢書》中的<如何:使用 sqlcmd.exe 連接到 Database Engine>。