.

Сразу после загрузки среды SQLPS я подключаюсь к серверу, создавая новый объект SMO Server, ссылающийся на новый экземпляр сервера.

$inst = 'WS12SQL'
$svr = new-object ('Microsoft.SqlServer.Management.Smo.Server') $inst
Если компонент Database Mail не включен, я включаю его (он входит в набор расширенных возможностей, поэтому для настройки работы с почтой его необходимо включить).
# Enable Database Mail
$svr.Configuration.ShowAdvancedOptions.ConfigValue = 1
$svr.Configuration.DatabaseMailEnabled.ConfigValue = 1
$svr.Configuration.Alter()

Затем ссылку на объект Mail нашего сервера запомним в переменной, которую позднее используем в двух местах.

$mail = $svr.Mail

Для настройки Database Mail вначале необходимо задать объект типа MailAccount. Этому объекту в качестве параметров необходимы ссылка на упомянутый выше объект Mail и имя учетной записи. Новый объект я присваиваю переменной с именем $acct, а затем задаю свойствам учетной записи требуемые значения. После этого я вызываю метод Create() для создания учетной записи.

$acct = new-object ('Microsoft.SqlServer.Management.Smo.Mail.MailAccount') ($mail, 'sqldba')
$acct.Description = 'Database Administrator Email'
$acct.DisplayName = 'Database Administrator'
$acct.EmailAddress = 'sqldba@example.com'
$acct.ReplyToAddress = 'sqldba@example.com'
$acct.Create()

Объект типа MailAccount содержит набор с именем MailServers, но он не позволяет создать новый объект типа MailServer. При этом в процессе генерации объекта MailAccount создается объект MailServer, свойства которого имеют значения по умолчанию. Для переопределения свойств объекта MailServer я устанавливаю переменную на первый элемент набора MailServers (используя значение индекса, равное 0) и затем вызываю метод Rename() объекта MailServer для задания имени SMTP-сервера, который мне необходим. Далее я устанавливаю значение свойства EnableSsl равным False, а свойство UserName равным пустой строке, что приводит к использованию анонимного подключения в сеансе работы по протоколу SMTP. После задания этих свойств я вызываю метод Alter() для объектов MailServer и MailAccount, чтобы сохранить сделанные изменения.

$mlsrv = $acct.MailServers
$mls = $mlsrv.Item(0)
$mls.Rename('smtpsrv.example.com')
$mls.EnableSsl = 'False'
$mls.UserName = ''
$mls.Alter()
$acct.Alter()

И последнее, что мне надо сделать, это настроить почтовый профиль, для чего я буду использовать объект MailProfile. Для этого необходимы ссылка на объект Mail моего сервера, имя профиля и его описание. Для создания профиля я вызываю метод Create(), а затем — метод AddAccount() для добавления к профилю ранее созданной учетной записи. Методу AddAccount() в качестве параметров необходимы имя учетной записи и порядковый номер (sequence number) учетной записи. После выполнения этих действий я вызываю метод Alter() для внесения изменений в профиль.

$mlp = new-object ('Microsoft.SqlServer.Management.Smo.Mail.MailProfile') ($mail, 'DBAMail', 'Database Administrator Mail Profile')
$mlp.Create()
$mlp.AddAccount('sqldba', 1)
$mlp.Alter()

С помощью данного сценария я очень быстро настраиваю компонент Database Mail на сервере и теперь могу использовать профиль с именем DBAMail в агенте SQL Server Agent для отправки почтовых сообщений в случае, если что-то не работает.

Поделитесь материалом с коллегами и друзьями

Купить номер с этой статьей в PDF