Geo*_*ge2 1 .net sql-server sql-server-2008
我使用的是 VSTS 2008 + C# + ADO.Net + SQL Server 2008。当从另一台远程机器连接时,ADO.Net 客户端通常使用 TCP/IP 协议连接到 SQL Server 2008。本地连接时(ADO.Net 客户端)和 SQL Server 在同一台机器上),通常使用共享内存或命名管道。
我的问题是,除了一般规则之外,如何准确检查(例如,从某些 SQL Server 内置命令/工具/存储过程?)特定连接使用什么通信协议?
提前致谢,乔治
如果您有相关进程的 SPID(通过使用 Activity Monitor 或sp_who或 之类的东西sp_who2),那么您可以在服务器上执行此查询:
SELECT *
FROM sys.dm_exec_connections
WHERE session_id = (SPID);
Run Code Online (Sandbox Code Playgroud)
用客户端进程的实际 SPID 替换 (SPID)。查看该net_transport列,它会告诉您该进程使用哪种协议与 SQL Server 进行通信。如果您只对协议感兴趣,只需使用SELECT net_transport代替SELECT *。
您还可以通过其他列过滤您的查询,例如 client_net_address,对于 TCP 连接,它将是您的客户端机器的 IP 地址。您可以通过 ADO.NET 接口发送此查询。SQL SMO 也可能有一些东西。
这是sys.dm_exec_connections的MSDN 参考页面。请注意,您将需要服务器上的 VIEW SERVER STATE 权限才能查看更多内容,而不仅仅是当前会话。
您还可以server使用以下语法在连接字符串的指令中指定传输协议:
server=[protocol]:servername
Run Code Online (Sandbox Code Playgroud)
例子:
server=tcp:mysqlinstance1 (for TCP/IP)
server=np:mysqlinstance1 (for named pipes)
server=np:\\mysqlinstance1\pipe\pipename (for a specific pipe)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10924 次 |
| 最近记录: |