FIX Transact SQL バッチ内の RAISERROR ステートメントの呼び出しは、SQLAgent ジョブが失敗して SQL Server での出力が失われる可能性があります。

文書翻訳 文書翻訳
文書番号: 309802
重要です レジストリを変更する方法についての情報を掲載しています。これを変更する前にレジストリのバックアップを作成してください。問題が発生した場合にレジストリを復元する方法を知っていることを確認してください。バックアップ、復元、およびレジストリを変更する方法の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
256986 Microsoft Windows レジストリの説明」
すべて展開する | すべて折りたたむ

目次

現象

Transact SQL スクリプトは、SQLAgent ジョブ ステップの種類をある場合、場合は、ステートメントで、 コマンド フィールドの新規作成 ジョブ ステップ<sql server="" instance="" name=""></sql> ダイアログ ボックスを呼び出す Transact SQL RAISERROR ステートメントを使用します。重大度レベル 11 以上、WITH LOG オプションを使用せず、ジョブが終了します。失敗の結果にします。ただし、Transact SQL のすべてのステートメントを実行します。実行後の RAISERROR ステートメントを呼び出して、出力はすべて抑制されます。そのため、ステートメントの後、RAISERROR 出力されません。ステートメントを実行します。これ本当には何についての混乱可能性があります、ジョブ内のステートメント。表示したい場合は、SQL のプロファイラー トレースを探す必要があります。何を実際に不足しています。SQL のプロファイラーのトレースの詳細についてを参照してください、SQL Server Books online の「SQL のプロファイラー」トピック。

解決方法

警告 重大な問題、レジストリが誤ってをレジストリ エディターを使用して、または別の方法を使用して変更すると発生します。これらの問題は、オペレーティング システムを再インストールする必要があります。マイクロソフトは、これらの問題を解決できることを保証できません。お客様の責任においてレジストリを変更します。

サービス パックの情報

この問題を解決するには、Microsoft SQL Server 2000年用の最新の service pack を入手します。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
290211 SQL Server 2000年の最新の service pack を入手する方法

修正プログラムの情報

この修正プログラムの英語版がファイル属性 (またはそれ以降のファイル属性) が、次のとおり。日付および時刻これらのファイルを世界協定時刻 (UTC) が表示されます。ファイル情報を表示すると、ローカル時刻に変換します。UTC とローカル時刻との時差を確認するを使用して、 タイム ゾーン タブ コントロール パネルの日付と時刻ツールでします。
   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
メモ ファイルの依存関係、最新の修正プログラムまたは機能のためのこれらを含むファイルにはその他ファイルです。

この修正プログラムを適用した後、新しいのレジストリ DWORD 値を次のレジストリ サブキーのいずれかで TruncateJobResultOnError と呼ばれる SQL Server エージェントの動作が定義されます。
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQLServer\SQLServerAgent (既定のインスタンス)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instancename>\SQLServerAgent (名前付きインスタンス)</instancename>
新しい動作を有効にするには、TruncateJobResultOnError 値を 0 に設定します。SQL Server エージェントを再起動すると、ジョブの結果がで切り詰められます raiserror ステートメント。従来の動作に戻すには、1 〜 TruncateJobResultOnError の値を設定できます。値が設定されていない場合は、これが既定値です。

警告 スローされるエラーでは、無限ループを持つスクリプトがある場合は 0 の値の変更は効果的な方法があります。エージェント エラーを継続的にログに記録し、すべてのディスク領域を使用して可能性があります。

回避策

この問題を回避するには、次のいずれかを使用します。このメソッドでは、必要に応じています。

方法 1

重大度レベルを使用するを確認します。
  • 場合は、RAISERROR ステートメントを情報に接続します。この目的は、エラー メッセージは、重大度レベル 10 を使用する必要があります。重要度問題のあることを示す情報メッセージ レベル 10 を示しますユーザーが入力した情報が正しくないためが発生しました。
  • 場合は、RAISERROR ステートメントのバッチを中止したい場合ですと呼ばれる、重大度レベル 20 以上のエラー メッセージは、使用する必要がありますRAISERROR ステートメントに、WITH LOG オプションを含める必要があります。場合、Transact SQL のすべてのステートメントは、呼び出しの後に実行する予定だったので、しないでください。すべての開いているトランザクションに、RAISERROR ステートメントは中断されましたが、自動的にロールバックします。

    詳細については、重大度レベルレベル エラー」を参照してください。メッセージの重要度レベル"SQL Server Books online のトピック。

