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

Откуда:
Сообщений: 4887
Добрый день. По BOL создал на боевом сервере - Alert с @wmi_query=N'SELECT * FROM DEADLOCK_GRAPH', далее джоб с обработкой дидлоков. Алерт привязал к джобу. Генерю тестовые дидлоки. -> Alert срабатывает, Job вызывается - все чудесно.
Но. не проходит команда
INSERT INTO DeadlockEvents , DeadlockGraph)
VALUES (getdate(), N'$(ESCAPE_SQUOTE(WMI(TextData)))')

Вываливается с ошибкой, которую смотрю в джоб-хистори:
Message
Unable to start execution of step 1 (reason: Variable WMI(TextData) not found). The step failed.

Причем, если изменить вставку N'$(ESCAPE_SQUOTE(WMI(TextData)))' на какую нибудь N'<t>Fignja</t>' - джоб чудесно отрабатывает, событие дидлока возникает и логируется в таблицу.

Хочется все таки граф дидлока в таблицу ложить а не Fignja ))))).

Куда копать подскажите?

PS:
SQL: 2012 Enterprise
Windows 2008R2 Enterprise SP1

msdb, db_где_таблица_DeadlockEvents - ServiceBroker ENABLED.
13 май 15, 13:30    [17633839]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
Glory
Member

Откуда:
Сообщений: 104760
zasandator
INSERT INTO DeadlockEvents , DeadlockGraph)

Это вы при копировании ошиблись или команда действительно так выглядит ?
13 май 15, 13:54    [17634105]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
zasandator
Member [скрыт] [заблокирован]

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

Это опечатка здесь на в топике. Синтаксис правильный команды

INSERT INTO (DeadlockEvents , DeadlockGraph)
VALUES (getdate(), N'$(ESCAPE_SQUOTE(WMI(TextData)))')
13 май 15, 14:01    [17634165]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
Glory
Member

Откуда:
Сообщений: 104760
SQL Agent > Alerts > check replace tokens ??
13 май 15, 14:02    [17634179]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
zasandator
Member [скрыт] [заблокирован]

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

уже если в джобе поменять например на

INSERT INTO (DeadlockEvents , DeadlockGraph)
VALUES (getdate(), N'(ESCAPE_SQUOTE(WMI(TextData)))')

убираем доллар - джоб проходит в табличке есть данные новые. т.е. сам алерт работает норм... ну текст ошибки я написал уже выше... ошибка в том что не может распознать переменную - WMI(TextData)
13 май 15, 14:03    [17634181]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
zasandator
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 4887
Glory
SQL Agent > Alerts > check replace tokens ??

Не делал. а чейта? куда тыкать? )
13 май 15, 14:03    [17634192]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
Glory
Member

Откуда:
Сообщений: 104760
zasandator
Glory
SQL Agent > Alerts > check replace tokens ??

Не делал. а чейта? куда тыкать? )

В SQL Agent, потом в Alerts
13 май 15, 14:05    [17634212]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
zasandator
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 4887
Glory
SQL Agent > Alerts > check replace tokens ??

Нашел точно! Все заработало )))
Спасибо мудрый глори ))))
13 май 15, 14:08    [17634237]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Вопрос по настройке мониторинга взаимоблокировок через WMI  [new]
emphasizer
Member

Откуда:
Сообщений: 21
Подскажите, пжлст. пытаюсь сделать селект при возникновении алерта на блокировку, но он почему-то не отрабатыват, хотя, если вводить его в базе, то селект прекрасно показывает результаты. А письмо приходит пустое только с уведомлением, что есть блокировака.
Вот селект:

SELECT L.request_session_id AS SPID,
DB_NAME(L.resource_database_id) AS DatabaseName,
O.Name AS LockedObjectName,
P.object_id AS LockedObjectId,
L.resource_type AS LockedResource,
L.request_mode AS LockType,
ST.text AS SqlStatementText,
ES.login_name AS LoginName,
ES.host_name AS HostName,
TST.is_user_transaction as IsUserTransaction,
AT.name as TransactionName,
CN.auth_scheme as AuthenticationMethod

FROM sys.dm_tran_locks L
JOIN sys.partitions P ON P.hobt_id = L.resource_associated_entity_id
JOIN sys.objects O ON O.object_id = P.object_id
JOIN sys.dm_exec_sessions ES ON ES.session_id = L.request_session_id
JOIN sys.dm_tran_session_transactions TST ON ES.session_id = TST.session_id
JOIN sys.dm_tran_active_transactions AT ON TST.transaction_id = AT.transaction_id
JOIN sys.dm_exec_connections CN ON CN.session_id = ES.session_id
CROSS APPLY sys.dm_exec_sql_text(CN.most_recent_sql_handle) AS ST
WHERE resource_database_id = db_id()
ORDER BY L.request_session_id

Пробовал его добавлять и поле Query (но оно чет сохраняет только половину селекта) и отдельно создавть джобу, но - по нулям. Письма приходят пустые.

Испольуется MSSQL Studio 2014.
22 июл 16, 21:28    [19443882]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить