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.