sql - 使用触发器和应用程序角色插入另一个数据库
问题描述
我目前在 SQL Server 2019 数据库服务器上实现触发器时遇到问题。
我在 DB_A 数据库的表 A1 中有一个触发器,当数据插入 DB_A 数据库的表 A1 时,它应该插入到 DB_B 数据库的表 B1 中。
两个数据库都在同一个实例上。
当我使用直接对两个数据库具有权限的用户插入数据时,此触发器工作正常。
问题是连接到此数据库的应用程序使用应用程序角色来阻止用户对表进行直接请求,并且当触发器尝试插入远程表时,我收到以下错误:
消息 916,级别 14,状态 2,过程 XXX,第 6 行 [批处理开始行 1]
服务器主体“XXXX”无法在当前安全上下文下访问数据库“XXX”。
DB1 数据库具有仅对该数据库具有权限的应用程序角色,我知道应用程序角色仅在数据库级别具有范围,我也知道我无法将应用程序角色映射到其他数据库,但我该如何解决这个同一个实例的数据库之间的访问问题?
解决方案
您必须将两个数据库的角色都分配给用户,然后只有您可以在两个数据库中插入数据
推荐阅读
- node.js - Bot 框架 Directline - 使用 node.js 更改 Bot 名称运行时
- node.js - Node.js 中的 setTimeout()
- css - 如何替换显示:浏览器边缘中的内容
- lua - 如何解码这个lua脚本代码?我不明白第七行的函数编码中的内容
- ios - 将 SwiftyJsonArray 转换为 NSArray
- php - Prestashop 1.7 在覆盖控制器中的翻译
- java - 在反射中获取方法参数的类型
- javascript - 单击返回/重新加载按钮时如何显示相同的数据?
- ios - FirebaseML Vision 不适用于使用设备摄像头捕获的图像
- awk - 如果两列匹配更改第三列