我得到以下错误

Cannot execute as the database principal because the principal "dbo" 
does not exist, this type of principal cannot be impersonated,
or you do not have permission.

我读过关于ALTER AUTHORIZATION的文章,但我不知道这发生在哪个数据库中。这个错误被频繁地抛出,并且错误日志以每天1GB的速度增长。


当前回答

在Security下,将主体添加为“未登录的SQL用户”,使其拥有与主体同名的模式,然后在Membership中将其设置为db_owner。

其他回答

我通过设置数据库所有者解决了这个问题。在此问题之前,我的数据库没有任何所有者。在数据库中执行此命令将所有者设置为sysadmin帐户:

use [YourDatabaseName] EXEC sp_changedbowner 'sa'
USE [<dbname>]
GO
sp_changedbowner '<user>' -- you can use 'sa' as a quick fix in databases with SQL authentication

KB913423 -在SQL Server 2005中恢复数据库后,不能运行包含EXECUTE AS子句的语句或模块

当数据库是从不同的SQL服务器或实例恢复时,也可能发生这种情况。在这种情况下,数据库中的安全主体'dbo'与恢复数据库的SQL服务器上的安全主体不相同。 不要问我是怎么知道的……

在Security下,将主体添加为“未登录的SQL用户”,使其拥有与主体同名的模式,然后在Membership中将其设置为db_owner。

做图形。

数据库右键点击——>属性——>文件——>选择数据库所有者——>选择[sa]——ok