代码之家  ›  专栏  ›  技术社区  ›  neves

如何在不关闭和重新打开连接的情况下更改MS SQLServer身份验证登录?

  •  0
  • neves  · 技术社区  · 17 年前

    我已连接到Microsoft SQL Server,并希望更改连接身份验证用户。是否可以在不关闭和重新打开连接的情况下完成此操作?

    理想就像Oracle set role 功能。

    我希望该解决方案也适用于SQL Server 2000。

    3 回复  |  直到 17 年前
        1
  •  1
  •   liggett78    17 年前

    您可能想查看应用程序角色(sp_setapprole),但您必须意识到,一旦上下文发生更改(例如设置了角色),SQL Server 2000将无法还原它(2005可能会)。这样做的结果是,当连接在代码中关闭时,它实际上是无用的,例如,它不能返回到池中并重用,这会导致可扩展性问题。

    否则,一旦安全上下文建立,就无法更改它。

        2
  •  1
  •   Mitchel Sellers    17 年前

    据我所知,SQL Server在传递的帐户是经过身份验证的上下文方面非常不同。以Enterprise Manager和其他工具为例,您必须断开连接并重新连接才能更改用户。

    再加上看路 connection pooling 有效,它表示连接本身是缓存的用户特定的,因此如果你中途更改了执行方,将导致重大的安全问题。

    所以简短的回答是,不,据我所知,这是不可能的。

        3
  •  0
  •   Marcus Erickson    17 年前

    根据您正在做的事情,EXECUTE AS可能会在这里为您提供帮助。这允许您在另一个用户的上下文中执行SQL,其方式与Windows shell中的RUN AS类似。SQL Server中的分析器和审计跟踪允许您查看原始用户以及语句在哪个上下文下运行。

    EXECUTE AS用户=“新用户”; 选择。..<--新用户上下文下的SQL代码 回复;

    注意:这在SQL Server 2000下不可用,是由于您的请求而添加的。