Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Bug: Падение Notification Alerts при любой несвязанной ошибке инициализации OLE DB  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Козьма Прутков
Щёлкни кобылу в нос — она махнет хвостом

Используется система нотификаций для логированных ошибок. SQL Server Agent -> Alerts
Соответственно логированные ошибки (RAISERROR WITH LOG;) приходят по почте операторам (админам и т.п.).

Так вот, если где либо, какой либо провайдер с внешним запуском упадёт из-за инициализации, то система алертов отваливается.
Только перезагрузка сервиса/сервера её восстанавливает.
Хотя другие механизмы - провайдеры, Email-ы и т.п. продолжают нормально фунчиклировать (хотя некоторые не сразу, всё зависит от).

-- Настраиваем или убеждаемся что для нашего пользователя нет прав для DCOM MSDAINITIALIZE
-- См. картинку
-- Обычно если Launch и Access права стоят 'Use Default', то прав нет (об это будет говорить ошибка вызванная скриптом ниже)
USE [msdb]
-- Конечно же должен быть настроен EMail account и profile
-- Management -> Database Mail -> Configure Database Mail -> ... (account) ... (profile)
-- Конечно в свойствах агента должно быть настроен Email profile
-- SQL Server Agent -> Property -> Alert System -> Mail session
GO
-- Настраиваем Алерт для 18 ошибки как отсылку письма оператору
EXEC msdb.dbo.sp_add_alert @name = N'Alert (Severity 18 Error)' -- Возможно уже существует данный алерт, тогда перенастройте его сами
	,@message_id = 0 -- Event Alert
	,@enabled = 1
	,@severity = 18 -- RAISERROR(,18,) WITH LOG;
	,@include_event_description_in = 1 -- Email
GO
EXEC msdb.dbo.sp_add_notification @alert_name = N'Alert (Severity 18 Error)'
	,@operator_name = N'Tester' -- Укажите настроенного оператора: SQL Server Agent -> Operators -> New Oprator ...
	,@notification_method = 1 -- Email
GO
USE [master]
GO
RAISERROR('Before',18,1)WITH LOG; -- Письмо придёт на EMail указанный в настройках оператора <Tester>
GO
-- Используем Active Directory Provider в качестве тестовой кошки
-- Настроим провайдер на внешний запуск, который будет запущен через DCOM MSDAINITIALIZE
EXEC master.dbo.sp_MSset_oledb_prop N'ADsDSOObject', N'AllowInProcess', 0
GO
-- Соответствующий провайдер не должен поднятся и должна возникнуть ошибка
SELECT Top(10) * FROM OPENROWSET('ADSDSOObject','adsdatasource';'Login';'PassWord','
SELECT displayName FROM	''LDAP://DC=my, DC=local, DC=domain'' WHERE objectCategory=''person''')
GO
RAISERROR('After',18,1)WITH LOG; -- Усё, до перезапуска сервиса/сервера никаких писем не будет
GO

Msg 50000, Level 18, State 1, Line 1
Before

Msg 17054, Level 16, State 1, Line 1
The OLE DB initialization service failed to load. Reinstall Microsoft Data Access Components. If the problem persists, contact product support for the OLEDB provider.

Msg 50000, Level 18, State 1, Line 1
After

Предположительно это от того что всё это добро работает через OLE DB, написанная в прошлом веке (пресловутый GetLastError) и в данном случае "абстракции текут" и ошибки перетекают другим процессам (даже иногда провайдер не подымается сразу, нужно изменить строку/параметры запроса и/или подождать).

Так вот, данный тест у кого либо воспроизводится?
И если есть инфа на KB/Connection или как лечить без перегрузки сервиса, то будьте любезны поделиться. Заранее благодарен.

К сообщению приложен файл. Размер - 15Kb
14 дек 12, 19:49    [13634560]     Ответить | Цитировать Сообщить модератору
 Re: Bug: Падение Notification Alerts при любой несвязанной ошибке инициализации OLE DB  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Microsoft SQL Server 2008 (SP3) - 10.0.5512.0 (X64) 
Aug 22 2012 19:25:47
Copyright (c) 1988-2008 Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2)
14 дек 12, 20:53    [13634822]     Ответить | Цитировать Сообщить модератору
 Re: Bug: Падение Notification Alerts при любой несвязанной ошибке инициализации OLE DB  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Notification Alert System crash after any unrelated error of OLE DB initialization

Проверяем, комментируем, плюсуем.
22 дек 12, 19:36    [13671352]     Ответить | Цитировать Сообщить модератору
 Re: Bug: Падение Notification Alerts при любой несвязанной ошибке инициализации OLE DB  [new]
tortoise
Member

Откуда: UK
Сообщений: 532
у нас та же беда
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

и тоже самое было на SQL2005

есть какие лекарства?
12 апр 13, 14:57    [14173305]     Ответить | Цитировать Сообщить модератору
 Re: Bug: Падение Notification Alerts при любой несвязанной ошибке инициализации OLE DB  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Нету.
Только агитировать на плюсы, может заметят. А то 2 голоса это критически мало.
Хотя, я заметил, MS тотально забили на сбой багтрекер. Не?

Кстати, тест у вас воспроизводится? Если да то и там плюс ставьте. Если нет обязательно отпишитесь здесь.
12 апр 13, 15:05    [14173407]     Ответить | Цитировать Сообщить модератору
 Re: Bug: Падение Notification Alerts при любой несвязанной ошибке инициализации OLE DB  [new]
tortoise
Member

Откуда: UK
Сообщений: 532
Mnior,
я не хочу экспериментировать с рабочими серверами - лишний рестарт нам никчему.
построю test environment и отпишусь
12 апр 13, 18:39    [14174838]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить