私は100Mレコードを照会した後、いくつかのRコードを実行し、プロセスが6時間にわたって実行した後、次のエラーを取得:のSQL Server 2016 Rサービス:sp_execute_external_script戻り0x80004005のエラー
Msg 39004, Level 16, State 19, Line 300
A 'R' script error occurred during execution of 'sp_execute_external_script'
with HRESULT 0x80004005.
HRESULT 0x80004005のはに関連しているように見えます接続、アクセス許可、または「指定されていない」エラーのあるWindows
私のRコードには、プロセスがRスクリプトに全く届かないということがわかっています。私はまた、プロシージャ全体が、より少ない数のレコード、たとえば1Mで4分後に完了することも知っています。これは、私のRコードのバグではなく、スケーリングの問題か、データの問題かと思います。私は所有権の理由のためにRコードまたは完全な質問を含んでいません。
しかし、私はディスクまたはメモリのエラー0x80004004メモリ不足のエラーを表示することを期待します。私は、SQLエラーログに気づい
一つの手がかりは以下の通りです:
SQL Server received abort message and abort execution for major error : 18
and minor error : 42
それが始まった後、それが発生したが、このログ行の時間は、プロセスの中断とは一致しないが。残念ながら、ウェブ上には「メジャー・エラー18」に関する貴重な情報はほとんどありません。
SSMSから実行しているときのSQLトレースは、6分ごとにクライアントのログインとログアウトを示していますが、これは通常のキープアライブ動作と仮定できます。
消毒sp_execute_external_scriptコール:
EXEC sp_execute_external_script
@language = N'R'
, @script = N'#We never get here
#returns name of output data file'
, @input_data_1 = N'SELECT TOP 100000000 FROM DATA'
, @input_data_1_name = N'x'
, @output_data_1_name = N'output_file_df'
WITH RESULT SETS ((output_file varchar(100) not null))
サーバー仕様: 8つのコア 256ギガバイトのRAM のSQL Server 2016 CTP 3
任意のアイデア、提案やデバッグのヒントをいただければ幸いです!
UPDATE:rlauncher.config中= 3 設定TRACE_LEVELロギングと再実行プロセスのより高いレベルをオンにします。ログには、6.5時間後にプロセス全体が失敗したときにセッションファイルを削除して実行したクリーンアッププロセスが表示されます。
[2016年5月30日01:35:34.419] [00002070] [00001EC4] [詳細] SQLSatellite_LaunchSatellite(1、A187BC64-C349-410B-861E-BFDC714C8017、1、49232、nullptr)が完成:00000000
[2016年5月30日01:35:34.420] [00002070] [00001EC4] [詳細] < SQLSatellite_LaunchSatellite、dllmain.cpp、223
[2016年5月30日08:04:02.443] [00002070] [00001EC4] [情報]> SQLSatellite_LauncherCleanUp、dllmain.cpp、309
[2016年5月30日08:04:07.443] [00002070] [00001EC4] [警告]セッションA187BC64-C349-410B-861E-BFDC7 14C8017のクリーンアップは258とエラーで失敗しましたウエイト0
[2016年5月30日08:04:07.444] [00002070]は[00001EC4] [情報]セッション(A187BC64-C349-410B-861E-BFDC714C8017)は2出力をログに記録しましたTryDeleteSingleFile(C:\ PROGRA〜1 \ MICROS〜1 \ MSSQL1〜1)。[00002070] [00002070] [警告] TryDeleteSingleFile(C:\ PROGRA〜1 \ MICROS〜1 \ MSSQL1〜1)。MSS \ MSSQL \ EXTENS〜1 \ MSSQLSERVER06 \ A187BC64-C349-410B-861E-BFDC714C8017 \ Rscript1878455a2528)は32
で失敗しました[2016年5月30日08:04:07.445] [00002070] [00001EC4] [警告] TryDeleteSingleDirectory(C:\ PROGRA〜1 \ MICROS〜1 \ MSSQL1〜1.MSS \ MSSQL \ EXTENS〜1 \ MSSQLSERVER06 \ A187BC64-C349-410B-861E-BFDC714C8017)は32
で失敗しました[2016年5月30日08:04:08.446] [00002070] [00001EC4] [情報]セッションA187BC64-C349-410B-861E-BFDC714C8017がMSSQLSERVER06ユーザー
[2016年5月30日08から取り外さ:04:08.447] [00002070] [00001EC4 ] [Info] SQLSatellite_LauncherCleanUp(A187BC64-C349-410B-861E-BFDC714C8017)完了:00000000
私の長時間実行プロセスを続行できるようにする唯一の方法はにある表示されます。a)ジョブは Bを終了することを可能にするには、ジョブのクリーンアップの待機時間を延長 )は、ジョブのクリーンアッププロセス
を無効に私がこれまで持っていますMSSQLLaunchpadサービスでジョブクリーンアップの待機時間を設定する値を見つけることができませんでした。 rlauncher.configにJOB_CLEANUP_ON_EXITフラグが存在する間は、0に設定しても効果はありません。サービスは、再起動すると1にリセットされているようです。
再度、ご提案やご支援をいただければ幸いです。
ご回答をお寄せいただきありがとうございますが、私は同意しません。メモリ不足エラーは、 "メモリの割り当てまたは再割り当てに失敗しました"というエラー0x80004004を返します。私も256 GBのメモリを持っていて、そのデータはわずか11 GBです。私は既に利用可能なメモリの50%をRに与えました。ストリーミングの実行は不可能です。セット全体に手段が必要なためです。 6.5時間の実行後のクリーンアップエラーは、スクリプトの失敗とまったく同じです。 – ryang