Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Impossible de supprimer le schéma , car il n'existe pas ou vous n'avez pas l'autorisation. - Tutoriel SQL Server / TSQL Partie 29

Scénario :

Vous travaillez pour Mortgage Company en tant que développeur SQL Server. Vous avez cette exigence pour préparer le script SQL pour supprimer le schéma. Vous utilisez
Drop Schema SchemeName
instruction dans l'instance SQL Server de développement et obtenez l'erreur ci-dessous.

Impossible de supprimer le schéma '', car il n'existe pas ou vous n'avez pas l'autorisation.

Quelles seraient vos prochaines étapes ?

Solution :

Il pourrait y avoir quelques raisons pour l'erreur ci-dessus. Premièrement, vous n'avez vraiment pas la permission de supprimer le schéma. Vous avez vérifié auprès de l'administrateur de base de données et il a confirmé que vous disposiez de toutes les autorisations nécessaires pour effectuer ce changement. Maintenant, vous l'avez examiné plus en détail et avez remarqué qu'il existe des objets tels que des tables, des vues, etc. qui utilisent ce schéma.
À partir de là, vous pouvez proposer deux solutions.
1) Supprimez tous les objets Lié au schéma, puis supprimez le schéma (Il pourrait y avoir des scénarios où quelqu'un utilisait ce schéma et ces objets. Maintenant, personne n'a plus besoin d'utiliser le schéma et les objets qui y sont liés. Vous en discuterez donc avec votre équipe et s'ils disent cela, préparez le script de dépôt pour les objets et le schéma. Vous peut utiliser les fenêtres de détail de l'explorateur d'objets pour générer des scripts de dépôt d'objets.
2) Vous souhaitez conserver les objets et les déplacer vers un schéma différent. Peut-être dbo ou tout nouveau schéma. Après le transfert les objets, vous souhaitez supprimer le schéma.
La requête ci-dessous peut être utilisée pour générer un script pour le transfert d'objets.
Déclarez @SourceSchema VARCHAR(100)Déclarez @DestinationSchema VARCHAR(100)SET @SourceSchema='TB'SET @DestinationSchema='dbo'Select 'Alter Schema ['+@DestinationSchema+'] Transfer '+@SourceSchema+'.['+name+']' 
depuis sys.objectswhere schema_name(schema_id)=@SourceSchema
 
 
 Copiez les scripts générés puis exécutez-les dans une base de données. Une fois cela fait, vous pouvez maintenant supprimer le schéma en utilisant Drop Schema SchemaName Déclaration.