使用WITH EXECUTE AS OWNER和Trigger时出现问题

时间:2014-04-25 19:18:26

标签: sql sql-server

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

设置为sysadmins的用户插入表没有问题,没有错误。需要向用户/角色授予哪些类型的权限才能使用 WITH EXECUTE AS OWNER

1 个答案:

答案 0 :(得分:0)

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

通过运行以下SQL语句来解决此问题:

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