sql - 用于检查是否在 SQL Server 中启用了邮件配置文件的脚本
问题描述
是否有人有脚本(TSQL 或 PowerShell)来检查SQL Server 上是否启用了邮件配置文件?
我注意到我们没有从一堆生产服务器接收邮件,因为邮件配置文件未启用。
我需要一个脚本来运行我们所有的产品框,以检查是否启用了此功能。我做了一些研究,但没有找到脚本。非常感谢。
解决方案
我在dba.stackexchange.com上问了一个类似的问题。
在那个帮助下,我创建了我在 GitHub 上的这个脚本,我设置了一个工作,以便在它发生变化时提醒我。
这是您似乎关心的部分:
/*
Confirm the Database Mail account and profile is configured correctly
*/
DECLARE @DatabaseMail VARCHAR(255);
SELECT
ProfileName = smp.name
,AccountName = sma.name
,AccountFromAddress = sma.email_address
,AccountReplyTo = sma.replyto_address
,SMTPServer = sms.servername
,SMTPPort = sms.port
FROM msdb.dbo.sysmail_account sma
INNER JOIN msdb.dbo.sysmail_profileaccount smpa ON sma.account_id = smpa.account_id
INNER JOIN msdb.dbo.sysmail_profile smp ON smpa.profile_id = smp.profile_id
INNER JOIN msdb.dbo.sysmail_server sms ON sma.account_id = sms.account_id;
/*
Confirm SQL Server Agent is configured to use Database Mail correctly
*/
DECLARE @res TABLE
(
Value VARCHAR(255)
, Data VARCHAR(255)
);
INSERT INTO @res
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail';
INSERT INTO @res
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'DatabaseMailProfile';
IF (
SELECT COUNT(*)
FROM @res r
WHERE r.Value = 'UseDatabaseMail' AND r.Data = 1
) = 1 AND
(
SELECT COUNT(*)
FROM @res r
WHERE r.Value = 'DatabaseMailProfile' AND r.Data IS NOT NULL
) = 1
SET @DatabaseMail = 'Configured'
ELSE
SET @DatabaseMail = 'Not Configured';
select @DatabaseMail
或者,关于配置文件是什么的有限结果,如果您在代理级别启用了它:
DECLARE @res TABLE
(
Value VARCHAR(255)
, Data VARCHAR(255)
);
INSERT INTO @res
EXEC master.dbo.xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE'
, @key = N'Software\Microsoft\MSSQLServer\SQLServerAgent'
, @value_name = N'DatabaseMailProfile';
INSERT INTO @res
EXEC sys.xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE'
, @key = N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent'
, @value_name = N'UseDatabaseMail'
SELECT *
FROM @res;
推荐阅读
- r - 将具有数据框名称的数据框绑定为附加的 id 列
- sql - 从 JSON_TABLE 读取 JSON_VALUE 时出现 ORA-31013
- virtual - 如何在 Oculus Go 上预览 Unreal Engine 4 项目
- python - Tensorflow 安装问题:ImportError: DLL load failed with error code -1073741795
- r - R中有序分类数据的因子分析的因子得分
- c# - 什么是 Identity Server 4 引发事件
- keras - Keras:处理大型图像数据集
- regex - 正则表达式强制组顺序
- google-bigquery - 无法在 appengine 中使用 bigquery:“ImportError:没有名为 google.cloud.bigquery 的模块”
- r - 为什么 abline 不会显示 glm 与 Gamma 家族的线?