Kh?c ph?c: M?t cu?c g?i đ?n m?t tuyên b? RAISERROR trong m?t lô Transact-SQL có th? gây ra m?t công vi?c SQLAgent th?t b?i và b? m?t đ?u ra trong SQL Server

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 309802 - Xem s?n ph?m mà bài này áp d?ng vào.
Quan tr?ng Bài vi?t này ch?a thông tin v? làm th? nào đ? thay đ?i s? đăng k?. H?y ch?c ch?n đ? sao lưu s? đăng k? trư?c khi b?n s?a đ?i nó. H?y ch?c ch?n r?ng b?n bi?t làm th? nào đ? khôi ph?c s? đăng k? n?u m?t v?n đ? x?y ra. Đ? bi?t thêm chi ti?t v? làm th? nào đ? sao lưu, khôi ph?c và s?a đ?i registry, nh?p vào s? bài vi?t sau đây đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
256986 Mô t? c?a Microsoft Windows registry
Bung t?t c? | Thu g?n t?t c?

? Trang này

TRI?U CH?NG

Khi m?t SQLAgent công vi?c bư?c lo?i là Transact-SQL k?ch b?n, và khi nh?ng đi?u kho?n trong các Ch? huy l?nh v?c c?a phiên b?n m?i Công vi?c bư?c-<sql server="" instance="" name=""></sql> h?p tho?i g?i m?t tuyên b? Transact-SQL RAISERROR v?i m?t m?c đ? nghiêm tr?ng c?p 11 ho?c cao hơn mà không có tùy ch?n v?i đăng nh?p, công vi?c s? k?t thúc v?i m?t k?t qu? không thành công. Tuy nhiên, m?c dù t?t c? nh?ng đi?u kho?n Transact-SQL ch?y sau khi tuyên b? RAISERROR g?i ch?y, t?t c? các đ?u ra b? đàn áp. V? v?y, không có đ?u ra đư?c t?o ra cho nh?ng đi?u kho?n sau khi RAISERROR tuyên b? ch?y. Đi?u này th?c s? có th? gây nh?m l?n v? nh?ng g? đ? x?y ra v?i các phát bi?u trong m?t công vi?c. B?n ph?i xem xét m?t d?u v?t SQL Profiler n?u b?n mu?n xem nh?ng g? th?c s? ch?y. Đ? bi?t thêm chi ti?t v? m?t d?u v?t SQL Profiler, xem các "SQL Profiler" ch? đ? trong SQL Server sách tr?c tuy?n.

GI?I PHÁP

C?nh báo V?n đ? nghiêm tr?ng có th? x?y ra n?u b?n s?a đ?i registry không chính xác b?ng cách s? d?ng k? biên so?n ho?c b?ng cách s? d?ng m?t phương pháp. Nh?ng v?n đ? này có th? yêu c?u b?n cài đ?t l?i h? đi?u hành c?a b?n. Microsoft không th? đ?m b?o r?ng nh?ng v?n đ? này có th? đư?c gi?i quy?t. S?a đ?i registry nguy cơ c?a riêng b?n.

D?ch v? gói thông tin

Đ? gi?i quy?t v?n đ? này, có đư?c gói d?ch v? m?i nh?t cho Microsoft SQL Server 2000. Đ? bi?t thêm chi ti?t, nh?p vào s? bài vi?t sau đây đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
290211 Làm th? nào đ? có đư?c SQL Server 2000 service pack m?i nh?t

Thông tin hotfix

Phiên b?n ti?ng Anh c?a hotfix này có các thu?c tính t?p (ho?c sau này t?p tin thu?c tính) mà đư?c li?t kê trong b?ng sau. Ngày tháng và th?i gian cho nh?ng t?p tin đư?c li?t kê trong gi? ph?i h?p qu?c t? (UTC). Khi b?n xem chi tieát taäp tin, nó đư?c chuy?n đ?i thành gi? c?c b?. Đ? bi?t s? khác nhau gi?a UTC và local time, s? d?ng các Múi gi? th? công c? ngày và gi? trong Pa-nen đi?u khi?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
Lưu ? V? các t?p ph? thu?c, g?n đây nh?t hotfix hay tính năng có ch?a các t?p tin c?ng có th? ch?a thêm t?p tin.

