现在这个问题已经解决了,尽管其他人正在寻找相同问题的解决方案......
似乎在 SQL Server 2012 中发送电子邮件或与电子邮件相关的所有内容都围绕 [msdb].[dbo].[sp_send_dbmail] (以前版本的 SQL Server 也有 xp_sendmail)。
因此,您可以编辑 [msdb].[dbo].[sp_send_dbmail],就在 BEGIN 语句之后,插入以下内容:
SET @recipients = 'YOURDEVEMAIL@ADDRESSHERE.com'
SET @copy_recipients = NULL
SET @blind_copy_recipients = NULL
SET @subject = '(STAGING EMAIL) ' + ISNULL(@subject, '')
然后,您将劫持通过 SQL 发送的电子邮件的任何收件人,并将电子邮件发送到您提供的地址,这意味着不会向客户发送任何信息,等等。
不过,您还需要考虑 CLR 和 xp_cmdshell。
对于不熟悉这些的人来说,CLR 是用其他编程语言编写的编译程序集,可以从 SQL 调用和执行,xp_cmdshell 从 SQL 中运行命令 shell。
通过在资源管理器窗格中打开有问题的数据库,可以在 SSMS 中找到 CLR,转到 Programmability > Assemblies,并且任何现有的程序集都在那里,但是这些已经编译,这只是让您查看是否存在。您需要在其他地方找到这些源代码,与开发它们的人交谈,他们应该将其保存在某个地方(希望如此)。
xp_cmdshell 可以执行您可以在 Windows 命令 shell 中执行的任何操作,因此它可能会调用其他程序或批处理文件,这些程序或批处理文件可能会启动电子邮件。您需要自己搜索调用 xp_cmdshell 的任何内容,RedGate SQL Search 可以很好地帮助您解决这个问题。