2013-01-04 59 views
1

我想知道當用戶從我的ASP.NET應用程序插入或更新一些數據時,記錄的最佳做法是什麼。如何在SQL Server中記錄插入,更新?

在我的應用程序需要知道哪些用戶進行了更改,我想我必須選擇:

  • 註冊我的ASP.NET用戶到SQL服務器將他們的表的權利需要,併爲我的每個用戶存儲 單個連接字符串。因此,我可以在連接到數據庫時使用當前登錄的用戶連接字符串,以便I 可以爲SELECT和UPDATE編寫T-SQL觸發器。

  • 我想到了另一種選擇是,我可以寫拿到ASP.NET用戶名作爲輸入參數的存儲過程,使 日誌對我來說,(我只用一個ConnectionString的應用程序)。 從應用程序修改數據庫後,我會調用這個 過程給出當前登錄用戶的用戶名。

第二個選擇似乎更簡單的給我,但我認爲對於這一目的,我應該選擇第一個選項。

+0

第二個選擇是簡單的。進一步創建具有權限的用戶數據庫。意味着他可以改變或不改變。您可以使用數據庫的ID字段,而不是使用名稱。您也可以使用觸發器來記錄用戶對數據庫所做的更改。這裏是一個很好的文章觸發http://www.codeproject.com/Articles/25600/Triggers-Sql-Server –

回答

1

轉到第二個選項。管理數據庫中的用戶會給您帶來更多麻煩,如果您必須移動數據庫服務器,會發生什麼情況?您需要更新所有用戶的所有連接字符串。它只是創建額外的管理開銷。此外,如果您需要記錄數據庫中的所有更改,那麼我已經提出了一些過去用於存儲隨着時間的推移對數據庫所做的所有更改的內容。看看,它可能是有用的。

http://richhooper.wordpress.com/2012/06/11/sql-server-row-level-versioning/

+0

感謝您的答覆。是的,我認爲你的第一個選擇遇到更多麻煩是對的,未來我可能會考慮行版本。 – jannagy02

+0

但僅僅提到第二選擇的缺點,它會複製數據庫連接,因爲在每次插入或更新之後,我都必須調用存儲過程來進行日誌記錄。 – jannagy02

+0

那麼你可以確保你打開並保持與數據庫的連接,並將它用於兩個sql語句(插入/更新和存儲過程)。除了.net框架將嘗試通過連接池來減少這種情況。 http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx – Penfold

相關問題