[英]Calling Powershell script from SQL Server trigger
是否可以從SQL Server觸發器使用Powershell“ Send-MailMessage -SMTPServer”命令?
我試圖在數據庫中的行更新或創建新行時發送電子郵件。 由於安全限制,我無法使用數據庫郵件。 但是,我可以通過powershell的Send-MailMessage命令發送電子郵件。
首先,這幾乎肯定是一個非常糟糕的主意 。 請記住,就事務升級而言,觸發器可能導致意外的問題,並且在處理過程中持有鎖定的時間比必要的時間長。 還請記住,人們可能不會期望在您的表上有此類觸發器,他們會像在普通表上一樣嘗試對它執行CRUD操作,並且不了解他們的應用程序為何超時。
也就是說,您至少可以通過三種方式執行此操作:
xp_cmdshell
,並使用它將其外殼到PowerShell,如此處所述: 通過SQL運行Powershell腳本 -但不要這樣做,因為xp_cmdshell
有安全隱患,並且很可能以一種或另一種方式給您帶來問題(是因為有人以有害的方式使用它,還是因為PowerShell只是失敗而您甚至都不知道為什么)。 如果由於安全限制而無法使用數據庫郵件,則絕對不應該使用xp_cmdshell,它具有更多的安全問題! sp_db_sendmail
但不要這樣做,因為這很容易失敗或導致更新問題(例如SMTP服務器關閉並且表無法再更新)。 (在寫這篇文章之前,由於安全限制,我看不到它不能使用。 ) SmptClient
發送郵件。 可以將其加載到實例中,並作為常規SQL函數公開,可以從觸發器中調用它。 與僅啟用xp_cmdshell
,這樣做可以更安全地進行,但是,如果您無法配置數據庫郵件,則可能違反了同一策略。 除了這些選項,我建議使用類似以下的方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.