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?

¿Fue útil?

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:

SqlMail Clase

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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top