Düzeltme: Bir bir Transact-SQL toplu işindeki RAISERROR deyimi için BIR çağrı bir SQLAgent işinin başarısız olmasına ve SQL Server'da çıktı kaybetmenize neden olabilir

Makale çevirileri Makale çevirileri
Makale numarası: 309802 - Bu makalenin geçerli olduğu ürünleri görün.
Önemli Bu makale, kayıt defterini düzenlemeyle ilgili bilgi içerir. Kayıt defterini değiştirmeden önce yedeklemeyi unutmayın. Bir sorun çıkması durumunda kayıt defterini nasıl geri yükleyeceğinizi bildiğinizden emin olun. Kayıt defterini yedekleme, geri yükleme ve değiştirme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makaleyi inceleyin:
256986Microsoft Windows Kayıt Defteri'nin Açıklaması
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

SQLAgent iş adım tipi Transact-SQL komut dosyasını ve zaman <a0>Command</a0> alanında, yeni proje adım-< SQL Server Örneği Adı > ifadeleri iletişim kutusu arama bir Transact-SQL RAISERROR deyimi ile 11, düzey veya ILE LOG seçeneği olmadan daha yüksek önem derecesi, başarısız bir sonucu ile iş sonlandırılacak. Ancak, tüm sonra RAISERROR deyimi Transact-SQL deyimlerini çalıştırın çalışır call olsa da, tüm çıktılar bastırılır. Bu nedenle, çıktı için ifadeleri sonra RAISERROR oluşturulan deyimi çalıştırır. Bu, gerçekte ne işe ifadeleri oldu hakkında karışıklığa neden olabilir. Gerçekte ne çalıştırdığınız görmek istiyorsanız, SQL Profiler izlemesi bakmak gerekir. SQL Profiler izlemesi hakkında daha fazla bilgi için SQL Server Books Online'da "SQL Profiler" konusuna bakın.

Çözüm

Uyarı Kayıt Defteri Düzenleyicisi'ni veya başka bir yöntemi kullanarak kayıt defterini hatalı olarak değiştirirseniz önemli sorunlar oluşabilir. Bu sorunlar, işletim sisteminizi yeniden yüklemenizi gerektirebilir. Microsoft bu sorunların çözülebileceğini garanti etmemektedir. Kayıt defterini kendi sorumluluğunuzda değiştiriniz.

Hizmet paketi bilgileri

Bu sorunu gidermek için <a0></a0>, Microsoft SQL Server 2000 için en son hizmet paketini edinin. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
290211En son SQL Server 2000 hizmet paketi nasıl elde edilir

