Назад | Перейти на главную страницу

как быстро проверить протокол связи, используемый SQL Server

Я использую 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);

замена (SPID) фактическим SPID вашего клиентского процесса. Посмотрите на net_transport столбец, который расскажет вам, какой протокол этот процесс использует для связи с SQL Server. Если все, что вас интересует, это протокол, просто используйте SELECT net_transport вместо того SELECT *.

Вы также можете отфильтровать свой запрос по другим столбцам, таким как client_net_address, который для TCP-соединений будет IP-адресом вашего клиентского компьютера. Вы можете отправить этот запрос через интерфейсы ADO.NET. SQL SMO тоже может что-то иметь.

Вот Справочная страница MSDN для sys.dm_exec_connections. Обратите внимание, что вам потребуются права ПРОСМОТРА СОСТОЯНИЯ СЕРВЕРА на сервере, чтобы видеть не только текущий сеанс.

Вы также можете указать транспортный протокол в server директивы вашей строки подключения, используя следующий синтаксис:

server=[protocol]:servername

Примеры:

server=tcp:mysqlinstance1 (for TCP/IP)
server=np:mysqlinstance1 (for named pipes)
server=np:\\mysqlinstance1\pipe\pipename (for a specific pipe)

В качестве примечания: TCP / IP или именованные каналы являются протоколом транспортного уровня, а поток табличных данных - протоколом связи (прикладного уровня) в SQL Server.

http://en.wikipedia.org/wiki/Tabular_Data_Stream