Os objetos de suporte do diagrama do banco de dados não podem ser instalados ... nenhum proprietário válido


132

Tentei criar um diagrama de banco de dados com o SQL Server 2008, mas ocorreu um erro:

Os objetos de suporte do diagrama do banco de dados não podem ser instalados porque esse banco de dados não possui um proprietário válido. Para continuar, primeiro use a página Arquivos da caixa de diálogo Propriedades do Banco de Dados ou a instrução ALTER AUTHORIZATION para definir o proprietário do banco de dados com um logon válido e adicione os objetos de suporte do diagrama do banco de dados.

Então eu tentei o seguinte:

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

O próximo erro aparece:

Mensagem 15404, nível 16, estado 11, linha 1 Não foi possível obter informações sobre o grupo / usuário do Windows NT 'WIN-NDKPHUPPNFL \ Administrator', código de erro 0x534.

O problema é que o nome do PC foi alterado para "DevPC". Também mudei isso no script de atualização, mas ainda assim o mesmo erro 15404.

O que posso fazer para corrigir esse erro irritante?


4
Você também obtém esse problema ao restaurar um backup de uma máquina diferente.
— precisa

Ao restaurar um banco de dados de outra máquina, você pode corrigir esse erro executando dois comandos: 1) alter authorization on database::[db_name] to [sa]e 2) execute o mesmo comando novamente e substitua [sa]pelo usuário que possuía o banco de dados imediatamente após a restauração.
— James L.

Respostas:


182

Você deve considerar a conta de autenticação SQL para a propriedade do banco de dados; então você não precisa se preocupar com contas indo e vindo, bancos de dados ou instâncias movendo-se para servidores diferentes e sua próxima alteração no nome do PC. Eu tenho vários sistemas onde usamos:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

Ou, se você deseja alterar o proprietário para essa conta local de Administrador, deve ser:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

Porque renomear a máquina DevPCeliminou a conta local que costumava ser nomeada WIN-ND...\Administratore isso também invalidou o proprietário atual do banco de dados.

Se SELECT @@SERVERNAME;não for preciso (deve-se dizer DevPC), para garantir que a renomeação do servidor seja mantida no SQL Server, você também pode emitir o seguinte:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO

ele mostra: "WIN-NDKPHUPPNFL" Eu usei sua instrução sql e funciona ... mas essa configuração está correta ou preciso fazer mais alguma coisa?
— Rookian

Bem, isso realmente depende. Se você precisar que seu banco de dados seja de propriedade de um usuário de domínio / grupo de trabalho do Windows, provavelmente há mais trabalho a ser feito. Pessoalmente, acho isso problemático. Talvez leia isto primeiro: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
— Aaron Bertrand

1
Há algum problema em configurá-lo como sase você tiver a autenticação sql desativada?
— precisa

@AaronBertrand Olá, tenho uma pergunta. Por padrão, se criarmos um banco de dados, o proprietário do banco de dados será definido como usuário atual do Windows e se o usuário atual do Windows também for administrador. Por que precisamos alterá-lo para Sql Authantication Login. Na verdade, eu não consigo entender esse erro. Se mudarmos para um login, funcionará. Mas o login do administrador do Windows também é administrador do sistema. Você poderia ajudar?
— precisa saber é o seguinte

Eu restaurei vários bancos de dados e todos exibiram o erro na pergunta do OP, mesmo que as propriedades de cada banco de dados mostrassem um usuário válido. Eu usei o 1º comando para alterá-lo para [sa]e depois mudei de volta para o usuário que ele dizia que era antes e viola, sem mais erros. Não sei por que um banco de dados restauração não configurar adequadamente o proprietário banco de dados ...
— James L.

208

No SQL Server Management Studio, faça o seguinte:

  1. Clique com o botão direito do mouse no seu banco de dados, escolha propriedades
  2. Vá para a página Opções
  3. Na lista suspensa à direita, "Nível de compatibilidade", escolha "SQL Server 2005 (90)" 3-1. escolha "SQL Server 2008" se você receber um erro de comparabilidade.
  4. Vá para a página Arquivos
  5. Digite "sa" na caixa de texto do proprietário. 5-1 ou clique nas reticências (...) e escolha um legítimo proprietário.
  6. Hit OK

depois de fazer isso, agora você poderá acessar os diagramas de banco de dados.

insira a descrição da imagem aqui


