SQL Server 2008 R2 Express で「大きな」スクリプトを実行する必要がありますが、次のエラーで失敗します
このクエリを実行するには、リソース プール '内部' にシステム メモリが不足しています。
スクリプトはディスクに保存された約 10MB で、約 54000 の最上位ステートメント (挿入/削除/更新) を含み、約 5000 の変数 (型BIGINT
) を宣言します。
SQL Server 2008 R2 Express 64 ビット 10.5.1746 を実行しています。VM に 3 GB、SQL Server に 1 GB、クエリごとに 512 KB の最小メモリが割り当てられています。の結果はDBCC MEMORYSTATUS
、このリンクにあります。
このスクリプトは、SQL ステートメント (データのみ、スキーマなし) としてエクスポートされた (軽量の) 実稼働データベースの単なる復元です。
これが不可能な場合、SQL Server がそのような基本的なシナリオを処理できないことにショックを受けます。この同等のシナリオを Firebird と Sqlite でテストしたところ、問題なく動作しました。(そしてそれらはオープンソース製品です)。
注: 最初に宣言された変数がスクリプトの最後で参照されるため、スクリプトを分割することはできません。
注:これを「重複」として急いでフラグを立てる前に、他の同様のスレッドが「SQL Server 2008 で非常に大きなスクリプトを実行する方法」という特定の問題に対処していないことに注意してください。