Düzeltme bilgileri

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   Date         Time   Version         Size       File name
   -------------------------------------------------------------------
   31-May-2003  05:15  2000.80.818.0      78,400  Console.exe
   27-Oct-2003  14:51  2000.80.873.0     315,968  Custtask.dll
   30-Jan-2004  02:59  2000.80.911.0      33,340  Dbmslpcn.dll
   24-Apr-2003  12:42                    786,432  Distmdl.ldf
   24-Apr-2003  12:42                  2,359,296  Distmdl.mdf
   29-Jan-2003  12:25                        180  Drop_repl_hotfix.sql
   11-Sep-2003  13:56  2000.80.859.0   1,905,216  Dtspkg.dll
   26-Aug-2003  06:46  2000.80.854.0     528,960  Dtspump.dll
   23-Jun-2003  09:10  2000.80.837.0   1,557,052  Dtsui.dll
   23-Jun-2003  09:10  2000.80.837.0     639,552  Dtswiz.dll
   23-Apr-2003  13:21                    747,927  Instdist.sql
   02-May-2003  12:26                      1,581  Inst_repl_hotfix.sql
   30-Jan-2004  02:59  2000.80.911.0      90,692  Msgprox.dll
   31-Mar-2003  12:37                      1,873  Odsole.sql
   30-Jan-2004  02:59  2000.80.911.0      62,024  Odsole70.dll
   30-Jan-2004  02:59  2000.80.911.0      25,144  Opends60.dll
   30-Jan-2004  02:59  2000.80.911.0      57,904  Osql.exe
   02-Apr-2003  09:45  2000.80.797.0     279,104  Pfutil80.dll
   04-Aug-2003  04:47                    550,780  Procsyst.sql
   11-Sep-2003  11:07                     12,305  Qfe469315.sql
   22-May-2003  09:27                     19,195  Qfe469571.sql
   29-Jan-2004  11:47                  1,090,380  Replmerg.sql
   30-Jan-2004  02:59  2000.80.911.0     221,768  Replprov.dll
   30-Jan-2004  02:59  2000.80.911.0     307,784  Replrec.dll
   29-Jan-2004  09:54  2000.80.911.0     159,813  Replres.rll
   05-Sep-2003  10:30                  1,087,150  Replsys.sql
   13-Aug-2003  02:58                    986,603  Repltran.sql
   30-Jan-2004  02:59  2000.80.911.0     287,304  Rinitcom.dll
   30-Jan-2004  02:59  2000.80.911.0      57,916  Semnt.dll
   29-Jul-2003  06:43  2000.80.819.0     492,096  Semobj.dll
   31-May-2003  04:57  2000.80.818.0     172,032  Semobj.rll
   02-Jan-2004  06:12  2000.80.904.0      53,832  Snapshot.exe
   09-Dec-2003  06:37                    117,834  Sp3_serv_uni.sql
   04-Feb-2004  11:16  2000.80.913.0      28,672  Sqlagent.dll
   04-Feb-2004  11:17  2000.80.913.0     311,872  Sqlagent.exe
   07-Jan-2004  09:08  2000.80.905.0     126,976  Sqlakw32.dll
   30-Jan-2004  02:59  2000.80.911.0   4,215,360  Sqldmo.dll
   07-Apr-2003  04:14                     25,172  Sqldumper.exe
   29-Jan-2004  09:47  2000.80.911.0      28,672  Sqlevn70.rll
   30-Jan-2004  02:59  2000.80.911.0     180,792  Sqlmap70.dll
   02-Sep-2003  13:26  2000.80.857.0     188,992  Sqlmmc.dll
   02-Sep-2003  09:33  2000.80.857.0     479,232  Sqlmmc.rll
   21-Oct-2003  10:38  2000.80.871.0     401,984  Sqlqry.dll
   30-Jan-2004  02:59  2000.80.911.0      57,920  Sqlrepss.dll
   04-Feb-2004  11:18  2000.80.913.0   7,610,449  Sqlservr.exe
   30-Jan-2004  02:59  2000.80.911.0     590,396  Sqlsort.dll
   30-Jan-2004  02:59  2000.80.911.0      45,644  Sqlvdi.dll
   30-Jan-2004  02:59  2000.80.911.0     106,588  Sqsrvres.dll
   30-Jan-2004  02:59  2000.80.911.0      33,340  Ssmslpcn.dll
   30-Jan-2004  02:59  2000.80.911.0      82,492  Ssnetlib.dll
   30-Jan-2004  02:59  2000.80.911.0      25,148  Ssnmpn70.dll
   27-Oct-2003  14:51  2000.80.873.0     123,456  Stardds.dll
   30-Jan-2004  02:59  2000.80.911.0     158,240  Svrnetcn.dll
   30-Jan-2004  02:59  2000.80.911.0      76,416  Svrnetcn.exe
   30-Apr-2003  10:22  2000.80.816.0      45,132  Ums.dll     
   30-Jan-2004  02:59  2000.80.911.0      98,872  Xpweb70.dll
Not Dosya bağımlılıkları nedeniyle, en son düzeltme veya özellik, bu dosyaları içeren ek dosyalar da içerebilir.

