sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:Jak zrušit sérii dávek v Query Analyzer?

Zde je návod, jak bych to udělal:

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

Režim "noexec" uvádí, že SSMS je stav, kdy pouze zkompiluje T-SQL a ve skutečnosti jej nespustí. Je to podobné, jako když nechtěně stisknete tlačítko panelu nástrojů Parse (Ctrl+F5) místo Execute (F5).

Na konci skriptu nezapomeňte vypnout noexec. V opačném případě budou uživatelé zmateni trvalým "Příkaz(y) úspěšně dokončeny." zprávy.

Používám kontrolu proti chybě @@ v následné dávce namísto použití bloků TRY CATCH. Použití @@chyby v další dávce zachytí chyby kompilace, například "tabulka neexistuje".

Kromě režimu noexec přepínám i režim nocount. Se zapnutým režimem noexec a vypnutým nocount budou vaše dotazy stále hlásit zprávu „(0 ovlivněných řádků)“. Zpráva vždy hlásí nula řádků, protože jste v režimu noexec. Zapnutí nocount však tyto zprávy potlačí.

Všimněte si také, že při spuštění SQL Server 2005 může přeskakovaný příkaz stále zobrazovat chybové zprávy, pokud odkazuje na tabulku, která neexistuje, a příkaz, pokud je prvním příkazem v dávce. Vynucení toho, aby byl příkaz druhým příkazem v dávce pomocí falešného příkazu Print, to může potlačit. Viz Chyba MS č. 569263 pro více podrobností.



  1. Jak funguje SQLite Rtrim()

  2. Jak mohu vynechat připojení k těmto #temp (výchozí data) a další tabulce?

  3. PostgreSQL běží pomalu? Tipy a triky, jak se dostat ke zdroji

  4. Jak vygenerovat kalendářní tabulku s datem začátku měsíce a datem konce měsíce