解决方法
AFAIK,没有办法从SSMS中脚本化,但您可以在Tsql中创建一个可传输脚本,并将其重用于所有服务器.这是一个很好的例子,让你开始这样做:
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
另一个选择是利用SMO,通过.NET或者PowerShell来生成脚本. SMO的参考文献是:
更新:
以下是Powershell和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();