2014-03-24 49 views
1

我正在使用SQL Server 2012.除了sp_send_dbmail外,其他任何人都可以發送電子郵件嗎?

我打算在登臺服務器上啓用電子郵件,以確保在上線之前按計劃執行所有操作。我想要發送的所有電子郵件都發到我自己的電子郵件地址,而不是發送給真實客戶端,所以我已對[sp_send_dbmail]中的to,cc和bcc字段進行了硬編碼,以便它只能發送給我,不管參數的傳遞。

http://technet.microsoft.com/en-us/library/ms189635.aspx在TechNet頁面只提到sp_send_dbmail,我知道xp_sendmail的不再可用,所以我只是想確保沒有任何東西可以啓用這個服務器上的電子郵件之前,通過電子郵件發送給客戶。

因此,在我啓用電子郵件之前,有沒有人知道任何其他SP或XP可以發送我可能沒有考慮過的電子郵件?

感謝

+0

出於興趣,你認爲「一切按計劃執行」是什麼意思? –

+0

我的意思是說,由於這是一個登臺服務器,而且我們目前正在進行重組,所以我們希望它的行爲儘可能接近生產,但是採用這種新結構。要驗證所有內容(包括電子郵件),我希望能夠發送電子郵件而不會發生錯誤,但只能發送給內部組,而不是真正的客戶。這應該讓我們看看哪些電子郵件正在發送以及何時發送。有些人不會使用SSMS,即使他們這樣做,也不知道如何使用它,所以我想向他們展示到底發生了什麼。做到這一點的最佳方式是向他們發送電子郵件。 –

回答

0

所以這是兩個選擇,我能想到的:在自己的存儲過程

1)裹sp_send_dbmail,並檢查它是否是一個測試服務器,然後更換TO,CC和BCC與一個測試賬戶。

2.)您可能不應該在您的測試服務器上擁有實時數據,因此只需使用測試電子郵件帳戶設置您的測試數據。

+0

謝謝,但我沒有檢查,看看是否sp_send_dbmail工程,我試圖抓住其他任何可能發送電子郵件了,我已經改變了sp_send_dbmail,以便它不能發送電子郵件給我以外的任何人。對於第(2)點,我沒有在登臺服務器上進行測試數據的選擇,這是針對涉及數據庫結構和應用程序代碼的大量更改,組成測試數據涉及太多,並且需要根據當前生產系統進行檢查,以確保在對兩者應用相同更改時,所有內容都會相應地進行鏡像。 –

1

這現在解決了,爲別人尋找一個解決方案,但同樣的問題...

看來,發送電子郵件,或參與與SQL Server 2012中的郵件一切圍繞[MSDB。 [dbo]。[sp_send_dbmail](先前版本的SQL Server也有xp_sendmail)。

所以,你可以編輯[MSDB] [DBO] [sp_send_dbmail]中,只是在BEGIN語句中,插入以下內容:。

SET @recipients = '[email protected]' 
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。

CLR可以在SSMS中找到,方法是在資源管理器窗格中打開數據庫,進入Programmability> Assemblies,並且任何現有的程序集都在那裏,但是這些程序集已經被編譯,只是讓你看看是否存在。你需要在其他地方找到這些源代碼,告訴誰開發他們,他們應該保存在某處(希望)。

xp_cmdshell可以執行任何你可以在Windows命令shell中執行的任何東西,所以它可能會調用其他程序或可能啓動電子郵件的批處理文件。你需要自己搜索任何調用xp_cmdshell的東西,RedGate SQL Search可以很好的幫助你。

相關問題