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

Sql server 如何在不关闭和重新打开连接的情况下更改MS SQLServer身份验证登录?,sql-server,Sql Server,我已连接到Microsoft SQL Server,并希望更改连接身份验证用户。是否可以在不关闭和重新打开连接的情况下执行此操作 最理想的是类似于Oracle的功能 我希望该解决方案也适用于SQL Server 2000 据我所知,SQL Server在传递的帐户是经过身份验证的上下文方面非常独特。以Enterprise Manager和其他工具为例,您必须断开连接并重新连接才能更改用户 另外,从工作方式来看,它表明连接本身是缓存的特定于用户的,因此,如果您中途更改了执行方,将导致严重的安全问题

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

最理想的是类似于Oracle的功能


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

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

另外,从工作方式来看,它表明连接本身是缓存的特定于用户的,因此,如果您中途更改了执行方,将导致严重的安全问题


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

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


否则,一旦建立了安全上下文,就不可能更改它。

根据您正在执行的操作,执行AS可能会帮助您解决此问题。这允许您在另一个用户的上下文中以类似于Windows shell中的运行方式执行SQL。SQL Server中的探查器和审计跟踪允许您查看原始用户以及语句运行的上下文

以用户身份执行='newuser';
选择。。。关闭/打开连接有什么问题?