我有一個使用SQL Server 2005數據庫的Web應用程序。SQL Server 2005/2008:標識當前用戶
我的問題是,該應用程序沒有角色管理。所以應用程序總是使用一個默認用戶訪問數據庫。但是現在我只能保存並訪問當前用戶的值。
有沒有辦法做到這一點?也許像Web服務器上的會話?如果有可能從T-SQL訪問Web服務器的當前會話ID,最好的方法是。
有人明白我的問題嗎? :)
我有一個使用SQL Server 2005數據庫的Web應用程序。SQL Server 2005/2008:標識當前用戶
我的問題是,該應用程序沒有角色管理。所以應用程序總是使用一個默認用戶訪問數據庫。但是現在我只能保存並訪問當前用戶的值。
有沒有辦法做到這一點?也許像Web服務器上的會話?如果有可能從T-SQL訪問Web服務器的當前會話ID,最好的方法是。
有人明白我的問題嗎? :)
允許插入到表
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;
如果您使用的是Windows集成身份驗證,而不是SQL帳戶:
SUSER_NAME()
函數來獲取底層的Windows用戶名(loginDomain\userName
格式。其實這不會工作,只是重新閱讀問題。使用@abatishchev的建議將基於會話的用戶傳遞給數據庫。 – devstuff 2010-04-09 07:14:03
嗨,那不是解決我的問題,因爲Web應用程序使用相同的登錄始終訪問數據庫。因此,如果三個用戶同時訪問應用程序,他們都使用相同的登錄名訪問數據庫。 – Torben 2010-04-09 07:08:40
嗨,謝謝。看起來像這是唯一的方法......但這太多了:) – Torben 2010-04-09 07:13:36
@Torben H. :尼斯,幫助:)不幸的是,這只是我可以建議 – abatishchev 2010-04-09 07:43:29