Настройка Database Mail В Ms Sql Server 2005 И Старше

Все описанное в этом посте будет актуально для Microsoft SQL Server 2005 и более старых версий (2008, 2008 R2, Denali).

Также для целей данного поста под словосочетанием «SQL Server» будет подразумеваться только Microsoft SQL Server, исключая MySQL, PostgreSQL, FireBird и другие СУБД, которые теоретически можно называть SQL Server.



Что это за штука, Database Mail?

Database Mail был представлен в SQL Server 2005, заменив компонент SQLMail. Database Mail (как и ранее SQLMail) используется для отправки сообщений электронной почты самим SQL Server (точнее, его компонентом Database Engine).

Принципиальное отличие Database Mail от SQLMail заключается в том, что последний для отправки сообщений использовал сторонний клиент (Microsoft Outlook), который нужно было установить на машину с SQL Server, а сам Database Mail общается с почтовым сервером через протокол SMTP.

Для чего это?

На самом деле каждый решает сам, нужно ему это или нет. Примеры использования включают следующее: каждое утро менеджер хочет получать на электронную почту результаты вчерашнего дня: сколько и какой продукции было продано, какой клиент сделал самый большой запрос, какие клиенты имеют задолженность и т. д. Другими словами, результаты любого запроса можно отправить с помощью Почтовая база данных; администратор базы данных желает получать по электронной почте информацию о том, какие задачи (работы) или планы обслуживания завершились с ошибкой (или, наоборот, завершились успешно); администратор базы данных хочет получать по электронной почте информацию об ошибках определенного уровня серьезности или определенного количества, произошедших на сервере; администратор базы данных хочет получить на электронную почту информацию о том, что размер базы близок к размеру жесткого диска и пора трясти начальство по поводу покупки нового оборудования; Администратор базы данных хочет получить что-то еще по электронной почте.

Таким образом, Database Mail, на мой взгляд, будет наиболее полезен именно администраторам баз данных SQL Server, а учитывая, что сотовые операторы предоставляют услугу email-to-sms (честно говоря, я не силен в ОПСОС, возможно, это редкость).

, но у меня такое есть и абсолютно бесплатно), также может стать очень быстрым средством информирования.



Что нам нужно?

Итак, в первую очередь нам нужен SQL Server версии 2005 или старше.

У меня SQL Server 2008 R2, но в этом случае разницы в настройках не будет. Database Mail, по данным Microsoft, доступна во всех редакциях, кроме Express Edition ( доказательство ), однако здесь Здесь Там подробно описано, как можно включить этот компонент. Второе, без чего Database Mail не будет работать, — это почтовый сервер, доступный с машины с SQL Server, и учетная запись на нем, с которой будут отправляться письма.

В моем примере роль такого сервера будет выполнять mail.ru. И третий — членство в роли системного администратора для вашей учетной записи SQL Server, поскольку только члены этой роли могут выполнять настройку.



Идти

Прежде всего, давайте подключимся к нашему SQL-серверу с помощью SQL Server Management Studio. Естественно, все шаги настройки можно выполнить с помощью предопределенных хранимых процедур, но я не стремлюсь сделать для запросов все возможное, особенно если для этого есть удобные мастера.

Разверните ветку «Управление», выберите пункт «Почта базы данных», щелкните по нему правой кнопкой мыши и выберите «Настроить почту базы данных».

Экран приветствия мастера можно сразу отметить галочкой «Больше никогда не показывать мне эту хрень», так как никакой полезной информации на нем нет. И вот, мы уже стоим перед выбором.

Теперь мы можем: настроить Database Mail, изменить профили и учетные записи Database Mail, изменить безопасность профиля и, наконец, изменить конфигурацию системы.

Поскольку мы раньше не использовали Database Mail, нам пока менять нечего, выбираем первый пункт «Настроить Database Mail» и жмем «Далее».



Настройка Database Mail в MS SQL Server 2005 и старше

И вот первый сюрприз.

SQL Server услужливо сообщает, что на самом деле такая возможность, как Database Mail, отключена и уточняет, хотим ли мы ее включить? Поскольку мы сюда пришли именно за этим, отвечаем «Да» и попадаем на следующий экран.



Настройка Database Mail в MS SQL Server 2005 и старше

Создадим новый профиль с названием My First DBMail Profile - он будет использоваться для отправки почты о незавершенных задачах (jobs) и добавим в него одну учетную запись (Account) - для чего нажимаем кнопку "Добавить" (справа от текущий пустой список записей учетных записей).



Настройка Database Mail в MS SQL Server 2005 и старше

Прежде чем писать пост, я зарегистрировал почту [email protected] просто для проведения экспериментов.

Естественно, вам нужно будет заполнить все эти поля по своему вкусу.

Например, наш внутренний почтовый сервер не требует авторизации для отправки писем и соответственно вы можете выбрать опцию «Анонимная аутентификация».

