こんにちはSO、私は現在APX〜50kのレコードを処理するストアドプロシージャを実行しようとしていますSQL Serverのランダムなタイムアウトの問題
。私を取得何
> [2016-12-08 19:28:24] local.INFO: PDOException: SQLSTATE[HY000]:
> General error: 20003 Adaptive Server connection timed out [20003]
> (severity 6) [(null)] in
> /vendor/laravel/framework/src/Illuminate/Database/Connection.php:479
> Stack trace:
> #0 /vendor/laravel/framework/src/Illuminate/Database/Connection.php(479):
> PDOStatement->execute()
> #1 /vendor/laravel/framework/src/Illuminate/Database/Connection.php(762):
> Illuminate\Database\Connection->Illuminate\Database\{closure}(Object(Illuminate\Database\SqlServerConnection),
> 'EXEC dbo.cleanD...', Array)
> #2 /vendor/laravel/framework/src/Illuminate/Database/Connection.php(725):
> Illuminate\Database\Connection->runQueryCallback('EXEC dbo.cleanD...',
> Array, Object(Closure))
> #3 /vendor/laravel/framework/src/Illuminate/Database/Connection.php(480):
> Illuminate\Database\Connection->run('EXEC dbo.cleanD...', Array,
> Object(Closure))
> #4 /vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(317):
> Illuminate\Database\Connection->statement('EXEC dbo.cleanD...')
> #5 /vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(237):
> Illuminate\Database\DatabaseManager->__call('statement', Array)
が通過、ということである:それは、など
しかし、比較的長い準備されたステートメントは、常に次のエラー(複数可)になり、別のテーブルにレコードをソートし、いくつかのレコードを削除しますlaravelチャンクの使用、私は何事もなく〜50kのレコードを挿入することができる午前:
$data = $data->chunk(500);
foreach ($data as $rows) {
Log::info("INSERT START: " . date('l jS \of F Y h:i:s A'));
DB::table("the.db")->insert($rows->toArray());
}
しかし、すぐに(〜2-4分かかることがあります)ストアドプロシージャの実行など
上記のエラーが発生します。私はストアドプロシージャをlittlerに分割するなど、さまざまなソリューションを試しましたが、まだエラーが発生します。
常に同じエラー:
General error: 20003 Adaptive Server connection timed out [20003] (severity 6) [(null)] in /vendor/laravel/framework/src/Illuminate/Database/Connection.php:479
私は(laravelでのphp.iniを?)がどこかにひそかな疑いを持って、私はデータベース
のためのタイムアウト制限までに持っているかもしれませんどんなことでも、事前に感謝します!
クエリをいくつかの小さなクエリに分割する可能性はありますか?また、SQL Serverジョブを使用できますか? – EJoshuaS
残念ながら、残念ながら、最も時間のかかるスクリプトはすべて一緒にいなければなりません。 – Derek
可能であれば、特に固定スケジュールで実行されている場合は、可能な限りジョブを作成する価値があります。 – EJoshuaS