■ファーストステップ
Integration Services のチュートリアル https://technet.microsoft.com/ja-jp/library/jj720568.aspx
SQL Server 2012 自習書 https://www.microsoft.com/ja-jp/server-cloud/local/sqlserver/2012/technology/self-learning.aspx
■外部のデータを付与する際のパターン
Lookup Pattern: Range Lookups https://blogs.msdn.microsoft.com/mattm/2008/11/25/lookup-pattern-range-lookups/
Lookup https://blogs.msdn.microsoft.com/mattm/tag/lookup/
■式による接続の変更
手順 3: フラット ファイル接続マネージャーの変更 https://msdn.microsoft.com/ja-jp/library/ms166797.aspx
■関数
関数 (SSIS 式) https://msdn.microsoft.com/ja-jp/library/ms141671.aspx
Cast (SSIS 式) https://msdn.microsoft.com/ja-jp/library/ms141704.aspx
■派生列等を設定する際の条件を変数に書き出す
SSIS - How to Write Expressions on Data Flow Task for Derived Column Transformation Expressions for derived column http://www.techbrothersit.com/2011/03/ssis-write-expression-on-data-flow-task.html
• データフロータスクの Expression を操作して変更する
■変数の外部ファイル化 (パッケージ配置構成にする必要がある)
手順 4: パッケージ構成の追加 https://msdn.microsoft.com/ja-jp/library/ms365339.aspx
Integration Services (SSIS) パッケージとプロジェクト パラメーター https://msdn.microsoft.com/ja-jp/library/hh213214.aspx
Integration Services (SSIS) プロジェクトとパッケージの配置 https://msdn.microsoft.com/ja-jp/library/hh213290.aspx
■コンポーネント
制御フロー https://msdn.microsoft.com/ja-jp/library/ms137681.aspx
データ フロー https://msdn.microsoft.com/ja-jp/library/ms140080.aspx
Tumbling Dice http://outofmem.hatenablog.com/archive/category/SSIS
データフローのバッファサイズ https://blogs.msdn.microsoft.com/sqlperf/2007/05/11/adjust-buffer-size-in-ssis-data-flow-task/
データ フロー パフォーマンス機能 https://msdn.microsoft.com/ja-jp/library/ms141031.aspx
Foreach ループ コンテナー https://msdn.microsoft.com/ja-jp/library/ms141724.aspx
• SQL 実行タスクで実行した SQL の結果を Object 型の変数に格納し、その変数の情報をもとに、Foreach を実行することも可能
カスタム タスクにおけるデバッグのサポートの追加 https://msdn.microsoft.com/ja-jp/library/ms136129.aspx
• Foreach ループ コンテナーを右クリックし、「ブレークポイントの編集」から「ループの繰り返しの開始点で停止します」を有効にするとデバッグをしやすい
■SQL の実行
クエリ パラメーターを SQL 実行タスクの変数にマップする方法 https://msdn.microsoft.com/ja-jp/library/ms140355.aspx
結果セットを SQL 実行タスクの変数にマップする https://msdn.microsoft.com/ja-jp/library/ms141689.aspx
SQL 実行タスクにおける結果セット https://msdn.microsoft.com/ja-jp/library/cc280492.aspx
■パッケージの実行ログ
[SSIS] パッケージログの出力方法 https://blogs.msdn.microsoft.com/jpsql/2015/01/13/ssis/
スクリプト コンポーネントでのログ記録 https://msdn.microsoft.com/ja-jp/library/aa337076.aspx
スクリプト タスクでのログ記録 https://msdn.microsoft.com/ja-jp/library/ms136131.aspx
■コマンドラインユーティリティ
dtexec ユーティリティ https://msdn.microsoft.com/ja-jp/library/hh231187.aspx
パッケージ実行ユーティリティ (DtExecUI) の UI リファレンス https://msdn.microsoft.com/ja-jp/library/ms180378.aspx
■スクリプト
スクリプト コンポーネントのコーディングおよびデバッグ https://msdn.microsoft.com/ja-jp/library/ms136033.aspx
スクリプト コンポーネント エディターでのスクリプト コンポーネントの構成 https://msdn.microsoft.com/ja-jp/library/ms135927.aspx
特定の種類のスクリプト コンポーネントの開発 https://msdn.microsoft.com/ja-jp/library/ms345170.aspx
スクリプト コンポーネントによる非同期変換の作成 https://msdn.microsoft.com/ja-jp/library/ms136133.aspx
• 「<出力名>_ProcessInputRow」で「<出力名>Buffer」に対して、「AddRow」することで処理を進めていく
○ バッファとしてまとまったデータを受け取り、そのバッファに対して処理を進めていく
○ 「<出力名>_ProcessInput」のメソッドをオーバーライドすることで、「<出力名>_ProcessInputRow」に入力バッファの行を送る際の処理をカスタマイズすることもできる
§ ComponentWrapper.cs のメソッドをオーバーライドしている
• while(Row.NextRow()){} で書いてしまうと、最初の1行がスキップされてしまうため、do{}while(Row.NextRow()) で記載する?
○ 処理をした感じでは、最初の 1 行がスキップされることはなさそうであったが。
• 非同期でのデータ処理の場合、「ExclusionGroup」「SynchronousInputID」は 0 となる
スクリプト コンポーネントによる同期変換の作成 https://msdn.microsoft.com/ja-jp/library/ms136114.aspx
• 「<出力名>_ProcessInputRow」の引数として渡された Row をインプット、「<出力名>Buffer」を出力とし、出力バッファに適宜内容を格納しながら処理を進めていく
• 全てのデータをスクリプトタスクで蓄えてから後続の処理を実施する場合使用 (後続でソートをする場合等)
• 出力の分岐 (条件によって、データを出力する出力を変更 / 同一のデータを複数の出力に出力) をさせるためには、「ExclusionGroup」を 1 以上の同値とし、「SynchronousInputID」を揃える。これにより、DirectRowTo が使用できる
スクリプト タスクを使用した Excel ファイルの操作 https://msdn.microsoft.com/ja-jp/library/ms403358.aspx
スクリプト タスクによるパッケージの拡張 https://msdn.microsoft.com/ja-jp/library/ms136127.aspx
RunningPackage.Stop Method () https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.runningpackage.stop.aspx
パッケージの停止 • Dts.TaskResult = ScriptResult.Failure でも大丈夫かもしれない?
■DataReader による他のアプリケーションでの結果セットの利用
DataReader 変換先 https://msdn.microsoft.com/ja-jp/library/ms140291.aspx
ローカル パッケージの出力の読み込み https://msdn.microsoft.com/ja-jp/library/ms135917.aspx
■DataSet
Visual Studio 2005によるWindowsデータベース・プログラミング http://www.atmarkit.co.jp/ait/articles/0701/20/news016.html
ADO.NET http://devlights.hatenablog.com/archive/category/ADO.NET
■SQL 実行タスクで取得された完全な結果セットの利用
SSIS Design Pattern - Read a DataSet From Variable In a Script Task http://sqlblog.com/blogs/andy_leonard/archive/2007/10/14/ssis-design-pattern-read-a-dataset-from-variable-in-a-script-task.aspx
All About SSIS Variables - Part 2: Objects https://www.codeproject.com/Articles/822652/All-About-SSIS-Variables-Part-Objects
SSIS - How To Read Object Type Variable In Script Task [Script Task SSIS] http://www.techbrothersit.com/2013/07/ssis-how-to-read-object-type-variable.html
SSIS - How to access a RecordSet variable inside a Script Task http://stackoverflow.com/questions/2596992/ssis-how-to-access-a-recordset-variable-inside-a-script-task
方法 : DataTable の特定の行を探す https://msdn.microsoft.com/ja-jp/library/y06xa2h1.aspx
■カスタムスクリプトで使用されているクラス
Microsoft.SqlServer.Dts.Pipeline 名前空間 https://technet.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.pipeline.aspx
ScriptComponentHost クラス https://technet.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.pipeline.scriptcomponenthost.aspx
Microsoft.SqlServer.Dts.Tasks.ScriptTask 名前空間 https://msdn.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.tasks.scripttask.aspx
ScriptTask クラス https://msdn.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.tasks.scripttask.scripttask.aspx
ScriptObjectModel クラス https://msdn.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.tasks.scripttask.scriptobjectmodel.aspx
ScriptBuffer クラス https://technet.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.pipeline.aspx
■トランザクション
Known Issue: SSIS パッケージの TransactionOption オプションを Required とすると、パッケージの動作が停止しているように見える。 https://blogs.msdn.microsoft.com/jpsql/2012/06/22/known-issue-ssis-transactionoption-required/
Integration Services のトランザクション https://msdn.microsoft.com/ja-jp/library/ms137690.aspx
トランザクションを使用するようにパッケージを構成する https://msdn.microsoft.com/ja-jp/library/ms141144.aspx
■デバッグ
スクリプト タスクのコーディングおよびデバッグ https://msdn.microsoft.com/ja-jp/library/ms135952.aspx
スクリプト タスクとスクリプト コンポーネントにブレークポイントを設定してスクリプトをデバッグする https://msdn.microsoft.com/ja-jp/library/ms140033.aspx
データ フローのデバッグ https://msdn.microsoft.com/ja-jp/library/ms137944.aspx
[データ ビューアー] https://msdn.microsoft.com/ja-jp/library/ms186560.aspx
スクリプトコンポーネントはデバッグできないようだが、スクリプトタスクはデバッグ可能
デバッグできない場合は、プロジェクトの 64 ビットデバッグを False にすることも検討
(64 ビットであれば、スクリプトタスクだけでなく、スクリプトコンポーネントもデバッグできた)
■エラー処理
データ フロー コンポーネントでエラー出力を構成する https://msdn.microsoft.com/ja-jp/library/ms140083.aspx
データのエラー処理 https://msdn.microsoft.com/ja-jp/library/ms141679.aspx
手順 3 : エラー フロー リダイレクトの追加 https://msdn.microsoft.com/ja-jp/library/ms166707.aspx
■変数
システム変数 https://msdn.microsoft.com/ja-jp/library/ms141788.aspx
変数のウォッチ http://bidn.com/Blogs/ssis-tips-watch-your-variables
■イベントハンドラー
Integration Services (SSIS) のイベント ハンドラー https://technet.microsoft.com/ja-jp/library/ms140223.aspx