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

SQL Server :Comment abandonner une série de batchs dans l'Analyseur de requêtes ?

Voici comment je procéderais :

PRINT 'This runs'
go

SELECT 0/0, 'This causes an error'
go
if (@@error <> 0)
    Begin
    set nocount on
    set noexec on
    End
GO

PRINT 'This should not run'
go

set noexec off
set nocount off
GO

Le mode "noexec" met SSMS dans un état où il compile simplement le T-SQL et ne l'exécute pas réellement. Cela revient à appuyer accidentellement sur le bouton de la barre d'outils Analyser (Ctrl+F5) au lieu d'exécuter (F5).

N'oubliez pas de désactiver noexec à la fin de votre script. Sinon, les utilisateurs seront confus par des "commandes terminées avec succès" permanentes. messages.

J'utilise la vérification contre @@error dans le lot suivant au lieu d'utiliser les blocs TRY CATCH. L'utilisation de @@error dans le lot suivant interceptera les erreurs de compilation, comme "la table n'existe pas".

En plus du mode noexec, je bascule également le mode nocount. Avec le mode noexec activé et nocount désactivé, vos requêtes rapporteront toujours un message "(0 ligne(s) affectée(s))". Le message signale toujours zéro ligne, car vous êtes en mode noexec. Cependant, l'activation de nocount supprime ces messages.

Notez également que si vous exécutez SQL Server 2005, la commande que vous ignorez peut toujours donner des messages d'erreur si elle fait référence à une table qui n'existe pas et la commande est la première commande du lot. Forcer la commande à être la deuxième commande du lot avec une fausse instruction Print peut supprimer cela. Voir Bogue MS #569263 pour plus de détails.