Отображаемое имя на этом экране — это то, что появится в поле «От» полученного письма, а имя учетной записи — это внутреннее имя учетной записи на SQL Server. Обратите внимание, что на данном этапе нет возможности проверить соединение с сервером и нет возможности отправить тестовое письмо - т.е.

если при заполнении допущена ошибка, ее поиск может занять некоторое время.

Будь осторожен.

Итак, у нас есть профиль и в него добавлен аккаунт. Нажмите «Далее» и посмотрите, что будет дальше.



Настройка Database Mail в MS SQL Server 2005 и старше

Глядя на этот экран, а особенно на вкладку «Частные профили», не должно возникнуть вопроса, на который я раньше не обращал внимания – зачем мне возможность создавать несколько профилей?

Настройка Database Mail в MS SQL Server 2005 и старше

Каждому пользователю msdb, включенному в роль DatabaseMailUserRole, можно назначить собственный профиль.

Или даже несколько.

Для этого необходимо поставить галочку «Доступ».

Профиль по умолчанию — если установлено значение «Да», при использовании хранимой процедуры sp_send_dbmail имя профиля по умолчанию можно опустить; туда будет подставлено имя профиля с пометкой Default для этого пользователя.

Однако я вернусь на вкладку «Публичные профили» и выставлю знаки «По умолчанию = «Да» и «Публикация = «Да» для вновь созданного профиля.

Теперь этот профиль могут использовать все пользователи msdb, включенные в роль DatabaseMailUserRole (и пользователи роли сервера sysadmin).

После нажатия «Далее» мы попадаем на предпоследний экран мастера настройки.



Настройка Database Mail в MS SQL Server 2005 и старше

Здесь мы можем настроить:
Account Retry Attempts — количество попыток отправить письмо с использованием определенной учетной записи (помните, что мы можем добавить в профиль несколько учетных записей? Здесь сначала SQL Server попытается отправить письмо от имени учетной записи с приоритетом 1 столько раз, сколько как укажем, а потом, если письмо все равно не уйдет, будет сортировать аккаунты с более низким приоритетом) Задержка повторной попытки учетной записи (секунды) — сколько именно секунд SQL Server будет ждать, прежде чем попытаться отправить письмо еще раз.

Максимальный размер файла (в байтах).

SQL Server может добавлять файлы вложений в электронное письмо.

?Этот параметр может ограничить размер такого вложения.

Запрещенные расширения файлов вложений — запрещенные разрешения для вложений, чтобы пользователь не мог создавать и отправлять, например, файл .

vbs. Минимальное время жизни исполняемого файла Database Mail (секунды) — Database Mail представляет собой отдельный файл DatabaseMail(90-110).

exe — этот параметр определяет, по истечении какого периода времени SQL Server завершит запущенный процесс, если нет активности.

Уровень ведения журнала — этот параметр определяет, какой объем информации будет записываться в журнал при работе Database Mail. На последнем экране мы увидим, какие учетные записи и профили будут созданы, а также каким пользователям будет предоставлена возможность использовать созданный профиль.

Смело нажимайте «Готово».



Настройка Database Mail в MS SQL Server 2005 и старше

SQL Server быстро завершит настройку и покажет, какие элементы и по какой причине не удалось завершить (если что-то не удалось).

Убедившись, что все в порядке, закрываем окно.

Давайте проверим правильность настроек Database Mail. Снова зайдите в «Управление», щелкните правой кнопкой мыши «Почта базы данных» и выберите «Отправить тестовое письмо».



Настройка Database Mail в MS SQL Server 2005 и старше

Как мы видим, вновь созданный профиль уже выбран в качестве профиля, поля «Тема» и «Текст сообщения» заполняются автоматически.

Естественно, все это можно изменить, но значения по умолчанию меня устраивают. Остается только указать адрес, на который пойдет письмо, не мудрствуя лукаво - я пишу тот же адрес, с которого SQL Server отправит письмо (простите мою лень - зачем создавать два почтовых ящика, когда одного более чем достаточно? К счастью , SQL Server абсолютно не заботится о входящих письмах, он не умеет их читать).

И я нажимаю кнопку «Отправить тестовое письмо».

.

через 15 секунд во входящих:

Настройка Database Mail в MS SQL Server 2005 и старше

Бинго! Письмо пришло.

По сути, можно считать задачу выполненной.

Но здесь я сделаю небольшое отступление для бедняг, которые безуспешно проверят почту и так и не увидят нужное им письмо.

Сначала просмотрите журнал Database Mail. В SSMS перейдите в раздел «Управление», щелкните правой кнопкой мыши «Почта базы данных» и выберите «Журнал почты базы данных».

Возможно, вы просто неправильно указали параметры подключения к серверу – это, как ни странно, довольно распространенная ошибка.

Второе, что нужно проверить, — включен ли Service Broker в базе данных msdb. Это то, что используется для отправки сообщений.

Создайте новый запрос и запустите его:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'

