SQL Server 2005/2008:识别当前用户

3
我有一个使用SQL Server 2005数据库的Web应用程序。
我的问题是,该应用程序没有角色管理。因此,该应用程序始终使用一个默认用户访问数据库。但现在我需要仅为当前用户保存和访问值。
有没有办法做到这一点?也许像Web服务器上的会话之类的东西?最好的方法是,如果有任何可能从T-SQL访问Web服务器的当前会话ID。
有人理解我的问题吗? :)
2个回答

5
允许将当前登录的系统提供的值插入到表中。
DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current user is: '+ @sys_usr;
GO

来自MSDN

我认为最好不要这样做。另一种方式是从 Web 服务器向存储过程发送当前用户:

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;

嗨。那不是解决我的问题,因为Web应用程序始终使用相同的登录访问数据库。因此,如果三个用户同时访问应用程序,则他们都使用相同的登录来访问数据库。 - Torben
嗨。谢谢。看起来这是唯一的方法...但这太难改了 :) - Torben
@Torben H.:很高兴能帮上忙 :) 不幸的是,这是我所能建议的全部。 - abatishchev

-1

如果您使用的是 Windows 集成身份验证而不是 SQL 账户:

  1. 将模式对象权限授予 Windows ,而不是用户。然后将所有应用程序用户添加到此组中。
  2. 使用内置的 SUSER_NAME() 函数检索基础 Windows 用户名(格式为 loginDomain\userName)。

1
实际上这样做不行,重新阅读问题。使用@abatishchev的建议将基于会话的用户传递到数据库。 - devstuff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接