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

132

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

Les objets de prise en charge des diagrammes 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 sur une connexion valide, puis ajoutez les objets de prise en charge du diagramme de base de données.

Ensuite, j'ai 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

L'erorr suivante apparaît:

Msg 15404, niveau 16, état 11, ligne 1 Impossible d'obtenir des informations sur le groupe / utilisateur Windows NT «WIN-NDKPHUPPNFL \ Administrator», code d'erreur 0x534.

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

Que puis-je faire pour corriger cette erreur ennuyeuse?

Recrue
la source
4
Vous rencontrez également ce problème lorsque vous restaurez une sauvegarde à partir d'un autre ordinateur.
Tim Abell
Lorsque vous restaurez une base de données à partir d'un autre ordinateur, vous pouvez corriger cette erreur en exécutant deux commandes: 1) alter authorization on database::[db_name] to [sa], puis 2) réexécutez la même commande et remplacez-la [sa]par l'utilisateur qui possédait la base de données immédiatement après la restauration.
James L.

Réponses:

182

Vous devez envisager un compte d'authentification SQL pour la propriété de la base de données; alors vous n'avez pas à vous soucier des comptes qui vont et viennent, des bases de données ou des instances se déplaçant vers 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 souhaitez changer le propriétaire de ce compte d'administrateur local, alors il devrait être:

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

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

Si ce SELECT @@SERVERNAME;n'est pas précis (cela devrait dire DevPC), alors pour vous assurer que le changement de nom de votre serveur a pris racine dans SQL Server, vous pouvez également émettre ce qui suit:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO
Aaron Bertrand
la source
il montre: "WIN-NDKPHUPPNFL" J'ai utilisé votre instruction SQL et cela fonctionne ... mais cette configuration est-elle correcte ou dois-je faire autre chose?
Rookian
Eh bien, cela dépend vraiment. Si vous avez besoin que votre base de données appartienne à un utilisateur de domaine / groupe de travail Windows, il y a probablement plus de travail à faire. Personnellement, je trouve cela problématique. Lisez peut-être ceci en premier: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand
1
Y a-t-il des problèmes avec sa configuration sasi l'authentification SQL est désactivée?
Tim Abell
@AaronBertrand Salut J'ai une question.Par défaut Si nous créons un propriétaire de base de données de base de données est défini sur l'utilisateur Windows actuel et si l'utilisateur Windows actuel est également administrateur. Pourquoi nous devons le changer en Sql Authantication Login. En effet je ne peux pas comprendre cette erreur. Si nous le changeons en connexion, cela fonctionne. Mais l'administrateur Windows Login est également administrateur système. Pouvez-vous aider?
UfukSURMEN
J'ai restauré un tas de bases de données et toutes ont affiché l'erreur dans la question du PO, même si les propriétés de chaque base de données indiquaient un utilisateur valide. J'ai utilisé la première commande pour le changer en [sa]puis je l'ai changé pour l'utilisateur qu'il avait dit avant, et alto, plus d'erreurs. Je ne sais pas pourquoi une restauration de base de données n'a pas correctement défini le propriétaire de la base de données ...
James L.
208

Dans SQL Server Management Studio, procédez comme suit:

  1. Faites un clic droit 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. Accédez à la page 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 cela, vous serez maintenant en mesure d'accéder aux diagrammes de base de données.

entrez la description de l'image ici

