2010-04-30 74 views
0

我需要爲支持Sql Server 2008的系統支持廣泛的審計功能。由於我打算使用LINQ(沒有存儲過程),數據庫將是一個乾淨的零聯繫人數據庫。將擴展參數傳遞到Sql 2008連接字符串

不過,我需要pratically記錄下每一個發生這種情況在數據庫變更的快照。所以,我認爲我應該使用觸發器。但是,我需要特定用戶的用戶標識(而不是連接字符串用戶標識)流入數據庫。

在oracle中,我應該可以設置一個代理用戶,並且觸發器可以選擇它。最後我檢查了一下,Sql Server中沒有代理用戶的概念。

有誰知道是否有任何extender屬性可用於流經我的身份驗證用戶名?

PS:我不介意連接池的影響(如果有的話)。

謝謝。 P

回答

2

我還沒有嘗試過,但從parameters in a connection string,這兩個(可能更多)可以在T-SQL中檢索:APP_NAME()HOST_NAME()

+0

我想HOST_NAME(),但我還以爲是什麼東西少「哈克」。我將使用host_name()。謝謝,@devio。 P. – 2010-05-07 17:36:19

0

我通過將@@SPID與當前用戶ID相關聯來解決此問題。

您需要一個結構爲SPID int,UserID int和具有相同參數的SP的表。如果存在,SP將刪除具有SPID的記錄,並插入新的一對。

在觸發器中,您可以通過使用@@ SPID查詢此表來檢索用戶ID。

的SP需要每當打開一個連接到被調用。 (你沒有提到你想如何訪問數據庫)