答案:EXECUTE AS CALLER 指定在模块调用方的上下文中执行该模块中的语句。
在下列情况下应使用 EXECUTE AS CALLER:
您希望模块中的语句作为调用方用户来执行。
您希望针对调用用户对模块中的语句进行基本权限检查,并且只依赖所有权链接来跳过对基础对象的权限检查。
应用程序不要求对用户隐藏基础被引用对象,或者您只引用所有权相同的对象因而可以依赖所有权链接来隐藏架构。
EXECUTE AS SELF 相当于其中指定的用户为创建或修改模块的人的 EXECUTE AS user_name。
在下列情况下应使用 EXECUTE AS SELF:
您希望使用一种快捷方式来指定在您自己的上下文中运行您所创建或修改的模块的语句。
您的某个应用程序要为调用模块的用户创建模块,并且您希望使用这些用户作为执行上下文来创建这些模块。在这种情况下,您在设计时不知道调用用户的名称。
上一个:怎样把acsess2007升迁为sql server 2005?
下一个:关于SQL Server的几个问题,快要考试了,求大神帮忙解答!