需为哪个SQL GP用户主体授予[cp].[PrintQueue]的INSERT权限以确保触发器正常运行?
解决Dynamics GP采购订单接收触发器非sa用户执行报错的权限问题
问题背景
你在[dbo].[POP10300]表上创建了POReceivingTrigger触发器,用于PO接收时向自定义表[cp].[PrintQueue]插入记录,sa用户执行一切正常,但其他GP用户操作时就报错——核心原因是触发器执行时会继承触发它的用户的权限上下文,普通GP用户没有[cp].[PrintQueue]表的INSERT权限。
解决方案
最高效的方式是把INSERT权限授予Dynamics GP的标准数据库角色DYNGRP——因为所有普通GP用户默认都会被分配到这个角色,一次授权就能覆盖所有常规用户:
GRANT INSERT ON [cp].[PrintQueue] TO DYNGRP;
如果有个别特殊GP用户不在DYNGRP角色里,你可以单独给该用户授权:
GRANT INSERT ON [cp].[PrintQueue] TO [你的GP用户对应的SQL登录名];
补充说明
触发器本身的所有者权限没问题(sa创建的已经足够),但触发器执行时是以发起PO接收操作的GP用户身份去访问[cp].[PrintQueue]表的,所以必须确保这个用户(或其所属的角色)拥有目标表的INSERT权限,这样触发器才能顺利完成插入操作。
内容的提问来源于stack exchange,提问作者Randy
相关产品推荐
相关产品推荐

