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

Откуда:
Сообщений: 100
Есть сервер БД - 2005.
Вижу один запрос который выполняется с частотой раз в 7-8 минут. У него постоянный SPID. Надо отловить кто вызывает
Запрос такой.

declare @p1 int
set @p1=6
exec sp_prepexec @p1 output......
exec sp_unprepare 6


параметры постоянно одинаковые (за сегодня начал анализ)
единственное, икрементируется @p1 на 1 с каждым запросом

select * from sys.dm_exec_sessions

возвращает

host_name - сервер БД (хотя есть веб-сайт с которого идут почти все запросы к базе)
program_name - Microsoft Sql Server (для сайта указан провайдер .Net SqlClient Data Provider, для Менеджмент студии Microsoft SQL Server Management Studio)
client_interface_name - OLEDB (опять же для сайта указан .Net SqlClient Data Provider)

Подскажите, может кто сталкивался, что может быть? Или хотя бы найти процесс который запускает.

Запущенных джобов на сервере БД нет, да и по истории запусков нет джобов запускавшихся в эти интервалы времени.
3 фев 14, 16:38    [15511503]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
Glory
Member

Откуда:
Сообщений: 104751
host_process_id - Process ID of the client program that initiated the session.
3 фев 14, 16:40    [15511521]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
rinat mergenbaev
select * from sys.dm_exec_sessions


возвращает

host_name - сервер БД (хотя есть веб-сайт с которого идут почти все запросы к базе)
program_name - Microsoft Sql Server (для сайта указан провайдер .Net SqlClient Data Provider, для Менеджмент студии Microsoft SQL Server Management Studio)
client_interface_name - OLEDB (опять же для сайта указан .Net SqlClient Data Provider)
Для начали и посмотрите для нужного SPID, какая программа, процесс, кромпьютер.
3 фев 14, 16:59    [15511673]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
Glory
host_process_id - Process ID of the client program that initiated the session.


Выяснил, что запросы идут от линкед сервера.
Я так понял, что это ProcessID сервера БД. Если так, то под этим айди запущен процесс services.exe

получается линкед сервер работает под services.exe?
и еще вопрос, джоб должен запускаться раз в сутки, а он делает sp_prepexec каждые 7-8 минут. ончто-то готовит для себя или кеширует?
3 фев 14, 17:32    [15511927]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
Glory
Member

Откуда:
Сообщений: 104751
rinat mergenbaev
Выяснил, что запросы идут от линкед сервера.

Это как ?
Линкед сервер - это способ обращения к _внешним_ источникам данных. А не для приема запросов.
3 фев 14, 17:37    [15511954]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
Glory
rinat mergenbaev
Выяснил, что запросы идут от линкед сервера.

Это как ?
Линкед сервер - это способ обращения к _внешним_ источникам данных. А не для приема запросов.


имел ввиду, что запросы идут от другого сервера БД и обращение идет через линкед сервер
3 фев 14, 17:38    [15511965]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
Glory
Member

Откуда:
Сообщений: 104751
rinat mergenbaev
имел ввиду, что запросы идут от другого сервера БД и обращение идет через линкед сервер

Тогда это обыкновенное клиентское соединение. Просто в качестве клиента выступает другой сервер
3 фев 14, 17:42    [15511991]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
rinat mergenbaev
и еще вопрос, джоб должен запускаться раз в сутки, а он делает sp_prepexec каждые 7-8 минут. ончто-то готовит для себя или кеширует?
Нет, сам сервер ничего не запускает, просто отлаживайте своё клиентское приложение (в данном случае, как я понимаю, это джоб на другом сервере).
3 фев 14, 18:22    [15512225]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
Не видел джоб который запускался с удаленного сервера. Возможно там действительно что-то не так.

Мне интересно другое.
Насколько я понял по поводу host_process_id - это pid процесса на физическом сервере где работает СУБД.
Так вот он показывал на процесс services.exe запущенный от SYSTEM. Насколько я понял даже по расположению это системный процесс. Что это может быть?
4 фев 14, 09:20    [15514092]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
invm
Member

Откуда: Москва
Сообщений: 9844
rinat mergenbaev
Насколько я понял по поводу host_process_id - это pid процесса на физическом сервере где работает СУБД.
Это pid процесса на клиентской машине, установившего данное соединение.
4 фев 14, 09:54    [15514229]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать кто вызывает процедуру?  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
invm
rinat mergenbaev
Насколько я понял по поводу host_process_id - это pid процесса на физическом сервере где работает СУБД.
Это pid процесса на клиентской машине, установившего данное соединение.


invm, понял.

Всем спасибо!
4 фев 14, 09:57    [15514247]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить