Azure-Sql-Database

當表格發生變化時,有沒有辦法獲取事件?

  • April 2, 2016

使用 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 儲存容器。

引用自:https://dba.stackexchange.com/questions/77199