Sql-Server

更新所有通知的數據庫電子郵件配置文件

  • January 24, 2021

我正在為需要在 200 多個實例上執行的腳本中的數據庫電子郵件創建電子郵件配置文件。該腳本將創建一個數據庫電子郵件配置文件,以從代理作業發送警報。有沒有辦法遍歷實例上存在的所有作業並更改參數,以便它將使用我創建的新電子郵件配置文件而不是目前使用的電子郵件配置文件?(如果之後我可以清理所有未使用的電子郵件配置文件,則額外獎勵)

DECLARE @sb INT;
DECLARE @sc INT;
SET @sb =
(
   SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'
);
SET @sc =
(
   SELECT CONVERT(INT, value_in_use)
   FROM sys.configurations
   WHERE name = 'Database Mail XPs'
);
IF (@sb = 1 AND @sc = 1)
BEGIN
   PRINT 'Creating email profile';
   DECLARE @account_id INT;
   EXEC msdb.dbo.sysmail_add_account_sp @account_name = 'DatabaseServices - SQLMail Account',                      
                                        @display_name = N'XXX - Database Services',                       
                                        @replyto_address = N'noreply@blah.com',                             
                                        @description = N'SQL Server generated email from databases services team', 
                                        @mailserver_name = 'yyy.xxx.pvt',                                  
                                        @email_address = 'ITDatabaseServices@texasmutual.com',
                                        @port = 25,                                                                
                                        @account_id = @account_id OUTPUT;                                          
END

我認為您正在尋找的是msdb.dbo.sysjobsnotify_email_operator_id專門的欄位。如果您可以在創建後獲取配置文件的 ID,那麼您可能只需要sysjobs在單個UPDATE語句中更新表引用,在您執行腳本的每個實例上。

工作不涉及個人資料。工作是指操作員。

SQL Server 代理的配置是指“郵件配置文件”。在 GUI 中,您可以通過為代理執行“屬性,警報系統”來配置它。

即,不清楚您是要更改所有代理的郵件配置文件,還是要修改它是操作員。

如果要更改的是 Operator,請參閱 JD 答案作為起點。

如果是郵件配置文件,您所要做的就是執行一個 xp,如下例所示:

EXEC master.dbo.xp_instance_regwrite 
N'HKEY_LOCAL_MACHINE', 
N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', 
N'DatabaseMailProfile', N'REG_SZ',
N'SQL Server Mail Profile'

引用自:https://dba.stackexchange.com/questions/283837