我刚刚在新的表触发器上实现了 WITH EXECUTE AS OWNER 代码,现在插入到表中的常规用户收到以下错误:无法作为数据库主体执行,因为校长" dbo"不存在,不能被冒充,或者您没有权限。
设置为sysadmins的用户插入表没有问题,没有错误。需要向用户/角色授予哪些类型的权限才能使用 WITH EXECUTE AS OWNER ?
答案 0 :(得分:0)
显然问题毕竟与权限无关,而是与" dbo不存在"这一事实有关。当前的数据库所有者设置为旧的登录名,不再存在。
通过运行以下SQL语句来解决此问题:
ALTER DATABASE [DB]
SET SINGLE_USER
GO
EXEC sp_changedbowner 'sa'
GO
ALTER DATABASE [DB]
SET MULTI_USER