切换SQL Server 2005中执行SQL的用户

来源:互联网 发布:javascript 替换 编辑:程序博客网 时间:2024/06/16 02:08

切换SQL Server 2005中执行SQL的用户
 
    很多人都碰到过这样的问题,使用查询分析器执行SQL语句时,如果这时想切换用户该怎么

办?SQL SERVER2005给了我们这样的功能。

  SQL Server 2005包含了EXECUTE AS语句,通过使用EXECUTE AS语句,您可以为批处理和过

程切换用户,这样,调用该批处理或过程的用户就可以使用不同的权限来操作了。
 

  用户的切换

  在SQL Server 2000中,您可以使用SETUSER命令来模拟SQL用户的切换,但问题在于,只有

系统管理员或者数据库的所有者才能使用这个命令,而且Windows账户也不能使用该命令。

  在SQL Server 2005中,EXECUTE AS语句可以替代SETUSER来改变存储过程、触发器、批处

理或者函数的执行用户。如果用户变成了另外一个用户,那么SQL Server将检查该用户的权限

。如果您需要在创建或修改一个存储过程或函数的时候指定EXECUTE AS语句,您需要具备

IMPERSONATE的权限,以及创建该对象的权限。
    如果我们想切换回原来的用户,只需要使用 REVERT命令即可。

一个具体的例子。
我用windows用户权限链接到SQL Server2005,然后打开查询分析器

查看这个时候的用户,使用如下SQL
SELECT SESSION_USER
  GO
------------------------
dbo
  
然后,我切换用户
execute as user='test4'
go
------------------------
test4

从这里发现,用户已经被切换到了test4

然后,我再用Revert切换回原来的用户
revert
go

SELECT SESSION_USER
  GO
------------------------
dbo
发现用户再次被切换回来了