方法 2

スクリプト ファイルにジョブ ステップを使用します。
関係なく実行するのには、全体のスクリプトが必要な場合どのように頻繁に、RAISERROR ステートメントが呼び出され、重要度のレベル20 未満のジョブ ステップ スクリプト ファイルを使用できます。これを行うには、以下を実行します手順:
  1. このスクリプトをファイルに保存します。
  2. CmdExec ジョブ ステップでは、SQL Server エージェント ジョブを作成し、次の手順でスクリプト ファイルを実行します。

    例は次のとおりです。
    osql -E -i c:\script.sql
スクリプト ファイルを使用するは、同じ結果とが表示されます。使用して、バッチが実行される、 osql SQL クエリを使用して、バッチが実行されている場合に表示されるユーティリティアナライザーです。

RAISERROR ステートメントは、重大度レベル 20 が呼び出すかすべての接続を閉じるには、WITH LOG オプションが高いが、ステートメントは、RAISERROR は後で実行することでスキップします。

状況

マイクロソフトでは、この「対象」に記載されているマイクロソフト製品の問題として認識しています。 この問題は、最初 Microsoft SQL Server 2000 Service Pack 4 で修正済みです。

詳細

場合は、SQL でのエラーの重大度レベルのメッセージサーバー エージェントのジョブ ステップは、RAISERROR ステートメントの 2 〜 9 をジョブのです、ジョブ ステップは、障害が発生した結果。ただし、出力は抑止しません。RAISERROR ステートメントがバッチ内の後のステートメントは実行されます。

エラーの重大度レベルは、raiserror ステートメントのメッセージがある場合10、1、または 0 では、ジョブのステートメントのであり、ジョブ ステップが正常に実行されます。そのため、この「現象」に記載されている問題資料では発生しません。

場合は、SQL Server エージェント ジョブは失敗しますが、SQL クエリ アナライザーを使用して、同一の SQL スクリプトを実行、 isql ユーティリティ、または、 osql ユーティリティは、期待どおりの結果が表示されます。

現象の再現手順

  1. 新しい SQL Server のエージェント ジョブを作成します。Transact SQL スクリプト (TSQL) ジョブ ステップ。
  2. 入力するか貼り付けますの Transact SQL の次のステートメントでは、コマンド ボックス。
       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. で、 高度な タブを下に Transact SQL スクリプト (TSQL) コマンドオプション セクションの種類 C:\Raiserror.log で、出力ファイル ボックス。
  4. オンにし、 追加 オプションです。
  5. クリックしてください。 適用、し[OK].
  6. クリックしてください。 適用、し[OK].
  7. SQL Server エンタープライズ マネージャーでは、SQL を右クリックします。サーバー エージェントのジョブを作成し、 開始ジョブ.
  8. SQL のプロファイラー トレースを開始します。
  9. 同じ SQL Server エージェント ジョブ ステップを変更する、ジョブ ステップのコマンドには次のとおり交換で 11 の重大度レベル。
       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. ジョブを再実行します。
Raiserror.log ファイルで生成される結果は次のとおりです。
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]

この Raiserror.log ファイルでは、重大度レベルをご覧レベル 10、すべてのジョブからの出力は出力ファイルには、印刷されたとジョブは、正常な結果をでした。

この Raiserror.log ファイルで、重大度レベル 11 最初の 2 つからの出力だけを表示できます。文が出力ファイルに印刷し、ジョブが失敗した結果がします。また、RAISERROR メッセージは、エラー メッセージの形式ではなくが、重大度レベル 10 の情報の形式です。トレース ファイルがすべて表示されます、ステートメントが正常に実行されました。

重大度レベルを変更する場合は、数から 2 〜 9 は、出力が抑制されていませんし、ジョブの結果ステップとジョブの失敗します。メッセージの形式と同じになりますが重大度レベル 11 以上のエラー メッセージの形式。

プロパティ

文書番号: 309802 - 最終更新日: 2011年7月25日 - リビジョン: 9.0
キーワード:?
kbbug kbfix kbqfe kbsqlserv2000presp4fix kbpending kbhotfixserver kbmt KB309802 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:309802
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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