Oto jak bym to zrobił:
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
Tryb „noexec” oznacza, że SSMS jest stanem, w którym po prostu kompiluje T-SQL i nie wykonuje go w rzeczywistości. Jest to podobne do przypadkowego naciśnięcia przycisku Parse na pasku narzędzi (Ctrl+F5) zamiast Wykonaj (F5).
Nie zapomnij wyłączyć noexec na końcu skryptu. W przeciwnym razie użytkownicy będą zdezorientowani stałymi „Poleceniami ukończonymi pomyślnie”. wiadomości.
Używam sprawdzenia przeciwko @@error w kolejnej partii zamiast używać bloków TRY CATCH. Użycie @@error w następnej partii wykryje błędy kompilacji, takie jak „tabela nie istnieje”.
Oprócz trybu noexec przełączam również tryb nocount. Gdy tryb noexec jest włączony i wyłączony, zapytania nadal będą zgłaszać komunikat „(0 wierszy, których dotyczy problem)”. Wiadomość zawsze zgłasza zero wierszy, ponieważ jesteś w trybie noexec. Jednak włączenie funkcji nocount powoduje wyłączenie tych wiadomości.
Należy również zauważyć, że w przypadku uruchamiania programu SQL Server 2005 polecenie, które pomijasz, może nadal generować komunikaty o błędach, jeśli odwołuje się do tabeli, która nie istnieje, oraz polecenie, jeśli jest to pierwsze polecenie w partii. Wymuszenie, aby polecenie było drugim poleceniem w partii z fałszywą instrukcją Print, może to pominąć. Zobacz Błąd MS #569263 po więcej szczegółów.