現在オフラインです。再接続するためにインターネットの接続を待っています

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

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB: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:59SQL 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           sysobjects2           sysindexes3           syscolumns(3 rows(s) affected)Job 'raiserror' : Step 1, 'test raiserror' : Began Executing 2002-07-23 15:49:17SQL 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 - 最終更新日: 12/07/2015 07:59:21 - リビジョン: 9.0

  • kbnosurvey kbarchive kbbug kbfix kbqfe kbsqlserv2000presp4fix kbpending kbhotfixserver kbmt KB309802 KbMtja
フィードバック