Bu düzeltmeyi uyguladıktan sonra yeni bir kayıt defteri DWORD değerini aşağıdaki kayıt defteri alt anahtarlarından birinde TruncateJobResultOnError adlı SQL Server Agent davranış tanımlanır:
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQLServer\SQLServerAgent (default instance)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\SQLServerAgent (named instance)
Yeni davranışını etkinleştirmek için <a0></a0>, bu TruncateJobResultOnError değeri 0 olarak ayarlayın. SQL Server Agent yeniden başlattıktan sonra işlemin sonuçlarını raiserror ifadeler tarafından artık fazlalıklar atılacak. Eski davranışı geri yüklemek için <a0></a0>, TruncateJobResultOnError değeri 1 olarak ayarlayabilirsiniz. Bu, değer ayarlanmamışsa varsayılan değerdir.

Uyarı Hata: durum sonsuz bir döngüye sahip bir komut dosyası olduğunda, 0 değeri değişikliğin etkili bir yaklaşım olmayabilir. Aracı, sürekli olarak hata günlükleri ve disk alanının tümünü kullanabilir.

Pratik Çözüm

Bu soruna geçici bir çözüm için <a0></a0>, gereksinimlerinize göre aşağıdaki yöntemlerden birini kullanın.

Yöntem 1

Kullanmak istediğiniz hangi önem düzeyini belirleme
  • Bilgi verme amaçlı bir RAISERROR deyimi aramak istiyorsanız, hata iletisi için önem düzeyi 10 kullanmanız gerekir. 10 'Un BIR önem düzeyi, çünkü kullanıcının yanlış bilgi bir sorun oluştuğunu belirten bir bilgi iletisi temsil eder.
  • Toplu işlem, bir RAISERROR deyimi çağrıldığında durdurmak istiyorsanız, hata iletisi için 20 veya daha yüksek önem düzeyini kullanın ve RAISERROR deyimi ILE LOG</a1> seçeneğiyle eklemeniz gerekir. Bunu yaptığınızda, RAISERROR deyimi çağrısı iptal sonra çalıştırmak için beklenen Transact-SQL deyimleri ve tüm açık hareketler otomatik olarak geri alınır.

    Önem derecelerine hakkında daha fazla bilgi için SQL Server Books Online'da "Hata iletisi önem düzeylerini" konusuna bakın.

Yöntem 2

Bir komut dosyası <a0>Proje</a0> adımda kullanın.
Tüm komut dosyası RAISERROR deyimi ne sıklıkta verilir ne olursa olsun, yürütmek istediğiniz ve 20'den daha az önem düzeyidir, iş adımda bir komut dosyası kullanabilirsiniz. Bunu yapmak için şu adımları izleyin:
  1. Komut dosyasını bir dosyaya kaydedin.
  2. Bir SQL Server Agent CmdExec iş adımla oluşturmak ve komut dosyası adımda çalıştırın.

    Işte bir örnek:
    osql -E -i c:\script.sql
SQL Query Analyzer'ı kullanarak toplu iş çalıştırırsanız, aldığınız osql yardımcı programını kullanarak toplu iş çalıştırırsanız, bir komut dosyası kullandığınızda, aynı sonucu alırsınız.

20 Veya daha yüksek WITH LOG seçeneğiyle önem düzeyine sahip bir RAISERROR deyimi arama bağlantıyı kapatın ve RAISERROR çağrısı atlandı sonra çalıştırmak için beklenen ifadeleri neden olur.

Durum

Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır. Bu sorun ilk olarak Microsoft SQL Server 2000 Service Pack 4'te giderilmiştir.

Daha fazla bilgi

Önem düzeyini hata iletisinde RAISERROR deyimi, SQL Server Agent iş adım 2'den 9'a, hatalı bir sonuç ile son adım, iş ve iş. Ancak, çıktı RAISERROR deyimi içinde toplu sonra çalışan raporları için bastırılmış değil.

RAISERROR, hatanın önem düzeyi iletisi, 10, 1 veya 0, iş ifadesidir ve iş adım başarılı bir şekilde çalışır. Bu nedenle, bu makalenin "Belirtiler" bölümünde açıklanan sorun oluşmaz.

