Le principal de la base de données possède un schéma dans la base de données et ne peut pas être supprimé
28
J'essaie de supprimer un principal de la base de données, mais je ne le peux pas car il possède un schéma. Cependant, lorsque je modifie l'utilisateur, la case pour décocher les schémas est bleue et inamovible. Comment supprimer le principal de ces schémas?
alterauthorizationonschema::YourSchemaName
to dbo
go
dropuser TheUserYouWantToDelete
go
Vous ne pouvez pas supprimer un principal qui est un propriétaire de schéma, donc les ALTER AUTHORZATIONmodifications du schéma appartenant (j'ai utilisé YourSchemaName, mais évidemment le remplacer par le schéma appartenant à votre base de données) à dbo(de même, vous pouvez changer la propriété en quel principal dont vous avez besoin dans votre environnement). Cela vous permettra de supprimer l'utilisateur propriétaire du schéma (par exemple à des fins que j'ai utilisées TheUserYouWantToDelete, mais ce sera le non-propriétaire que vous souhaitez supprimer).
D'accord, donc cela a fonctionné. Je suis cependant un peu confus quant à la raison. Pourquoi dois-je autoriser le schéma sur un autre schéma? Peut-être que je dois revoir les schémas ...
rsteckly
1
@rsteckly Simplified, autorisation = propriété. Si vous pouviez supprimer l'utilisateur propriétaire du schéma, le schéma ne serait pas valide, car le propriétaire n'existe plus. Imaginez que vous puissiez supprimer un client qui a passé une commande. Que signifie l'ID client dans le tableau Commandes s'il n'y a plus de client vers lequel il pointe? Où dois-je expédier la commande?
Aaron Bertrand
Désolé, mon exemple n'a pas été bien expliqué. Nous ne modifions pas l'autorisation au dboschéma, nous modifions l'autorisation au dboprincipal. Cela aurait pu être n'importe quel principal de la base de données.
Thomas Stringer
30
La méthode T-SQL fonctionne. Grâce à
http://zarez.net/?p=179,
j'ai trouvé le moyen SSMS de le faire (UI).
Pour changer le propriétaire du schéma à partir de Sql Server Management Studio:
Expand your database-> Security -> Schemas
Dans les détails de l'explorateur d'objets, vous pouvez voir une liste des schémas et des propriétaires:
Si vous ne savez pas quel (s) schéma (s) l'utilisateur possède, vérifiez les propriétés de l'utilisateur.
Ouvrez les propriétés du schéma que l'utilisateur possède et cliquez sur "Rechercher" pour trouver un nouveau propriétaire. Si vous ne connaissez pas le nouveau propriétaire, vous pouvez en rechercher un.
Properites -> Search ->Browse
et vous pouvez changer le propriétaire du schéma en dbo (ou celui qui est le plus approprié).
dbo
schéma, nous modifions l'autorisation audbo
principal. Cela aurait pu être n'importe quel principal de la base de données.La méthode T-SQL fonctionne. Grâce à http://zarez.net/?p=179, j'ai trouvé le moyen SSMS de le faire (UI).
Pour changer le propriétaire du schéma à partir de Sql Server Management Studio:
Dans les détails de l'explorateur d'objets, vous pouvez voir une liste des schémas et des propriétaires:
Si vous ne savez pas quel (s) schéma (s) l'utilisateur possède, vérifiez les propriétés de l'utilisateur.
Ouvrez les propriétés du schéma que l'utilisateur possède et cliquez sur "Rechercher" pour trouver un nouveau propriétaire. Si vous ne connaissez pas le nouveau propriétaire, vous pouvez en rechercher un.
et vous pouvez changer le propriétaire du schéma en dbo (ou celui qui est le plus approprié).
la source