Eu estou recebendo o seguinte erro
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.
Eu li sobre ALTER AUTHORIZATION
, mas não tenho idéia em qual banco de dados isso está acontecendo. Esse erro é cuspido com muita frequência e aumenta o registro de erros em cerca de 1 GB por dia.
sql-server-2008
PBG
fonte
fonte
Respostas:
Resolvi esse problema definindo o proprietário do banco de dados. Meu banco de dados não tinha nenhum proprietário antes desse problema. Execute este comando no seu banco de dados para definir o proprietário na conta sysadmin:
fonte
dbo
ainda era o db_owner e NÃO POSSO FAZER QUALQUER COISA COM O DBO. Está ficando realmente frustrante. Eu não posso mudar nada.Faça graficamente.
Clique com o botão direito do mouse no banco de dados -> propriedades -> arquivos -> selecione o proprietário do banco de dados -> selecione [sa] - ok
fonte
KB913423 - Você não pode executar uma instrução ou módulo que inclua a cláusula EXECUTE AS após restaurar um banco de dados no SQL Server 2005
fonte
Isso também pode acontecer quando o banco de dados é uma restauração de um servidor ou instância SQL diferente. Nesse caso, o principal de segurança 'dbo' no banco de dados não é o mesmo que o principal de segurança no servidor SQL no qual o banco de dados foi restaurado. Não me pergunte como eu sei disso ...
fonte
outra maneira de fazê-lo
fonte
Resposta selecionada e algumas outras são boas. Eu só quero dar uma explicação mais pura de SQL. É a mesma solução que não existe um proprietário de banco de dados (válido).
A conta do proprietário do banco de dados
dbo
mencionada com erro é sempre criada com o banco de dados. Portanto, parece estranho que não exista, mas você pode verificar com duas seleções (ou uma, mas vamos simplificar).que mostra o SID do
dbo
usuário no banco de dados DB_NAME epara mostrar todos os logins (e seus SIDs) para esta instância do servidor SQL. Observe que ele não gravou nenhum prefixo db_name, porque todo banco de dados possui as mesmas informações nessa exibição.
Portanto, no caso de erro acima , não haverá logon com o SID atribuído ao usuário dbo do banco de dados.
Como explicado acima, isso geralmente acontece ao restaurar o banco de dados de outro computador (em que o banco de dados e o usuário dbo foram criados por login diferente). E você pode corrigi-lo alterando a propriedade para o login existente.
fonte
Se o acima não funcionar, tente o seguinte. Ele resolveu o problema para mim, mesmo quando o proprietário estava bem definido para o banco de dados.
Falha na replicação do SQL Server 2008 com: processo não pôde executar 'sp_replcmds'
fonte
Em Segurança, adicione o principal como um "usuário SQL sem logon", torne-o o esquema com o mesmo nome que o principal e, em Associação, faça-o db_owner.
fonte
Também ocorreu esse erro quando acidentalmente alimentou uma seqüência de conexão com o banco de dados no espelho somente leitura - e não o banco de dados primário em uma configuração de alta disponibilidade.
fonte
Como dizia a mensagem, você deve definir a permissão como proprietário para o seu usuário. Então você pode usar o seguinte:
Espero que seja útil! Deixe um comentário se estiver ok para você.
fonte