默认的 Microsoft SQL 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 Configuration Manager 会在指定协议和服务器后完成相应的管道名称
指定一个服务器。 对于命名实例,可以提供服务器名称和实例名称。
连接时,SQL Server Native Client 组件从注册表中读取指定别名的服务器、协议和管道名称值,并创建采用格式 np:\\<computer_name>\pipe\<pipename>
或 np:\\<IPAddress>\pipe\<pipename>
管道名称的管道名称。对于命名实例,默认管道名称为 \\<computer_name>\pipe\MSSQL$<instance_name>\sql\query
。
注释
默认情况下,Microsoft Windows 防火墙会关闭端口 445。 由于 MicrosoftSQL Server 通过端口 445 进行通信,因此如果 SQL Server 配置为使用命名管道侦听传入客户端连接,则必须重新打开端口。 有关配置防火墙的信息,请参阅 SQL Server 联机丛书中的“如何将防火墙配置为允许 SQL Server 访问”,或者查阅防火墙文档。
连接到本地服务器
当连接到与客户端在同一台计算机上运行的 SQL Server 时,可以使用 (local)
作为服务器名称。 不建议使用 (local)
,因为它会导致歧义;但是,当已知客户端在预期计算机上运行时,它很有用。 例如,为移动断开连接的用户(例如销售人员)创建应用程序时,SQL Server 将在笔记本电脑上运行并存储项目数据,连接到(本地)的客户端将始终连接到在笔记本电脑上运行的 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连接到数据库引擎”。