在我的存储过程中,我使用sp_send_email发送电子邮件.我的存储过程将在不同的环境中运行; 有些人会启用电子邮件,有些则不会.
如果我在没有启用它的情况下运行sp_send_email,我(非常正确地)会收到此错误消息
SQL Server阻止访问组件"Database Mail XPs"的过程"dbo.sp_send_dbmail",因为此组件已作为此服务器的安全配置的一部分关闭.
我想检查是否先启用了电子邮件,因此我可以通过执行以下操作来避免错误:
IF @is_enabled
BEGIN
EXEC sp_send_email ...
END
Run Code Online (Sandbox Code Playgroud)
如何正确设置@is_enabled?
您可以查询sys.configurations
IF EXISTS (SELECT *
FROM sys.configurations
WHERE name = 'Database Mail XPs' AND value_in_use = 1)
PRINT 'enabled'
ELSE
PRINT 'no luck'
Run Code Online (Sandbox Code Playgroud)
缺点是由于"元数据可见性",非系统管理员用户可能看不到它