2010-07-28 25 views
3

我們正在開發一個新系統的服務層,該系統將處理與MSSQL(2005)數據庫的所有交互。我們對如何捕捉用戶在我們的某些舊版審計表中所需的所有「誰完成」信息有點困惑。雖然我們可以傳入正在修改數據並記錄調用的用戶名,但我們有一些傳統表,我們將使用這些表,它們具有觸發器來捕獲記錄插入,更新和刪除操作中的system_user。如果可能的話,我們還會在某些地方爭取一些行級別的安全性,我們也希望在不更改代碼的情況下利用它們。我讀過一些正在使用contextinfo來存儲用戶,但在這種情況下,這似乎有點不安全。在中間層使用實體框架時,我們應該如何捕獲數據庫用戶?

的選項,我最喜歡的是,使用在每個存儲過程調用的基礎上執行爲用戶

execute sp_myproc @foo as user = 'username' 

,我們正在運行到的問題是,實體框架內它不會出現成爲可能將execute命令添加到存儲過程調用中。

感謝任何輸入。

回答

0

「EXECUTE AS」不支持過程調用(它將在實際的proc定義中)。 Only remote or dynamic SQL.

選項:

  • 任何中間層必須通過最終用戶作爲參數。 我們爲我們的網絡服務和圖形用戶界面執行此操作,其中沒有與數據庫的直接連接

  • 啓用服務器委派,以便每臺服務器都可以通過最終用戶憑據。在asp.net中基本上是「模仿」。

  • Issue a separate command first

+0

您對proc調用完全正確。當我輸入我的樣本時,我錯過了我的文字引語。雖然國際海事組織將是一個很好的特點。 – 2010-08-16 16:52:37

0

道格,

我認爲在不同的系統上網絡中間層,以及您所需要的數據庫(即不相端市場)上的用戶信息。如果這不正確,請告訴我。

如果您使用Windows身份驗證,則需要設置委派。這將允許您模擬數據庫中的最終用戶。您是否使用Windows身份驗證?

Erick

相關問題