SQL Server 使用数据库邮件时,如何在包含的数据库中向用户发送邮件?
我尝试使用msdb.dbo.sp_send_dbmail
,但由于所包含数据库的任何本地用户都看不到 msdb,因此msdb.dbo.sp_send_dbmail
也无法访问。然后我尝试创建证书和签名程序,首先直接进入msdb
然后通过master
数据库重新路由整个东西(我知道,这不是一个“非常好的主意”)但即使这样也行不通(我想它会破坏遏制,因此不允许)。
有没有办法做到这一点?
SQL Server 使用数据库邮件时,如何在包含的数据库中向用户发送邮件?
我尝试使用msdb.dbo.sp_send_dbmail
,但由于所包含数据库的任何本地用户都看不到 msdb,因此msdb.dbo.sp_send_dbmail
也无法访问。然后我尝试创建证书和签名程序,首先直接进入msdb
然后通过master
数据库重新路由整个东西(我知道,这不是一个“非常好的主意”)但即使这样也行不通(我想它会破坏遏制,因此不允许)。
有没有办法做到这一点?
以下解决方案涉及创建一个证书,以在模拟 msdb.dbo.sp_send_mail 的功能的包含数据库中签署新创建的存储过程。这在我的测试中取得了成功,希望它对你有用。
此时,您“应该”能够以“包含”数据库用户 ID(在上面的示例脚本中创建)连接并运行
确保您提供有效的电子邮件地址。大约一分钟后,我收到了测试邮件。
我尝试了一点来复制您的场景,最后我设法使用 SMTP 有效地向自己发送了一封电子邮件,但我必须创建一个 SQL CLR 存储过程,如下所示:
在我意识到我需要在 Visual Studio 上声明目标数据库的包含状态之前,发布这个项目我有很多悲伤:
之后就一切顺利了:
VS 2015 上 SQL CLR 的好指南
我们最近遇到了这个问题,并做了下面的工作。