質問: '0x0a' ); ``` ### 試したこと Dockerの再起動、SQL Serverの新規DB作成 ### 補足情報(FW/ツールのバージョンなど) SQL Server:SQL Server2017 Docker:18.03.1-ce-mac65 GUIツール:SQL Operation Studio 0.30.6
回答: **BATCHSIZE**を指定して、分割コミットされるようにして下さい。 但し、エラーになった場合のリカバリーについての考慮はしておいて下さい。 BULK INSERT (Transact-SQL) > > **パフォーマンスに関する考慮事項** > > 1 つのバッチでフラッシュされるページの数が内部しきい値を超えると、バッチのコミット時にフラッシュするページを特定するためにバッファー プールのフル スキャンが行われる可能性があります。 > > フル スキャンが行われると、一括インポートのパフォーマンスが低下します。 > > この内部しきい値の問題は、大きなバッファー プールと遅い I/O サブシステムの組み合わせでも発生します。 > > 大規模なコンピューターでバッファー オーバーフローを防ぐには、TABLOCK ヒントを使用しないようにするか (一括インポートの最適化は行われなくなります)、**バッチ サイズを小さくします (一括インポートの最適化は引き続き行われます)。** > > コンピューターはそれぞれ異なるため、**実際のデータでさまざまなバッチ サイズを試して最適な値を見つける**ようにすることをお勧めします。 > > > **BATCHSIZE =batch_size** > > 1 つのバッチに含まれている行の数を指定します。 > > それぞれのバッチは、1 回のトランザクションでサーバーにコピーされます。 > > コピーに失敗した場合、SQL Server では各バッチのトランザクションがコミットまたはロールバックされます。 > > 既定では、指定のデータ ファイル内にあるすべてのデータが 1 つのバッチになります。 > > >