日期:2014-05-18  浏览次数:20459 次

关于sqlserver2008触发器同步更新的问题,急
表A1属于数据库A,表B1属于数据库B,现在用户s向A1插入数据,触发触发器更新B1,但是用户s只能操作数据库A,并没有操作数据库B的权限。此时触发器就会报错,“服务器主体无法在当前安全上下文下访问数据库”,大家有什么解决的办法啊?为安全计,我设定的s就没有B的权限

------解决方案--------------------
使用execute as 这个功能,使用方法看联机丛书。
------解决方案--------------------
SQL code
第一种情况: 如果是在同一实例同一服务器上:
将S用户 同时映射到 A、B两个库上,对操作的表有同样的权限。触发器中对 B1的操作要写成类似
update B.DBO.B1 set col=? where col1=?

第二种情况: 不同服务器上:
 A、B两个库上都有同样的S用户和对应的权限。然后用该用户建立这两个服务器之间的 链接。
然后在触发器中对 B1的操作写类似的
update [B服务器的IP地址].[B].[DBO].[B1] set col=? where col1=?