Azure-Sql-Database
當表格發生變化時,有沒有辦法獲取事件?
使用 Azure Sql Server,如果相關的話,在 C# 中,有沒有辦法在特定表中的數據發生變化時獲取事件?
在一個表中,如果一行中的任何列發生變化,我們需要一個事件。
在第二張表中,我們僅在兩列中的任何一列發生更改時才需要一個事件(儘管任何更改都可以)。
我們需要知道哪一行。
是否有可能做到這一點?如果是這樣,怎麼做?
**更新:**我們需要為此事件呼叫 C# 程式碼。數據庫可以做某事的數據庫觸發器沒有幫助,我們的程序需要對更改採取行動。
謝謝 - 戴夫
Windows Azure SQL 數據庫 (WASD) 確實部分支持觸發器,因此您可以滾動自己的審核。見這裡。這是一個非常簡單的例子:
CREATE TABLE dbo.Users ( userId INT IDENTITY PRIMARY KEY, userName VARCHAR(30) NOT NULL UNIQUE, dateAdded DATETIME NOT NULL DEFAULT GETDATE(), addedBy VARCHAR(30) NOT NULL DEFAULT 'admin', dateModified DATETIME NULL, modifiedBy VARCHAR(30) NULL, ) GO INSERT INTO dbo.Users ( userName ) VALUES ( 'wBob' ), ( 'David' ) GO CREATE TRIGGER dbo.utrg_Users ON dbo.Users FOR UPDATE AS BEGIN -- INSERT INTO ... other table SELECT 'old record' source, * FROM deleted END GO UPDATE dbo.Users SET userName = 'wDavid' WHERE userName = 'David'
WASD 最近還預覽了包含 DML 審計的審計功能。它僅適用於 Basic、Standard 和 Premium 版本,並註銷儲存在 Azure 儲存帳戶(不是傳統的關係表)上的審核日誌,因此您也可以查看它。看起來是一個有趣的功能,包括一個用於快速分析日誌的 Excel 模板。從這裡開始。
應用服務中的 WebJob 或函式可以綁定到包含審核日誌的 Blob 儲存容器。