3

我有一個使用SQL Server 2005數據庫的Web應用程序。SQL Server 2005/2008:標識當前用戶

我的問題是,該應用程序沒有角色管理。所以應用程序總是使用一個默認用戶訪問數據庫。但是現在我只能保存並訪問當前用戶的值。

有沒有辦法做到這一點?也許像Web服務器上的會話?如果有可能從T-SQL訪問Web服務器的當前會話ID,最好的方法是。

有人明白我的問題嗎? :)

回答

5

允許插入到表

DECLARE @sys_usr char(30); 
SET @sys_usr = SYSTEM_USER; 
SELECT 'The current user is: '+ @sys_usr; 
GO 

MSDN

在我看來當前登錄系統提供的價值,最好不要這樣做。另一種方法:從網絡服務器發送到存儲過程的當前用戶:

command.CommandText = "EXEC mySP @user"; 
command.Parameters.Add("@user").Value = ((YourOwnUserClass)Session["user"]).Name; 

// or System.Web.HttpContext.Current.User.Identity.Name; to use built-in 
// from web page it becomes this.User.Identity.Name; 
+0

嗨,那不是解決我的問題,因爲Web應用程序使用相同的登錄始終訪問數據庫。因此,如果三個用戶同時訪問應用程序,他們都使用相同的登錄名訪問數據庫。 – Torben 2010-04-09 07:08:40

+0

嗨,謝謝。看起來像這是唯一的方法......但這太多了:) – Torben 2010-04-09 07:13:36

+0

@Torben H. :尼斯,幫助:)不幸的是,這只是我可以建議 – abatishchev 2010-04-09 07:43:29

-1

如果您使用的是Windows集成身份驗證,而不是SQL帳戶:

  1. 給架構對象權限到Windows ,不一個用戶。然後將所有應用程序用戶添加到該組中。
  2. 使用內置SUSER_NAME()函數來獲取底層的Windows用戶名(loginDomain\userName格式。
+1

其實這不會工作,只是重新閱讀問題。使用@abatishchev的建議將基於會話的用戶傳遞給數據庫。 – devstuff 2010-04-09 07:14:03