Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server:Как да прекъсна серия от партиди в Query Analyzer?

Ето как бих го направил:

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

Режимът "noexec" поставя SSMS в състояние, в което той просто компилира T-SQL и всъщност не го изпълнява. Подобно е на случайно натискане на бутона на лентата с инструменти Parse (Ctrl+F5) вместо Execute (F5).

Не забравяйте да изключите noexec в края на вашия скрипт. В противен случай потребителите ще се объркат от постоянните „Командите са завършени успешно“. съобщения.

Използвам проверката срещу @@error в следващата партида, вместо да използвам блокове TRY CATCH. Използването на @@error в следващата група ще хване грешки при компилиране, като "таблицата не съществува".

В допълнение към режима noexec, аз също превключвам режима nocount. При включен режим noexec и изключен nocount, вашите заявки ще продължат да отчитат съобщение „(засегнати 0 реда(а))“. Съобщението винаги отчита нула редове, защото сте в режим noexec. Включването на nocount обаче потиска тези съобщения.

Също така имайте предвид, че ако изпълнявате SQL Server 2005, командата, която пропускате, все още може да дава съобщения за грешка, ако препраща към таблица, която не съществува, и командата, ако е първата команда в пакета. Принуждаването на командата да бъде втората команда в пакета с фалшив оператор Print може да потисне това. Вижте MS грешка #569263 за повече подробности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пропускане на първия ред в SQL Server 2005?

  2. Неуспешно влизане за потребител при посочване на порт по подразбиране

  3. Заменете стойността на реда с празен низ, ако се дублира

  4. Използвайте @@IDENTITY, за да върнете последно въведената стойност на самоличността в SQL Server

  5. Какъв е най-добрият начин да се справите с DBNull