Получение текущих свойств соединения в SQL Server - PullRequest
7 голосов
/ 09 июня 2009

В MS SQL Server диалоговое окно «Свойства базы данных» имеет ссылку «Просмотр свойств подключения» слева. Нажатие, которое открывает диалоговое окно «Свойства соединения» со свойствами текущего соединения, такими как метод аутентификации, сетевой протокол, имя компьютера и т. Д. *

Есть ли способ получить эту информацию программно, выполнив SQL-запрос? Как будет выглядеть этот запрос?

Ответы [ 4 ]

18 голосов
/ 09 июня 2009

SQL 2005 и после допроса sys.dm_exec_connections. Чтобы получить текущие свойства соединения, вы должны выполнить:

select * from sys.dm_exec_connections
where session_id = @@SPID

Значения полей зависят от протокола, используемого для подключения (совместно используемая память, именованные каналы или tcp), но все содержат информацию об используемом методе аутентификации, протоколе и сетевом адресе клиента.

4 голосов
/ 09 июня 2009

Да, вы можете, но это зависит от того, какое свойство вы используете, поскольку свойства, отображаемые в пользовательском интерфейсе свойств соединения, происходят из нескольких мест.

Он использует несколько запросов (например, xp_msver и select suser_sname()) для получения некоторых свойств, но также использует хранимую процедуру xp_instance_regread для получения некоторых значений из реестра сервера.

Практически все, что делается, - это управление студией, когда взаимодействие с движком SQL может быть выполнено с использованием SQL. Запуск сеанса профилировщика и выполнение действий в пользовательском интерфейсе раскроет, какой (иногда неясный / недокументированный / неподдерживаемый) SQL выполняется.

0 голосов
/ 12 августа 2018

С точки зрения клиентского инструмента вы можете использовать CONNECTIONPROPERTY :

Для запроса, поступающего на сервер, эта функция возвращает информацию о свойствах соединения уникального соединения, которое поддерживает этот запрос.

 SELECT ConnectionProperty('net_transport') AS [Net transport],   
        ConnectionProperty('protocol_type') AS [Protocol type];  

Демоверсия DBFiddle

0 голосов
/ 09 июня 2009

Я думаю, что ответ «нет». Информация о компьютере хранится на компьютере. Информация о соединении, скорее всего, хранится в файле конфигурации или в MS SQL Server.

Но взгляните на системные таблицы MSSQL и посмотрите, какими свойствами они обладают.

...