2016-10-18 93 views
0

Windows用戶在SQL Server 2008 R2的觸發器我需要知道誰插入,更新或刪除記錄的用戶。獲得從連接字符串

由於不同的用戶使用相同的連接字符串我不知道誰是真正登錄到服務器登錄(我用相同的UID SQL身份驗證和我承認通過Access數據庫的訪問!)。

我想如果可能的話,以一個變量添加到連接字符串,如Application Name=myrealusername但似乎從Access VBA我不能添加此參數。

有誰知道如何檢索真實用戶名已登錄將用戶名傳遞給觸發器?

+2

如果你需要真實的用戶名,使用Windows身份驗證。 –

+0

如果你所有的sql連接都是用同一個用戶創建的,那麼sql就沒有辦法知道。如果您切換到Windows身份驗證,您可以告訴,但以目前的方式您的應用程序工作,你卡住了。 –

回答

1

你可以嘗試錄製HOST_NAME()捕捉查詢從運行的情境。如果每個用戶都擁有自己的PC,如果您不打算使用Windows身份驗證,則可能是您的最佳猜測之一。

更多細節:HOST_NAME() MSDN Documentation

顯然只有真正解決是使用Windows身份驗證。

+0

謝謝,連同一個解碼HOST_NAME表的用戶,我得到了我需要的信息! – mak

0

您可以使用Windows身份驗證並嘗試使用

select suser_name() 
+0

不,我所有嘗試使用CURRENT_User,suser_Name()等都會帶來不是「真正」用戶的登錄用戶。 – mak