首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程中的动态SQL的表的权限有关问题

2012-01-21 
存储过程中的动态SQL的表的权限问题。某存储过程SP_Test,对表TA_20070919有Update操作,这个操作是通过动态S

存储过程中的动态SQL的表的权限问题。
某存储过程   SP_Test,对表TA_20070919有Update操作,这个操作是通过动态SQL来玩成的。
Create   Proc   SP_Test  
as
begin
      declare   @SQL   varchar(3000)
      Update   TA_20070919   set   Fa   =   Fa   +1  
      set   @SQL   = 'Update   TA '   +   convert(varchar(12),getdate())   +   '   set   Fa   =   Fa   +1   '  
      exec(@SQL)

end

现在用用户A执行,用户A对SP_Test有Excute   权限,对表TA_20070919没有任何权限。
执行的结果是第一条Update语句执行成功,第二条Update语句执行失败,原因是没有表TA_20070919的Update   权限。

问题:1,为什么出现这种情况。
            2,除了给表赋权限外,怎么样才能让动态SQL也能有权限执行?

高手请指点一下,非常感谢!


[解决办法]
Create Proc SP_Test
with Execute as self --以创建者的身份执行
as
begin
declare @SQL varchar(3000)
Update TA_20070919 set Fa = Fa +1
set @SQL = 'Update TA ' + convert(varchar(12),getdate()) + ' set Fa = Fa +1 '
exec(@SQL)

end

热点排行