【问题标题】:Getting the current user in SQL Server stored procedure在 SQL Server 存储过程中获取当前用户
【发布时间】:2011-07-09 13:44:24
【问题描述】:

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

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

我如何找到$userid,他们的广告资料中的属性?

谢谢!

【问题讨论】:

标签: sql-server stored-procedures active-directory


【解决方案1】:

通常,您会想要获得

SELECT SUSER_NAME()

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

您通常无法从 SQL Server 机器直接访问 AD 以从那里获取一些位......如果您无法使用 DOMAIN\User Name 值,最好的办法是传递从调用应用程序到存储过程的信息。

【讨论】:

  • 我们也可以这样泄露密码吗?
  • @Sunny:不,你不能泄露密码
  • 此外,即使将用户名作为参数传递也将允许代表另一个人执行操作。这是非常糟糕的!
  • @reubenjohn - 不,不会。你怎么能这样?
  • @Robino 我的错误是我假设这里的“参数”是指通过网络发送的 REST 参数。
【解决方案2】:
SELECT * FROM PurchaseOrders WHERE uid = CURRENT_USER

SELECT * FROM PurchaseOrders WHERE uid = SUSER_NAME()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多