2011-06-22 2 views
4

Je comprends que vous ne pouvez pas simplement supprimer un schéma de serveur SQL, vous devez d'abord supprimer tous les objets qui y sont contenus. J'ai trouvé ce stored proc qui effectue la tâche de laisser tomber tous les objets, puis le schéma lui-même.drop schéma SQL Server

Y a-t-il vraiment un moyen plus simple de supprimer un schéma? Idéalement, je voudrais trouver un moyen de le faire sans utiliser un proc stocké.

De plus, il semble que le processus stocké provoquera des erreurs si le nom de schéma fourni n'existe pas. Je voudrais simplement ne rien faire à la place. Je suppose que cela est tout simplement une question de mettre cette pseudo-code en haut du script

IF @SchemaName NOT EXISTS 
    QUIT 

Quelqu'un peut-il convertir en langage SQL Server comprendra?

+0

Je ne suis pas un vrai clavier si brève réponse. Je pense que vous pouvez transférer des objets à différents schémas, puis laisser tomber le schéma – Ash

Répondre

2

Vous devez supprimer tous les objets de la schame avant de la déposer ou migrer tous les objets vers un nouveau schéma. Il n'y a pas d'option « générique » pour Pour quitter une procédure stockée soit

avant tout traitement ultérieur ...

IF SCHEMA_ID(@SchemaName) IS NULL 
    RETURN 
0
if exists(select * from sys.schemas where name = @SchemaName) 
begin 
    -- Your work 
end 
0

Vous devez supprimer tous les objets avant de laisser tomber le schéma. Pour vérifier si un schéma existe:

IF NOT EXISTS (select SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME='YOUR DB NAME HERE' and [email protected]) 
BEGIN 
    -- Do some processing... 
    return 
END 
4

Ce qui suit en haut du script devrait aider:

IF SCHEMA_ID(@SchemaName) IS NULL 
    RETURN 

SCHEMA_ID renvoie l'ID de schéma associé à un nom de schéma et RETURN sort sans condition d'un requête ou procédure.

Questions connexes