139 votes

Les objets de support du diagramme de base de données ne peuvent pas être installés ... pas de propriétaire valide

J'ai essayé de créer un diagramme de base de données avec SQL Server 2008, mais une erreur se produit :

Objets de support du diagramme de base de données ne peuvent pas être installés car cette base de données n'a pas de propriétaire valide. Pour continuer, utilisez d'abord la page Fichiers de la boîte de dialogue Propriétés de la base de données ou l'instruction ALTER AUTHORIZATION pour définir le propriétaire de la base de données comme étant un valide, puis ajoutez le diagramme de base de données les objets de support du diagramme de base de données.

J'ai ensuite essayé ce qui suit :

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

Le prochain erorr s'affiche :

Msg 15404, Niveau 16, État 11, Ligne 1 Impossible d'obtenir des informations sur Groupe/utilisateur Windows NT WIN-NDKPHUPPNFL \Administrator ', erreur code 0x534.

Le problème est que le nom du PC a changé en "DevPC" J'ai également changé cela dans la mise à jour script, mais toujours la même erreur 15404.

Que puis-je faire pour corriger cette erreur ennuyeuse ?

4 votes

Vous rencontrez également ce problème lorsque vous restaurez une sauvegarde à partir d'une autre machine.

1 votes

Lorsque vous restaurez une db à partir d'une autre machine, vous pouvez corriger cette erreur en exécutant deux commandes : 1) alter authorization on database::[db_name] to [sa] puis 2) exécutez à nouveau la même commande en remplaçant [sa] avec l'utilisateur qui possédait la base de données immédiatement après la restauration.

221voto

Israel Margulies Points 1713

Dans SQL Server Management Studio, effectuez les opérations suivantes :

  1. Cliquez à droite sur votre base de données, choisissez les propriétés
  2. Aller à la page des options
  3. Dans la liste déroulante à droite intitulée "Niveau de compatibilité", choisissez "SQL Server 2005(90)". 3-1. choisissez "SQL Server 2008" si vous recevez une erreur de comparabilité.
  4. Aller à la page des fichiers
  5. Entrez "sa" dans la zone de texte du propriétaire. 5-1 ou cliquez sur les ellipses (...) et choisissez un propriétaire légitime.
  6. Appuyez sur OK

Après avoir fait cela, vous serez maintenant en mesure d'accéder aux diagrammes de la base de données.

enter image description here

2 votes

Y a-t-il une raison pour laquelle une base de données ne devrait PAS avoir de propriétaire ? J'arrive dans la base de données de produits de quelqu'un d'autre et il n'y a pas de propriétaire défini. Est-ce intentionnel ? (Personne chez le client n'est en mesure de le savoir).

1 votes

La base de données devrait avoir un propriétaire. Choisir "sa" au lieu d'un propriétaire légitime est simplement un choix facile pour corriger l'erreur ci-dessus. Mais choisir un propriétaire légitime a également corrigé le problème.

3 votes

Quelqu'un pourrait-il expliquer l'utilité de modifier le niveau de compatibilité dans ces étapes ? Le simple fait de définir le propriétaire des fichiers sur 'sa' m'a suffi (même si l'authentification sql n'est pas activée, bizarrement).

191voto

Aaron Bertrand Points 116343

Vous devriez envisager d'utiliser un compte d'authentification SQL pour la propriété des bases de données ; vous n'aurez alors plus à vous soucier des comptes qui vont et viennent, des bases de données ou des instances qui sont déplacées sur différents serveurs, et du prochain changement de nom de votre PC. J'ai plusieurs systèmes où nous utilisons :

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

Ou si vous voulez changer le propriétaire pour ce compte d'administrateur local, alors il devrait l'être :

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

Parce que renommer la machine en DevPC a éliminé le compte local qui s'appelait auparavant WIN-ND...\Administrator et cela a également invalidé le propriétaire actuel de la base de données.

Si SELECT @@SERVERNAME; n'est pas exact (il devrait dire DevPC ), afin de s'assurer que le renommage de votre serveur a bien eu lieu dans le serveur SQL, vous pouvez également effectuer les opérations suivantes :

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

0 votes

Il affiche : "WIN-NDKPHUPPNFL" J'ai utilisé votre instruction sql et cela fonctionne ... mais cette configuration est-elle correcte ou dois-je faire quelque chose de plus ?

0 votes

Eh bien, cela dépend vraiment. Si vous avez besoin que votre base de données appartienne à un utilisateur de domaine/de groupe de travail Windows, alors il y a probablement plus de travail à faire. Personnellement, je trouve cela problématique. Lisez peut-être d'abord ceci : sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/

1 votes

Y a-t-il des problèmes à le régler sur sa si vous avez désactivé l'authentification sql ?

8voto

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

Ça marche.

6voto

Anil Rana Points 146

Sélectionnez votre base de données - Cliquez avec le bouton droit de la souris - Sélectionnez Propriétés

Sélectionnez FICHIER dans la partie gauche de la page

Dans la boîte OWNER, sélectionnez le bouton qui a trois points ( ) dedans.

Sélectionnez maintenant l'utilisateur 'sa' et cliquez sur OK

5voto

PhpLou Points 423

J'ai eu le même problème.
Je voulais visualiser chez moi mon diagramme, que j'avais créé le jour même au travail. Mais je n'ai pas pu à cause de ce message.
J'ai découvert que le propriétaire de la base de données était l'utilisateur de mon ordinateur - comme prévu. Mais comme l'ordinateur est dans le domaine de l'entreprise et que je ne suis pas connecté au réseau de l'entreprise, la base de données n'a pas pu déterminer le propriétaire.

Donc ce que j'ai fait c'est changer le propriétaire en un utilisateur local et ça a marché !
J'espère que cela aidera quelqu'un.

Vous changez l'utilisateur en cliquant avec le bouton droit de la souris sur la base de données, les propriétés, les fichiers, le propriétaire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X