服务器批量修改,批量修改所有服务器的dbmail配置

DECLARE @EmailAccount sysname;

DECLARE @SmtpServer sysname;

DECLARE @EmailAddress NVARCHAR(120);

DECLARE @EmailSuffix NVARCHAR(32);

DECLARE @NewEamilAddress NVARCHAR(120);

--DECLARE @ActualEmailSuffix NVARCHAR(32)='xxxx.com';  SQL Server 2005不支持此功能,会报Cannot assign a default value to a local variable.

DECLARE @ActualEmailSuffix NVARCHAR(32);

DECLARE @ActualSmtpServer sysname;

SET @ActualEmailSuffix='xxx.com';

SET @ActualSmtpServer='192.168.xxx.xxx';

DECLARE EmailAccount_Cursor CURSOR FAST_FORWARD

FOR

SELECT sa.[name]

,ss.[servername]

,sa.email_address

FROM [msdb].[dbo].[sysmail_server] ss

INNER JOIN [msdb].[dbo].[sysmail_account] sa

ON ss.[account_id]=sa.[account_id];

OPEN EmailAccount_Cursor;

FETCH NEXT FROM EmailAccount_Cursor INTO @EmailAccount, @SmtpServer,@EmailAddress;

WHILE @@FETCH_STATUS = 0

BEGIN

IF LTRIM(RTRIM(@SmtpServer))!=@ActualSmtpServer

BEGIN

EXECUTE msdb.dbo.sysmail_update_account_sp

@account_name = @EmailAccount

,@mailserver_name=@ActualSmtpServer;

PRINT @SmtpServer;

PRINT @EmailAccount;

END;

SET @EmailSuffix=SUBSTRING(@EmailAddress,CHARINDEX('@',@EmailAddress)+1, LEN(@EmailAddress) -CHARINDEX('@',@EmailAddress))

IF @EmailSuffix!=@ActualEmailSuffix

BEGIN

SET @NewEamilAddress= REPLACE(@EmailAddress,@EmailSuffix,@ActualEmailSuffix);

EXECUTE msdb.dbo.sysmail_update_account_sp

@account_name = @EmailAccount

,@email_address=@NewEamilAddress

,@mailserver_name=@SmtpServer;

PRINT @EmailAccount;

PRINT @NewEamilAddress;

END;

FETCH NEXT FROM EmailAccount_Cursor INTO @EmailAccount, @SmtpServer,@EmailAddress;

END

CLOSE EmailAccount_Cursor;

DEALLOCATE EmailAccount_Cursor;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值