Erro ao alterar a propriedade do banco de dados na Página Arquivos na caixa de diálogo de propriedades do banco de dados

10

Eu restaurei um banco de dados e criei um novo usuário (o mesmo usuário do qual fiz login) como db_owner. Agora, quando eu queria ver o diagrama do banco de dados, 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 de arquivos da caixa de diálogo Propriedades do Banco de Dados ou a instrução Alterar Autorização para definir o proprietário do banco de dados como um logon válido e adicione os objetos de suporte ao banco de dados.

Agora, quando tentei alterar a propriedade na página Arquivos das Propriedades do banco de dados, estou recebendo um erro como

O proprietário do conjunto falhou no banco de dados 'ABC'. (Microsoft.SqlServer.SMO) Informações adicionais: ocorreu uma exceção no SMO O novo proprietário do banco de dados proposto James-PC \ James é mapeado como usuário James nesse banco de dados. Nome do parâmetro: James-PC \ James "

Ajude-me a corrigir o problema para que eu possa ver os diagramas de banco de dados neste computador após restaurar o backup do banco de dados de outro sistema.

user2826073
fonte

Respostas:

8

O proprietário do banco de dados é o logon em sys.server_principals que possui o banco de dados, conforme definido por seu SID. Após uma restauração, pode ser fácil que o logon usado para restaurar o banco de dados não seja o logon que era o proprietário anterior do banco de dados. (É mais provável que isso aconteça quando o banco de dados for movido entre servidores.)

Portanto, pode haver três configurações com as quais você está tendo problemas

  1. O banco de dados owner_sid não é igual ao db_owner sid do banco de dados. Você pode comparar isso para o banco de dados ABC:

    SELECT owner_sid FROM sys.databases onde name = 'ABC';

    SELECT sid de ABC.sys.database_principals WHERE nome = 'dbo';

  2. Em seguida, você receberá uma mensagem informando que o banco de dados proposto owner_sid também existe como usuário em sys.database_principals. Sabemos disso na mensagem de erro sobre o mapeamento do proprietário proposto.

Portanto, seus passos são:

 USE ABC;
 DROP USER James;
 ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];

Você deixou o usuário desnecessário, pois está fazendo dele o dbo. Assim que estiver fora do caminho, seu login poderá ser feito o proprietário do banco de dados.

EDIT: Você também pode usar o SSMS para excluir o usuário James do banco de dados ABC. Em seguida, você pode retornar à guia Arquivo de propriedades do banco de dados para definir o proprietário do banco de dados. (Desculpe, eu costumo pensar em scripts.)

RLF
fonte
11
Isso é interessante, no Management Studio de login que foi feito um dbo não aparece em YOUR_DB / Segurança / Usuários,
joedotnot
-3
  1. banco de dados clique direito
  2. propriedades
  3. selecionar arquivos
  4. corrija / defina o proprietário (para seu PC \ você ou navegue e selecione clicando em "...")

isso funcionou para mim no SQL Server Management Studio v17.1

user127505
fonte
2
Eu acho que exatamente isso não funcionou para eles.
Dez