SORU
18 Mart 2009, ÇARŞAMBA


SQL Server veya bir SQL komut dosyası yürütme durdurma Ara

Bir şekilde hemen SQL server SQL komut dosyası yürütme durdurmak için, "" veya "" komut? çık aradan falan mı var

Ekler yapmaya başlamadan önce bazı doğrulama ve aramaları yapan bir komut dosyası var, ve eğer doğrulamalarını veya aramaları başarısız olursa durdurmak istiyorum.

CEVAP
29 NİSAN 2009, ÇARŞAMBA


raiserror yöntemi

raiserror('Oh no a fatal error', 20, -1) with log

Bu bağlantı, böylece çalışan senaryonun kalanı durdurma sonlandırılacak.

Bu ifadeler bile, örneğin çalışır.

print 'hi'
go
raiserror('Oh no a fatal error', 20, -1) with log
go
print 'ho'

Sana verecek çıktı:

hi
Msg 2745, Level 16, State 2, Line 1
Process ID 51 has raised user error 50000, severity 20. SQL Server is terminating this process.
Msg 50000, Level 20, State 1, Line 1
Oh no a fatal error
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.

Dikkat edin 'ho' değil basılmış.

UYARILAR:

  • Bu ise yönetici olarak (''rolü) sysadmin, ve de hiçbir veritabanı bağlantısı ile başbaşa bırakır. oturum gösterir.
  • Eğer yönetici olarak oturum değilse, RAİSEERROR() çağrısı başarısız olurve komut dosyası yürütme devam edecektir.
  • Sqlcmd.exe çıkış kodu ile çağrıldığında 2745 bildirdi.

Referans: http://www.mydatabasesupport.com/forums/ms-sqlserver/174037-sql-server-2000-abort-whole-script.html#post761334

Noexec yöntemi

İfadeleri ile çalışan bir başka yöntem set noexec on. Bu senaryonun kalanı üzerinden atlanması neden olur. Bağlantı sona erdirmek değil, ama tüm komutları çalıştırır önce noexec tekrar kapatmanız gerekir.

Örnek:

print 'hi'
go

print 'Fatal error, script will not continue!'
set noexec on

print 'ho'
go

-- last line of the script
set noexec off -- Turn execution back on; only needed in SSMS, so as to be able 
               -- to run this script again in the same session.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmperorTigerstar

    EmperorTiger

    14 EYLÜL 2009
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008