Получение свойств текущего соединения в SQL Server

в MS SQL Server диалоговое окно "Свойства базы данных" имеет ссылку "Просмотреть свойства подключения" слева. Щелчок, который выводит диалоговое окно "свойства соединения" со свойствами текущего соединения, такими как метод аутентификации, сетевой протокол, имя компьютера и т. д...

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

4 ответов


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

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

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


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

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

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


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

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


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

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

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

Демо DBFiddle