Israël Margulies
la source
2
Y a-t-il une raison pour laquelle une base de données ne devrait PAS avoir de propriétaire? J'entre dans la base de données de produits de quelqu'un d'autre et il n'y a pas de jeu de propriétaires. Était-ce intentionnel? (Il n'y a personne chez le client qui le saurait).
Jason Kleban le
La base de données doit 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 le choix d'un propriétaire légitime a également résolu le problème.
Lesly Revenge
3
Quelqu'un pourrait-il expliquer le but de la modification du niveau de compatibilité dans ces étapes? Il me suffisait de définir le propriétaire sous fichiers sur «sa» (même si l'authentification SQL n'est pas activée, curieusement).
Tim Abell
Cela a fonctionné pour moi. J'ai dû supprimer mon utilisateur de Nom de la base de données> Sécurité, cependant.
Gezim
Cela a fonctionné pour moi, sur SQL Server 2017, en utilisant Management Studio 17.9, sans avoir besoin de l'étape 1
Giorgio Barchiesi
7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Ça marche.

RafiO
la source
5

Entrez "SA" au lieu de "sa" dans la zone de texte du propriétaire. Cela a fonctionné pour moi.

Adarsh ​​VC
la source
5

J'ai eu le même problème.
Je voulais voir mon diagramme, que j'ai créé le même jour au travail, à la maison. Mais je ne pouvais pas à 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 résoudre le propriétaire.

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

Vous changez d'utilisateur par clic droit sur la base de données, les propriétés, les fichiers, le propriétaire

PhpLou
la source
3

Cela a résolu le problème pour moi. Il définit le propriétaire trouvé dans la section 'fichiers' de la fenêtre des propriétés de la base de données, et est tel que scripté par le studio de gestion.

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

Selon la documentation de sp_changedbowner, cela est désormais obsolète.

Basé sur la réponse d'Israël. La réponse d'Aaron est la variante non obsolète de ceci.

Tim Abell
la source
3

Sélectionnez votre base de données - Clic droit - Sélectionnez Propriétés

Sélectionnez FICHIER sur le côté gauche de la page

Dans la zone PROPRIÉTAIRE, sélectionnez le bouton qui contient trois points (…)

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

Anil Rana
la source
0

Je viens de vivre cela. J'avais lu les suggestions sur cette page, ainsi que les suggestions SQL Authority (ce qui est la même chose) et rien de ce qui précède n'a fonctionné.

En fin de compte, j'ai supprimé le compte et recréé (avec le même nom d'utilisateur / mot de passe). Juste comme ça, tous les problèmes ont disparu.

Malheureusement, cela signifie que je ne sais pas ce qui a mal tourné, donc je ne peux rien partager d'autre.

Dave
la source
0

1.Cliquez droit sur votre base de données, 2.Sélectionnez ensuite les propriétés. 3.Sélectionnez l'option dans les niveaux de compatibilité, choisissez sql 2008 [100] si vous travaillez avec Microsoft sql 2008.

4.Ensuite, sélectionnez le fichier et écrivez (sa) dans la zone de texte du propriétaire

100% fonctionne pour moi.

Jefferson X maçonnique
la source
0

Un moyen plus simple de résoudre ces problèmes serait de cliquer avec le bouton droit de la souris sur le nom de votre base de données, de choisir "Nouvelle requête", de saisir "exec sp_changedbowner 'sa'" et d'exécuter la requête. Alors vous serez prêt à partir.

Lebone Mcdonald
la source
0

vous devez entrer en tant qu'administrateur, cliquez avec le bouton droit sur microsofft sql server management studio et exécutez en tant qu'administrateur

abdelnaser rafat
la source
0

Il suffit de l'exécuter dans l'éditeur de requêtes ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [domaine \ compte];

Nui San
la source
-3

Le vrai problème est que le propriétaire par défaut (dbo) n'a pas du tout de connexion mappée dessus. Lorsque j'ai essayé de mapper la connexion sa au propriétaire de la base de données, j'ai reçu une autre erreur indiquant "Utilisateur, groupe ou rôle 'dbo' existe déjà ... ". Cependant, si vous essayez ce code, il fonctionnera:

EXEC sp_dbcmptlevel 'yourDB', '90';

aller

MODIFIER L'AUTORISATION SUR LA BASE DE DONNÉES :: yourDB TO "yourLogin"

aller

utilisez [yourDB]

aller

EXECUTER AS USER = N'dbo 'REVERT

aller

Vandana
la source
-3

faites un clic droit sur votre base de données, puis sélectionnez les propriétés. sélectionnez l'option dans les niveaux de compatibilité choisissez sql 2005 [90] au lieu de 2008 si vous travaillez avec Microsoft sql 2008. puis sélectionnez le fichier et écrivez (sa) dans la zone de texte du propriétaire. ça fonctionnera probablement

Ezzo Gasmallah
la source