在 SQL Server 存储过程中获取当前用户

10

我有一个从Active Directory进行身份验证的SQL Server 2008 Express R2实例。用户的记录与其存储在数据库中的AD帐户相关联。我想为他们编写存储过程以检索他们的记录。

因此,该存储过程可能会执行查询SELECT * FROM PurchaseOrders WHERE uid = $userid

我要如何找到$userid,即其AD配置文件中的属性?

谢谢!


http://msdn.microsoft.com/en-us/library/aa172599%28v=sql.80%29.aspx - Brian Webster
2个回答

16

一般来说,您可能希望获取

SELECT SUSER_NAME()

来自SQL Server - 这是以DOMAIN\UserName格式表示的连接用户。

通常你无法直接从SQL Server机器访问AD并从中获取一些信息... 如果你无法使用DOMAIN\User Name的值,最好的方法是将该信息从调用应用程序传递到存储过程中。


我们可以用这种方式揭示密码吗? - Sunny Sharma
2
@Sunny:不行,你不能透露密码。 - marc_s
此外,即使将用户名作为参数传递也会允许代表另一个人执行操作。这非常糟糕! - reubenjohn
1
@reubenjohn - 不会的。你怎么能这样做呢? - Robino
@Robino 我犯了一个错误,我假设这里的“parameters”是指通过网络发送的REST参数。 - reubenjohn

2
SELECT * FROM PurchaseOrders WHERE uid = CURRENT_USER

或者
SELECT * FROM PurchaseOrders WHERE uid = SUSER_NAME()

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