【问题标题】:Problems using WITH EXECUTE AS OWNER with Trigger将 WITH EXECUTE AS OWNER 与触发器一起使用时出现问题
【发布时间】:2014-04-25 19:18:25
【问题描述】:

我刚刚在新表触发器上实现了 WITH EXECUTE AS OWNER 代码,现在插入表的普通用户收到以下错误:无法作为数据库主体执行,因为主体“dbo”不存在,不能被模拟,或者您没有权限。

设置为系统管理员的用户插入表没有问题,没有错误。需要向用户/角色授予什么类型的权限才能使他们能够以所有者身份执行

【问题讨论】:

  • 很确定他们只需要 dbo 架构的权限,或者必须将他们分配给有权访问该架构的数据库角色。

标签: sql sql-server


【解决方案1】:

显然问题毕竟与权限无关,而是与“dbo 不存在”这一事实有关。当前数据库所有者设置为不再存在的旧登录名。

通过运行以下 SQL 语句解决了这个问题:

ALTER DATABASE [DB]
SET SINGLE_USER
GO
EXEC sp_changedbowner 'sa'
GO
ALTER DATABASE [DB]
SET MULTI_USER

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2010-10-26
    相关资源
    最近更新 更多