Sau khi b?n áp d?ng hotfix này, SQL Server đ?i l? hành vi đư?c xác đ?nh b?i m?t cơ quan đăng k? m?i giá tr? DWORD tên là TruncateJobResultOnError trong m?t subkeys cơ quan đăng k? sau đây:
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQLServer\SQLServerAgent (trư?ng h?p m?c đ?nh)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instancename>\SQLServerAgent (đư?c đ?t tên ví d?)</instancename>
Đ? kích ho?t các hành vi m?i, đ?t giá tr? TruncateJobResultOnError này v? 0. Sau khi b?n kh?i đ?ng l?i SQL Server đ?i l?, k?t qu? công vi?c s? không c?n đư?c c?t ng?n b?i raiserror phát bi?u. Đ? khôi ph?c các hành vi di s?n, b?n có th? thi?t l?p giá tr? TruncateJobResultOnError đ?n 1. Đây là giá tr? m?c đ?nh n?u giá tr? không đư?c thi?t l?p.

C?nh báo Thay đ?i giá tr? 0 có th? không có m?t cách ti?p c?n hi?u qu? khi có m?t k?ch b?n mà có m?t v?ng l?p vô h?n v?i l?i đư?c ném. Đ?i l? các b?n ghi l?i liên t?c và có th? s? d?ng t?t c? các không gian đ?a.

CÁCH GI?I QUY?T KHÁC

Đ? làm vi?c xung quanh v?n đ?, s? d?ng ho?c là m?t trong nh?ng đi?u sau đây phương pháp, d?a trên yêu c?u c?a b?n.

Phương pháp 1

Xác đ?nh nh?ng g? c?p m?c đ? nghiêm tr?ng b?n mu?n s? d?ng
  • N?u b?n mu?n g?i m?t tuyên b? RAISERROR cho thông tin m?c đích, b?n ph?i s? d?ng m?t m?c đ? nghiêm tr?ng c?a 10 cho các thông báo l?i. M?t m?c đ? nghiêm tr?ng m?c đ? 10 đ?i di?n cho m?t thông báo thông tin ch? ra r?ng m?t v?n đ? đ? x?y ra v? ngư?i dùng nh?p thông tin không chính xác.
  • N?u b?n mu?n h?y b? lô khi m?t tuyên b? RAISERROR g?i là, b?n ph?i s? d?ng m?t m?c đ? nghiêm tr?ng c?p 20 ho?c cao hơn cho các thông báo l?i, và b?n ph?i bao g?m các tùy ch?n v?i đăng nh?p v?i tuyên b? RAISERROR. Khi b?n làm như v?y, t?t c? nh?ng đi?u kho?n Transact-SQL mà đ? ph?i ch?y sau khi cu?c g?i đ? RAISERROR tuyên b? đư?c h?y b?, và t?t c? các giao d?ch m? t? đ?ng quay ngư?c l?i.

    Đ? bi?t thêm thông tin v? m?c đ? nghiêm tr?ng c?p, xem "l?i Thông báo m?c đ? nghiêm tr?ng c?p"ch? đ? trong SQL Server sách tr?c tuy?n.

Phương pháp 2

S? d?ng m?t t?p l?nh trong bư?c công vi?c
N?u b?n mu?n các k?ch b?n toàn b? đ? th?c thi b?t k? làm th? nào thư?ng xuyên báo cáo RAISERROR đư?c g?i là, và m?c đ? nghiêm tr?ng ít hơn 20, b?n có th? s? d?ng m?t t?p l?nh trong bư?c công vi?c. Đ? làm như v?y, làm theo các bư?c sau:
  1. Lưu các k?ch b?n trong m?t t?p tin.
  2. T?o vi?c làm đ?i l? SQL máy ch? v?i m?t CmdExec công vi?c bư?c, và sau đó ch?y t?p l?nh trong bư?c.

    Đây là m?t ví d?:
    osql -E -i c:\script.sql
Khi b?n s? d?ng m?t t?p l?nh, b?n s? nh?n đư?c cùng m?t k?t qu? n?u lô ch?y b?ng cách s? d?ng các osql Ti?n ích mà b?n nh?n đư?c n?u nh?ng đ?t ch?y b?ng cách s? d?ng truy v?n SQL Phân tích.

Kêu g?i m?t tuyên b? RAISERROR v?i m?t m?c đ? nghiêm tr?ng c?a 20 ho?c gây ra cao v?i các tùy ch?n v?i Nh?t k? k?t n?i đ? đóng, và t?t c? các phát bi?u đ? đư?c ngh?a v? ph?i ch?y sau khi các cu?c g?i RAISERROR có b? qua.

T?NH TR?NG

