configuración de secuencias de comandos de base de datos de correo
-
29-09-2019 - |
Pregunta
He utilizado la interfaz gráfica de usuario de SQL Server 2008 para configurar los perfiles y cuentas de correo electrónico de base de datos en mi servidor de prueba, y me gusta ahora que coincide con la que nuestra base de datos de producción.
¿Hay una manera de generar un script para hacer esto?
Solución
Que yo sepa, no hay una manera de escritura necesariamente esto desde SSMS, pero se puede crear un script transportables en TSQL una vez y volver a utilizarlo en todos los servidores. Aquí es un buen ejemplo para que pueda empezar con esto:
USE [master]
GO
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'Database Mail XPs',1
GO
RECONFIGURE
GO
-- Create a New Mail Profile for Notifications
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DBA_Notifications',
@description = 'Profile for sending Automated DBA Notifications'
GO
-- Set the New Profile as the Default
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DBA_Notifications',
@principal_name = 'public',
@is_default = 1 ;
GO
-- Create an Account for the Notifications
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'SQLMonitor',
@description = 'Account for Automated DBA Notifications',
@email_address = 'email@domain.com', -- Change This
@display_name = 'SQL Monitor',
@mailserver_name = 'smtp.domain.com' -- Change This
GO
-- Add the Account to the Profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DBA_Notifications',
@account_name = 'SQLMonitor',
@sequence_number = 1
GO
La otra opción sería la de SMO apalancamiento, ya sea a través de NET o PowerShell para generar los scripts. La referencia SMO para esto sería:
ACTUALIZACIÓN:
Aquí es lo fácil que resultó ser a la escritura esto con PowerShell y SMO:
[void][reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");
#Set the server to script from
$ServerName = "ServerName";
#Get a server object which corresponds to the default instance
$srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server $ServerName
#Script Database Mail configuration from the server
$srv.Mail.Script();