服务器主体 "sa" 无法在当前安全上下文下访问数据库 "db1"。
时间:2011-11-30
来源:互联网
db1中建一表A,和一个存储过程A
db2中建有一表B,表B上有一个触发器(insert 触发),和一个存储过程B.
我用管理员sa 用户登录,执行存储过程B,向表B中写入一条数据,在B表的触发器中调用数据库db1中的存储过程A,
触发器中的调用格式为:
exec db1.dbo.A 参数1,参数2,....
结果出现
消息 916,级别 14,状态 1,过程 TRGDetialsData,第 47 行
服务器主体 "sa" 无法在当前安全上下文下访问数据库 "db1"。
我的sa用户已经是最高权限了,为什么还有这个提示
到底如何在触发器中调用另外一个数据库(同一服务器)中的存储过程
作者: liushilong2001 发布时间: 2011-11-30
SQL code
ALTER DATABASE db1 SET TRUSTWORTHY ON ALTER DATABASE db2 SET TRUSTWORTHY ON
作者: ap0405140 发布时间: 2011-11-30
在 master 数据库中记录的数据库所有者 SID 与在数据库 'db2' 中记录的数据库所有者 SID 不同。应该通过使用 ALTER AUTHORIZATION 语句重置数据库 'db2' 的所有者来更正此情况。
又出现了这个问题噻
作者: liushilong2001 发布时间: 2011-11-30
作者: liushilong2001 发布时间: 2011-11-30
SQL code
ALTER AUTHORIZATION ON DATABASE::db1 TO [sa] ALTER AUTHORIZATION ON DATABASE::db2 TO [sa]
作者: ap0405140 发布时间: 2011-11-30
作者: liushilong2001 发布时间: 2011-11-30
select * from db2..sysusers where [name] = 'dbo'
以上可以看到你的两个dbo的sid可能不同,这种情况在导入数据库时很常见。
不过不建议你使用sa作为你的实际用户。解决方法请参考 (英文):
http://stackoverflow.com/questions/3837841/running-trigger-that-calls-stored-procedure-on-another-database
作者: shshjun 发布时间: 2011-11-30
厉害,问题好了,这几句都是干啥用的?在sql2000上支持不?
sorry,木有sql2000环境,应该可以吧.
作者: ap0405140 发布时间: 2011-11-30
作者: liushilong2001 发布时间: 2011-11-30
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28