Microsoft đ? xác nh?n r?ng đây là m?t v?n đ? trong các s?n ph?m c?a Microsoft đư?c li?t kê trong ph?n "Áp d?ng cho". V?n đ? này l?n đ?u tiên đ? đư?c s?a ch?a trong Microsoft SQL Server 2000 Service Pack 4.

THÔNG TIN THÊM

N?u m?c đ? nghiêm tr?ng c?a l?i thông đi?p trong SQL Máy ch? đ?i l? công vi?c bư?c c?a tuyên b? RAISERROR là 2 đ?n 9, công vi?c và vào vi?c bư?c cu?i v?i m?t k?t qu? không thành công. Tuy nhiên, đ?u ra không b? đàn áp Đ?i v?i nh?ng đi?u kho?n đang ch?y sau khi tuyên b? RAISERROR trong nh?ng đ?t.

N?u m?c đ? nghiêm tr?ng c?a l?i tin nh?n trong RAISERROR tuyên b? là 10, 1, ho?c 0, vi?c làm và vi?c làm bư?c ch?y thành công. V? v?y, v?n đ? đư?c đ? c?p trong ph?n "Tri?u ch?ng" này bài vi?t không x?y ra.

M?c dù vi?c làm đ?i l? SQL máy ch? th?t b?i n?u b?n ch?y đo?n m? SQL tương t? b?ng cách s? d?ng SQL Query Analyzer, các isql Ti?n ích, ho?c các osql ?ng d?ng, b?n s? nh?n đư?c k?t qu? mà b?n mong đ?i.

Các bư?c đ? t?o l?i hành vi

  1. T?o vi?c làm đ?i l? SQL máy ch? m?i v?i m?tT?p l?nh SQL giao d?ch (TSQL) công vi?c bư?c.
  2. G? hay dán sau đây Transact-SQL tuyên b? trong cácCh? huy h?p.
       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. Trên các Nâng cao tab, dư?i các L?nh SQL giao d?ch k?ch b?n (TSQL) tùy ch?n ph?n, lo?i C:\Raiserror.log trong cácT?p đ?u ra h?p.
  4. Nh?n vào đây đ? ch?n các Ph? thêm tùy ch?n.
  5. Nh?p vào Áp d?ng, sau đó b?mOk.
  6. Nh?p vào Áp d?ng, sau đó b?mOk.
  7. Trong SQL Server Enterprise Manager, b?m chu?t ph?i vào SQL Vi?c làm đ?i l? máy ch? đư?c t?o ra, và sau đó nh?p vào B?t đ?u Công vi?c.
  8. B?t đ?u d?u v?t Profiler SQL.
  9. Đ?i v?i cùng m?t vi?c làm đ?i l? máy ch? SQL bư?c, thay đ?i các m?c đ? nghiêm tr?ng c?p 11 b?ng cách thay th? các l?nh trong bư?c công vi?c như sau.
       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. Ch?y công vi?c m?t l?n n?a.
Đây là k?t qu? mà đư?c t?o ra trong Raiserror.log file.
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]

Trong t?p tin Raiserror.log này, b?n có th? th?y r?ng v?i m?t m?c đ? nghiêm tr?ng c?p 10, t?t c? các đ?u ra t? công vi?c đư?c in trong t?p tin đ?u ra, và công vi?c có m?t k?t qu? thành công.

Trong t?p tin Raiserror.log này, b?n có th? th?y r?ng v?i m?t m?c đ? nghiêm tr?ng c?a 11, ch? là đ?u ra t? c? hai đ?u tiên báo cáo đư?c in vào t?p tin đ?u ra, và công vi?c có m?t k?t qu? không thành công. Ngoài ra, các bài vi?t RAISERROR là trong m?t thông báo l?i thay v? c?a trong m?t thông tin đ?nh d?ng c?a m?t m?c đ? nghiêm tr?ng c?p 10. T?p d?u v?t cho th?y r?ng t?t c? các phát bi?u ch?y thành công.

N?u b?n thay đ?i m?c đ? nghiêm tr?ng đ?n m?c m?t s? t? 2 đ?n 9, đ?u ra không b? đàn áp và k?t qu? công vi?c s? không cho bư?c và cho công vi?c. Đ?nh d?ng tin nh?n s? là gi?ng như m?t l?i đ?nh d?ng tin nh?n cao ? m?c đ? nghiêm tr?ng 11 ho?c cao hơn.

Thu?c tính

ID c?a bài: 309802 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • 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
T? khóa: 
kbhotfixserver kbqfe kbsqlserv2000presp4fix kbfix kbbug kbpending kbmt KB309802 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:309802

Cung cấp Phản hồi

 

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