SQL Server インポートおよびエクスポートウィザードでデータの移行ができます。画面でぽちぽちして、最後にSSISのパッケージとして保存することができます。
保存すると「.dtsx」という拡張子で出力されます。
ウィザードで出力されたSSISパッケージの細かいオプションがどうなっているのかが気になったので調べてみました。
前提:今回の調査では、コピー元もコピー先もSQL Server Native Clientで同じAzure SQL Databaseサーバーの別のデータベースにコピーしています。
制御フローは1つだけです。
制御フローにパラメーターで気になるのは次のところ。
- AutoAdjustBufferSize:False
- DefaultBufferMaxRows:10000
- DefaultBufferSize:3145728
- EngineThreads:10
SSISとしては、シンプルなデータフローが定義されています。
データソースはこんな感じです。
出力クエリとそれによって取得できるカラムの情報ですね。
コピー先の設定はこんな感じ。
テーブルロックされて、CHECK制約が有効で、IDは保持しなくて、NULLも保持しない。
データアクセスモードは、「テーブルまたはビュー 高速読み込み」
バッチごとの行数はブランクで、挿入コミットサイズの最大値は2147483647。
あとはデータのマッピング情報がありますね。
バッチサイズについて
参考:https://www.mssqltips.com/sqlservertip/1840/sql-server-integration-services-ssis-best-practices/
バッチごとの行数は既定では「-1」で、すべての受信業が単一のバッチとして扱われる。
この値を変更すると受信したすべての行を複数のバッチに分割できる。設定可能なのはバッチ内の最大行数までの整数値。
挿入コミットサイズの最大値の既定値の意味は、受信したすべての行が正常に完了すると一回コミットされることを意味するようです。
この値を変更しないと大量のデータ転送中にトランザクションログとtempdbの負荷が増大するという。
参考:MSDN ONLINE