扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:教你修改SQL Server 2005 执行环境 来源:教你修改SQL Server 2005 执行环境 2007年9月3日
关键字: 环境 SQL Server SQL Server 2005 数据库
执行环境是SQL Server中设定用户权限的认证方式,例如,当您登录到SQL Server的时候,登录账户就被赋予了一定的权限,其中可能包括登录的功能、访问数据库以及在数据库中执行某些操作的功能。
SQL Server 2005包含了EXECUTE AS语句,通过使用EXECUTE AS语句,您可以为批处理和过程转换执行环境,这样,调用该批处理或过程的用户就可以使用不同的权限来操作了。
所有权链
在我正式讲解SQL Server 2005中执行环境的问题之前,先来简单地说说所有权链的工作原理。
当用户执行一个存储过程的时候(假定该用户拥有执行该存储过程的权限),SQL Server将该存储过程的所有者与这个存储过程所涉及到的对象的所有者进行对比,如果他们的所有者相同,那么就不必对这些引用对象的权限进行评估了。
所以,如果用户Tim获得了存储过程usp_ProcedureChain的权限,而usp_ProcedureChain存储过程的所有者是dbo,那么,如果dbo还同时拥有usp_ProcedureChain所调用的其他存储过程,那么Tim在执行这个存储过程的时候就不会出现错误。
执行环境的转换
在SQL Server 2000中,您可以使用SETUSER命令来模拟SQL用户的执行环境,但问题在于,只有系统管理员或者数据库的所有者才能使用这个命令,而且Windows账户也不能使用该命令。
在SQL Server 2005中,EXECUTE AS语句可以替代SETUSER来改变存储过程、触发器、批处理或者函数的执行环境。如果执行环境变成了另外一个用户,那么SQL Server将检查该用户的权限。如果您需要在创建或修改一个存储过程或函数的时候指定EXECUTE AS语句,您需要具备IMPERSONATE的权限,以及创建该对象的权限。
实例
正如我刚才所介绍的一样,改变存储过程的执行环境非常有用,接下来我将通过实例来讲解如何实现这一功能。在这个例子中,您会看到如何使用EXECUTE AS将没有确切权限的使用者模拟为所有者对表格进行插入操作。
在第一行语句中,我使用了REVERT命令,这样,您就可以完整地返回到例子中,而不必担心需要清除任何对象。
|
在下面的代码的第七行,我使用了清除语句,这样可以检查我在随后的例子中要使用的对象是否已经存在,如果已经存在,就将其清除。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者