Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как поймать запрос, который клиент отправил на sql сервер?  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 506
Добрый день!

Есть приложение потустороннее, исходников нет, клиент жмёт в нём кнопку, отправляется запрос, и на sql сервере выполняется некий сценарий, который подвешивает базу.

Каким способом можно поймать этот запрос с клиента? Других подключений к базе нету.

Можно ли это "увидеть" в SSMS, например?
26 авг 18, 16:16    [21654255]     Ответить | Цитировать Сообщить модератору
 Re: Как поймать запрос, который клиент отправил на sql сервер?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
palladin600
Добрый день!

Есть приложение потустороннее, исходников нет, клиент жмёт в нём кнопку, отправляется запрос, и на sql сервере выполняется некий сценарий, который подвешивает базу.

Каким способом можно поймать этот запрос с клиента? Других подключений к базе нету.

Можно ли это "увидеть" в SSMS, например?
Используя SQL Server Profiler
Можно, в частности, его "увидеть" в SSMS, в меню Tools. Или в "Пуск".
26 авг 18, 16:19    [21654256]     Ответить | Цитировать Сообщить модератору
 Re: Как поймать запрос, который клиент отправил на sql сервер?  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 506
alexeyvg, большое спасибо!
26 авг 18, 17:21    [21654276]     Ответить | Цитировать Сообщить модератору
 Re: Как поймать запрос, который клиент отправил на sql сервер?  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
palladin600,

Если для Вас профайлер - что-то загадочное, то можно запустить хранимую процедуру sp_who2 и посмотреть, какие активные сессии какими блокируются и сколько по времени выполняются.

А чтобы посмотреть sql-код запроса нужной сессии (см. столбец SPID в результатах sp_who2), используйте следующие любой из следующих методов:

--Метод 1
DBCC INPUTBUFFER(61)
GO

--Метод 2

DECLARE @sqltext VARBINARY(128)
SELECT @sqltext = sql_handle
FROM sys.sysprocesses
WHERE spid = 61
SELECT TEXT
FROM sys.dm_exec_sql_text(@sqltext)
GO

--Метод 3
DECLARE @sqltext VARBINARY(128)
SELECT @sqltext = sql_handle
FROM sys.sysprocesses
WHERE spid = 61
SELECT TEXT
FROM ::fn_get_sql(@sqltext)
GO
27 авг 18, 12:57    [21654879]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить