首页 > 解决方案 > 使用触发器和应用程序角色插入另一个数据库

问题描述

我目前在 SQL Server 2019 数据库服务器上实现触发器时遇到问题。

我在 DB_A 数据库的表 A1 中有一个触发器,当数据插入 DB_A 数据库的表 A1 时,它应该插入到 DB_B 数据库的表 B1 中。

两个数据库都在同一个实例上。

当我使用直接对两个数据库具有权限的用户插入数据时,此触发器工作正常。

问题是连接到此数据库的应用程序使用应用程序角色来阻止用户对表进行直接请求,并且当触发器尝试插入远程表时,我收到以下错误:

消息 916,级别 14,状态 2,过程 XXX,第 6 行 [批处理开始行 1]
服务器主体“XXXX”无法在当前安全上下文下访问数据库“XXX”。

DB1 数据库具有仅对该数据库具有权限的应用程序角色,我知道应用程序角色仅在数据库级别具有范围,我也知道我无法将应用程序角色映射到其他数据库,但我该如何解决这个同一个实例的数据库之间的访问问题?

标签: sqlsql-servertriggersinsertapplication-role

解决方案


您必须将两个数据库的角色都分配给用户,然后只有您可以在两个数据库中插入数据


推荐阅读