Débutant DBA ici, juste installé dans mon premier emploi DBA et essayant de comprendre comment les choses fonctionnent en dehors d'un environnement de classe. Votre patience est appréciée.
J'essaie de créer des diagrammes pour toutes les bases de données afin que je puisse essayer de comprendre comment les choses sont présentées ici et un problème que je rencontre est que lorsque j'essaie de créer un diagramme pour une base de données en particulier, je ' m obtenant l'erreur suivante:
Impossible d'exécuter en tant que principal de la base de données car le principal "dbo" n'existe pas, ce type de principal ne peut pas être emprunté ou vous n'avez pas l'autorisation. (Microsoft SQL Server, erreur: 15517)
J'ai cherché plus d'informations sur ce problème et il semble que cela soit généralement causé par la suppression du propriétaire de la base de données, mais cette base de données affiche SA as le propriétaire donc ça ne devrait pas être le problème. Je ne suis même pas en mesure de créer un diagramme si je me connecte en tant que sa ...
Je ne sais pas si cela peut avoir quelque chose à voir avec cela, mais cette base de données particulière a été migrée vers un nouveau serveur il y a quelques mois, donc quelque chose peut avoir cassé quand cela a été fait (bien que la base de données soit active et en cours d'utilisation, elle n'est donc pas entièrement cassée) ).
Peut-être qu'il recherche le compte sa de l'ancien serveur et qu'il doit simplement être mis à jour pour utiliser le compte sa sur le serveur actuel?
Edit: Cette base de données peut ne pas avoir de propriétaire après tout. L'exécution d'un clic droit> Propriétés> Fichiers sur la base de données n'affiche aucun propriétaire pour la base de données même si le champ propriétaire sous général le fait.
J'ai essayé de le changer via l'interface graphique et j'ai été informé que le propriétaire du jeu a échoué avec l'erreur suivante:
Dépassement du délai d'expiration de la demande de verrouillage. (Microsoft SQL Server, erreur: 1222)
J'ai aussi essayé le alter authorization ...
et elle ne se termine jamais (ou je l'ai annulée après quelques minutes pour être plus précis). Suis-je trop impatient avec cette déclaration ou est-ce que quelque chose d'autre se passe ici?
Ceci recadre légèrement votre question, mais j'éviterais simplement d'utiliser la fonctionnalité de diagramme de base de données. Il a été obsolète et supprimé de la prochaine version de SSMS (v18):
Les fonctionnalités suivantes ne sont plus disponibles dans SSMS:
- ...
- Diagrammes de base de données
Notez dans les captures d'écran de cet article de blog que la fonctionnalité n'est pas disponible (donc elle n'est pas seulement déconseillée/découragée, mais en fait supprimée du produit).
Pour répondre à votre question comme demandé, cette action GUI utilise le ALTER AUTHORIZATION
commande dans les coulisses, vous étiez donc sur la bonne voie. SSMS n'attendra pas indéfiniment, donc il sort avec cette erreur de temporisation.
Vous devez probablement avoir un accès exclusif à la base de données pour changer de propriétaire. Vous devrez donc définir la base de données en mode UTILISATEUR UNIQUE puis exécuter la commande.
Puisque vous avez mentionné que vous êtes nouveau dans tout cela, je dirai explicitement que vous ne devriez le faire que pendant les temps d'arrêt planifiés! Comme cela déconnectera tous les autres utilisateurs, applications, travaux planifiés, etc.
Essayez ceci pour vérifier le propriétaire de la base de données:
SELECT name AS DB, SUSER_SNAME(owner_sid) AS owner FROM sys.databases
Si le propriétaire n'est pas sa, vous pouvez faire ALTER AUTHORIZATION ou utiliser la commande obsolète sp_changedbowner:
USE [*db*]
GO
EXEC sp_changedbowner 'sa'
GO
Même si elle est obsolète, cette procédure est toujours disponible dans les versions ultérieures et j'ai eu plus de chance avec cette commande pour éviter de mettre la base de données en mode mono-utilisateur.