Информация о пользователях и подключениях

Информация о пользователях и подключенияхЯ хотел бы с вами обсудить на сколько много информации о подключениях может дать нам SQL Server. Сегодня ко мне подошёл Windows Администратор с интересным вопросом, которым сам бы я никогда не озадачился. Чтобы вам было понятней, требуется сказать несколько слов в какой среде работает обсуждаемый инстанс — он работает на двухузловом Кластере с несколькими сетевыми интерфейсами (старый и новый ip). Вопрос звучал следующим образом: «Работает ли кто-то в данный момент со старым инрерфейсом». Никогда не думал о подобной задаче и решил обратиться к привычным нам «таблицам» и представлениям: sys.dm_exec_connections, master.sys.sysprocesses, sys.dm_exec_sessions

К моему удивлению, всю необходимую информацию я в них нашёл. Оказалось, что добрая половина пользователей не перешла на новую инфраструктуру, тогда как старую уже было пора отключать.

Для получение необходимой информации, я воспользовался следующим запросом:

select dc.session_id as [SPID],
dc.client_net_address as [IP клиента],
sp.hostname as [Имя PC клиента],
dc.local_net_address as [IP подключения к серверу],
dc.net_transport as [Протокол подключения],
dc.local_tcp_port as [Порт],
sp.[program_name] as [Имя программы],
sp.loginame
FROM sys.dm_exec_connections dc
inner join master.sys.sysprocesses sp
on dc.session_id=sp.spid
where sp.spid > 50

Данный запрос помог мне понять откуда (IP клиента) и по какому IP (IP подключения к серверу) пользователи работают с сервером.

Мы можем воспользоваться данными «таблицами» для получения не активных пользователей (более суток):

-- Не активные пользователи более суток
select dc.session_id as [SPID],
dc.client_net_address as [IP клиента],
sp.hostname as [Имя PC клиента],
sp.loginame,
sp.last_batch as [Дата последенего запроса],
dc.last_read as [Дата последенего чтения],
dc.last_write as [Дата последенего записи],
sp.[program_name] as [Имя программы],
DB_NAME(dt.dbid) as [Имя БД],
dt.text
FROM sys.dm_exec_connections dc
inner join master.sys.sysprocesses sp
CROSS APPLY sys.dm_exec_sql_text(sp.sql_handle) dt
on dc.session_id=sp.spid
where last_batch < GETDATE() - 1
and sp.spid > 50

Надеюсь данная информация будет вам полезной. Обсудить тему можно в комментариях или вконтакте.

Не забывайте смотреть рубрику «Грядущие события и мероприятия»

Запись опубликована в рубрике Полезно и интересно с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: