sql >> Database >  >> RDS >> Sqlserver

SQL Server:hoe kan ik een reeks batches afbreken in Query Analyzer?

Hier is hoe ik het zou doen:

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

De "noexec"-modus plaatst SSMS in een staat waarin het alleen de T-SQL compileert en het niet daadwerkelijk uitvoert. Het is vergelijkbaar met het per ongeluk indrukken van de werkbalkknop Parseren (Ctrl+F5) in plaats van Uitvoeren (F5).

Vergeet niet om noexec weer uit te zetten aan het einde van je script. Anders raken gebruikers in de war door permanente "Opdracht(en) succesvol voltooid." berichten.

Ik gebruik de controle tegen @@error in de volgende batch in plaats van TRY CATCH-blokken te gebruiken. Het gebruik van @@error in de volgende batch zal compileerfouten opvangen, zoals "tabel bestaat niet".

Naast de noexec-modus schakel ik ook de nocount-modus in. Met noexec-modus aan en nocount uit, rapporteren uw zoekopdrachten nog steeds een bericht "(0 rij(en) beïnvloed)". Het bericht rapporteert altijd nul rijen, omdat u zich in de noexec-modus bevindt. Als u nocount inschakelt, worden deze berichten echter onderdrukt.

Houd er ook rekening mee dat als u SQL Server 2005 uitvoert, de opdracht die u overslaat, nog steeds foutmeldingen kan geven als deze verwijst naar een tabel die niet bestaat en de opdracht als de eerste opdracht in de batch. Het forceren van het commando om het tweede commando in de batch te zijn met een nep Print statement kan dit onderdrukken. Zie MS Bug #569263 voor meer details.



  1. Online schema-upgrade in MySQL Galera-cluster met behulp van de RSU-methode

  2. Hoe bescherm ik mijn forum tegen spam?

  3. Projectlinks werken niet op Wamp Server

  4. 5 veel voorkomende SQL-query ontwerp fouten te vermijden ten koste van alles