SQL Query Analyzer'ı, isql yardımcı programını veya osql yardımcı programını kullanarak aynı SQL komut dosyası çalıştırılırsa, SQL Server Agent işlem başarısız olsa da, beklediğiniz sonucu alırsınız.

Davranışı Yeniden Oluşturma Adımları

  1. Yeni bir SQL Server Agent iş, bir Komut dosyası Transact-SQL (TSQL) iş adımla oluşturun.
  2. Type or Paste the following Transact-SQL Statement in the Command Box.
       select convert(varchar(50), @@version) as ' SQL Server Version Number'
       raiserror('Test raiserror with severity 10', 10, 1)
       select id, convert(varchar(12), name) as 'Table Name' 
        from sysobjects where id < 4
  3. Komut dosyası Transact-SQL (TSQL) komut seçenekleri bölümünün altında <a1>Gelişmiş</a1> sekmesinde, C:\Raiserror.logÇıkış dosyası kutusunda yazın.
  4. Append seçeneği seçmek için tıklatın.
  5. Uygula ' yı tıklatın ve sonra da Tamam ' ı tıklatın.
  6. Uygula ' yı tıklatın ve sonra da Tamam ' ı tıklatın.
  7. SQL Server Enterprise Manager'da, oluşturulmuş SQL Server Agent işini sağ tıklatın ve İş Başlat</a1>'ı tıklatın.
  8. SQL Profiler izleme başlatın.
  9. For The Same SQL Server Agent Job Step, Change the Severity Level to 11 by replacing the Command in the Job Step As follows.
       select convert(varchar(50), @@version) as ' SQL Server Version Number'
       raiserror('Test raiserror with severity 11', 11, 1)
       select id, convert(varchar(12), name) as 'Table Name' 
        from sysobjects where id < 4
  10. Işi yeniden çalıştırın.
Işte raiserror.log dosyasında oluşturulan sonuç.
Job 'raiserror' : Step 1, 'test raiserror' : Began Executing 2002-07-23 15:48:59

SQL Server Version Number                         
--------------------------------------------------
Microsoft SQL Server  2000 - 8.00.534 (Intel x86) 

(1 rows(s) affected)

Test raiserror with severity 10 [SQLSTATE 01000]
id          Table Name  
----------- ------------
1           sysobjects
2           sysindexes
3           syscolumns

(3 rows(s) affected)

Job 'raiserror' : Step 1, 'test raiserror' : Began Executing 2002-07-23 15:49:17

SQL Server Version Number                         
--------------------------------------------------
Microsoft SQL Server  2000 - 8.00.534 (Intel x86) 

(1 rows(s) affected)

Msg 50000, Sev 11: Test raiserror with severity 11 [SQLSTATE 42000]

Bu raiserror.log dosyasında 10 önem düzeyi, iş tüm çıktısı, çıktı dosyasında yazdırıldığı ve projenin başarılı bir sonuç sahipti olduğunu görebilirsiniz.

Bu raiserror.log dosyasında 11 önem düzeyi, yalnızca ilk iki ifadeleri çıktısı, çıktı dosyasına yazdırıldığı ve işi başarısız olan bir sonuç sahipti olduğunu görebilirsiniz. Ayrıca RAISERROR biçiminde bir hata iletisi yerine bir önem düzeyi 10 bilgilendirici bir biçimde iletisidir. Izleme dosyası ifadeleri başarıyla çalıştırıldığını gösterir.

2 Ile 9 arasında bir sayı için önem düzeyini değiştirme, çıktı değil bastırılmış ve iş sonucu, iş ve adım için başarısız olur. Ileti biçimi, bir hata iletisi biçimi 11 veya yüksek önem düzeyi için aynı olacaktır.

Özellikler

Makale numarası: 309802 - Last Review: 2 Kasım 2007 Cuma - Gözden geçirme: 5.5
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Anahtar Kelimeler: 
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbfix kbbug kbpending KB309802 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:309802

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com