2
Existe alguma razão pela qual um banco de dados NÃO deve ter um proprietário? Estou entrando no banco de dados de produtos de outra pessoa e não há um conjunto de proprietários. Isso foi intencional? (Não há ninguém no cliente que saiba).
— precisa

O banco de dados deve ter um proprietário. Escolher "sa" em vez de um legítimo proprietário é simplesmente uma escolha fácil para corrigir o erro acima. Mas escolher um legítimo proprietário também resolveu o problema.
— Lesly Revenge 10/10

3
Alguém poderia explicar o objetivo de alterar o nível de compatibilidade nessas etapas? Apenas definir o proprietário nos arquivos como 'sa' era suficiente para mim (mesmo que eu não tenha a autenticação sql ativada, estranhamente).
— precisa

Isso funcionou para mim. Porém, eu precisava remover meu usuário de Databasename> Security.
— Gezim

Isso funcionou para mim, no SQL Server 2017, usando o Management Studio 17.9, sem a necessidade da etapa 1
— Giorgio Barchiesi

7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Funciona.


5

Digite "SA" em vez de "sa" na caixa de texto do proprietário. Isso funcionou para mim.


5

Eu tive o mesmo problema.
Eu queria ver meu diagrama, que criei no mesmo dia no trabalho, em casa. Mas não pude por causa dessa mensagem.
Eu descobri que o proprietário do banco de dados era o usuário do meu computador - como esperado. mas como o computador está no domínio da empresa e não estou conectado à rede da empresa, o banco de dados não pôde resolver o proprietário.

Então, o que eu fiz foi mudar o proprietário para um usuário local e funcionou !!
Espero que isso ajude alguém.

Você altera o usuário clicando com o botão direito do mouse no banco de dados, propriedades, arquivos, proprietário


3

Isso consertou para mim. Ele define o proprietário encontrado na seção 'arquivos' da janela de propriedades do banco de dados e é conforme o script do management studio.

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

De acordo com a documentação sp_changedbowner, isso foi preterido agora.

Baseado na resposta de Israel. A resposta de Aaron é a variação não obsoleta disso.


3

Selecione seu banco de dados - Clique com o Botão Direito - Selecionar Propriedades

Selecione ARQUIVO no lado esquerdo da página

Na caixa PROPRIETÁRIO, selecione o botão que possui três pontos (…)

Agora selecione user 'sa e clique em OK


0

Eu apenas experimentei isso. Eu tinha lido as sugestões nesta página, bem como as sugestões da Autoridade SQL (que é a mesma coisa) e nenhuma das opções acima funcionou.

No final, removi a conta e recriei (com o mesmo nome de usuário / senha). Assim, todos os problemas desapareceram.

Infelizmente, isso significa que eu não sei o que deu errado, então não posso compartilhar mais nada.


0

1.Clique com o botão direito do mouse no seu banco de dados, 2.Em seguida, selecione Propriedades. 3. Selecione a opção em níveis de compatibilidade, escolha sql 2008 [100] se estiver trabalhando com o Microsoft sql 2008.

4.Em seguida, selecione o arquivo e escreva (sa) na caixa de texto do proprietário

100% funciona para mim.


0

Uma maneira mais fácil de resolver esses problemas seria clicar com o botão direito do mouse no nome do seu banco de dados, escolher "Nova consulta", digite "exec sp_changedbowner 'sa'" e executar a consulta. Então você estará pronto para ir.


0

você deve entrar como administrador, clicar com o botão direito do mouse no microsofft sql server management studio e executar como admin


0

Só é necessário executá-lo no editor de consultas ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [domain \ account];


-3

O problema real é que o proprietário padrão (dbo) não tem um logon mapeado para ele.Como tentei mapear o logon sa para o proprietário do banco de dados, recebi outro erro informando "Usuário, grupo ou função 'dbo' já existe ... ". No entanto, se você tentar esse código, ele realmente funcionará:

EXEC sp_dbcmptlevel 'yourDB', '90';

ir

ALTERAR A AUTORIZAÇÃO NO DATABASE :: yourDB PARA "yourLogin"

ir

use [yourDB]

ir

EXECUTAR COMO USUÁRIO = N'dbo 'REVERT

ir


-3

clique com o botão direito do mouse no seu banco de dados e selecione propriedades. selecione a opção em níveis de compatibilidade, escolha sql 2005 [90] em vez de 2008 se você estiver trabalhando com o Microsoft sql 2008. selecione o arquivo e escreva (sa) na caixa de texto do proprietário. provavelmente vai funcionar

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.