Если возвращаемое значение не равно единице, Service Broker отключен.

Вы можете включить его следующим образом:

ALTER DATABASE msdb SET ENABLE_BROKER

Если Service Broker включен, все настройки выполнены правильно — кто знает — проверьте свою электронную почту еще раз.

Нет письма? Нажмите кнопку «Устранение неполадок», которая находится в окне, которое появляется после нажатия кнопки «Отправить тестовое письмо», и посмотрите типичные ошибки в справке Microsoft. Предположим, что теперь у нас настроена Database Mail и пришло тестовое письмо.



И что дальше?

И тогда начинается веселье.

Теперь мы наконец можем использовать Database Mail для получения уведомлений от SQL Server о том, что с ним что-то не так (или, наоборот, что с ним все в порядке).

SQL Server может отправить уведомление о том, что задание выполнено успешно (или наоборот — выполнено с ошибкой).

Точнее, это может сделать агент SQL Server, который собственно и выполняет поставленные задачи.

Для того чтобы это сделать, ему необходимо сделать следующее.

Прежде всего создайте оператор.

То есть человек, получающий уведомления.

Для этого открываем агент SQL Server, выбираем «Операторы» и нажимаем «Новый оператор».



Настройка Database Mail в MS SQL Server 2005 и старше

В появившемся окне заполняем имя (у меня это Администратор БД) и адрес электронной почты, на который будут приходить уведомления (указываю тот же многострадальный ящик на mail.ru).

Нажмите «ОК» и оператор будет создан за долю секунды.

Теперь у нас есть настроенный профиль Database Mail, оператор получения уведомлений, осталось только настроить SQL Server Agent. Для этого щелкните по нему правой кнопкой мыши (Агент SQL Server), выберите «Свойства» и перейдите на вкладку «Система оповещений».

Здесь ставим галочку «Включить почтовый профиль»

Настройка Database Mail в MS SQL Server 2005 и старше

Сразу после этого элементы Почтовая система и Почтовый профиль становятся активными.

В Mail System мы можем выбрать Database Mail или, как злые некрофилы, SQL Mail (но его нужно настраивать отдельно), в Mail Profile мы можем выбрать, какой профиль Database Mail будет использоваться агентом SQL Server для отправки сообщений.

Это может быть общедоступный профиль или частный, но в этом случае пользователь Windows, под которым работает агент SQL Server, должен иметь логин, созданный в SQL Server, а также пользователь в msdb, входящий в роль DatabaseMailUserRole. .

Не желая заморачиваться с профилями, соглашаюсь на выбор публичного профиля и нажимаю «ОК».

Все.

Теперь вам необходимо перезапустить агент SQL Server. Это можно сделать из SSMS или из диспетчера конфигурации SQL Server. Выбирайте сами – откуда вам удобнее.

После перезагрузки проверим, что все настроено правильно и сообщения действительно поступают. Для этого я делаю задание, которое пытается создать резервную копию одной из баз данных, используя путь, который явно не существует. Захожу в свойства созданной задачи, перехожу на вкладку «Уведомления», ставлю галочку «Электронная почта» и выбираю вновь созданного оператора с именем «Администратор базы данных».

Третий столбец оставляю без изменений — там написано «При сбое задания», т.е.

я буду получать уведомления только в случае провала задания.

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



Настройка Database Mail в MS SQL Server 2005 и старше

Настройки сделаны, запускаем задачу:

Настройка Database Mail в MS SQL Server 2005 и старше

Отлично, путь, конечно, не найден, бэкап не сделан.

Я проверяю свой почтовый ящик:

Настройка Database Mail в MS SQL Server 2005 и старше

Письмо доставлено.

В нем вы можете увидеть: Когда и какая задача выполнялась (ЗАДАНИЕ: «Резервное копирование с ошибками» было выполнено 19.11.2011 в 19:35:12) Как долго выполнялась задача до обнаружения ошибки (ДЛИТЕЛЬНОСТЬ: 0 часов, 0 минут, 1 секунда) Результат выполнения (СТАТУС: Не выполнено) - хотя на самом деле, если бы задание было успешно выполнено, письмо бы не пришло.

Сообщение из журнала событий этого задания (СООБЩЕНИЯ: задание не выполнено.

Задание было вызвано пользователем KATE-HOME\rancid. Последним выполняемым шагом был шаг 1 (тест).

), включая имя пользователя, выполнившего задание.

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



Счастливый конец

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

Если кому интересно, могу написать о других способах использования Database Mail. В частности: внутри планов обслуживания, для создания оповещений (Alerts), а также о хранимой процедуре sp_send_dbmail, используемой для отправки электронных писем с помощью Database Mail.

P.S.

Появился на хабе еще один пост , посвященный настройке Database Mail. Там говорится, как настроить Database Mail с помощью сценариев.

Теги: #sql-сервер #почта базы данных #новичок #администрирование #Microsoft SQL Server

Вместе с данным постом часто просматривают: