我在我的C#應用程序中使用強類型數據集,我希望能夠記錄用戶對行進行的任何更改。做這個的最好方式是什麼?日誌記錄數據庫行更改
0
A
回答
0
是否希望能夠訪問C#應用程序中的更改?或者這僅僅是爲了記錄/審計目的?您的強類型數據集是映射到SQL Server表的XSD數據集嗎?
觸發SQL服務器
在一個大的訂貨系統,我幫世邦魏理仕開發上,我們創造了額外的表來保存版本的數據。假設你有一張請求表。創建一個Request_changes表。然後,您爲INSERT和UPDATE觸發器是這樣的:
CREATE TRIGGER [dbo].[tr_Request_update]
ON [dbo].[Request]
FOR UPDATE
AS
SET NOCOUNT ON
INSERT INTO dbo.Request_changes
(
--ID, // taken care of by IDENTITY(1,1)
--LogDate, // uses default value of GetDate()
ChangeAction,
SQLServerUser,
RequestID,
UserIDContact,
etc
)
SELECT
'UPDATE',
system_user,
-- Request fields
RequestID,
UserIDContact,
etc
FROM
inserted
SET NOCOUNT OFF
GO
create TRIGGER [dbo].[tr_Request_insert]
ON [dbo].[Request]
FOR INSERT
AS
SET NOCOUNT ON
INSERT INTO dbo.Request_changes
(
--ID, // taken care of by IDENTITY(1,1)
--LogDate, // uses default value of GetDate()
ChangeAction,
SQLServerUser,
RequestID,
UserIDContact,
Title,
etc
)
SELECT
'INSERT',
system_user,
-- Request fields
RequestID,
UserIDContact,
etc
FROM
inserted
SET NOCOUNT OFF
GO
您不必訪問_changes表(除非其映射到另一個XSD數據集),但它是偉大的記錄和審計和跟蹤降低錯誤和歷史。
其他選項
也許你有沒有被持久性存儲支持,如SQL服務器的XSD數據集,你僅僅使用在內存中的數據集。有很多其他設計模式和衆所周知的構造可以在屬性值發生變化時通知您。
另外,如果您使用的是XSD數據集,是因爲您正在使用現有的代碼庫還是遺留應用程序?如果你正在做新的發展,我會擺脫它們。這是MS不再積極發展的一種老技術。如果你想留在當前版本的Visual Studio附帶的MS堆棧中,你最好的選擇是Linq to Sql或Entity Framework,這兩者應該更容易處理,並且更靈活(例如,我不喜歡認爲XSD數據集非常好地處理空值,並且它們不支持生成的類中的.NET可空類型)。
相關問題
- 1. 數據庫日誌記錄
- 2. 數據庫日誌記錄在日誌記錄過程
- 3. 對SQL數據庫所做的日誌記錄更改
- 4. OpenERP日誌記錄到數據庫
- 5. 數據庫日誌記錄什麼?
- 6. 從文件日誌記錄移動到數據庫日誌記錄
- 7. 服務器日誌記錄 - 在數據庫或日誌文件?
- 8. 將日誌更改爲數據庫
- 9. 動態更改日誌記錄級別
- 10. 更改日誌記錄級別服務
- 11. Scrapy日誌記錄級別更改
- 12. 在Mule中更改日誌記錄
- 13. 更改Spring RestTemplate日誌記錄
- 14. MAPI Outlook歷史記錄/更改日誌
- 15. 在WPF數據綁定日誌記錄值更改爲物業
- 16. JavaScript日誌記錄庫(日誌級別)
- 17. 沒有日誌庫的日誌記錄
- 18. 數據庫記錄的事務日誌(批量更新)
- 19. 在gcloud中將日誌記錄更改爲彈性分段日誌記錄
- 20. Nlog數據庫日誌記錄不插入行
- 21. nlog使用connectionStringName進行數據庫日誌記錄
- 22. 使用AWS進行應用程序日誌記錄數據庫
- 23. 使用Fluent界面進行數據庫日誌記錄
- 24. 企業庫日誌記錄
- 25. MySQL - 事務日誌記錄 - binlog?一般查詢日誌?登錄到數據庫?
- 26. 更改某些記錄器的日誌記錄級別
- 27. 用ASP.NET消防並忘記數據庫日誌記錄
- 28. 企業庫日誌記錄寫日誌參數
- 29. 在測試執行期間更改日誌記錄級別
- 30. Java日誌記錄:它是日誌還是日誌記錄器?
這是一個遺留系統,正在進行用戶審計改造。它目前具有基於RowChanged事件的日誌記錄,但它有問題,並且不總是記錄。我正在尋找更好的解決方案,以適應所有更改(訪問可能不是必需的),只要我可以在應用程序中查看它就可以了。系統擁有自己的用戶帳戶,但使用系統用戶帳戶應該沒問題。你喜歡多解釋一下自己還是把我和某些東西聯繫起來? – Malfist 2010-07-01 20:45:05
觸發器可能在你的情況下工作得很好。這個應用程序是否支持SQL Server?您甚至可以創建XSD數據集來映射單個[tableName] _changes表,因此您可以輕鬆地將更改的數據拖到您的應用程序,審計頁面或任何其他位置。 – 2010-07-01 21:02:55