SQL Server 2017 Integration ServicesをLinuxで実行できるようになりました。つまり、Windowsで開発されたパッケージを移行し、ODBCをコネクタとして使用できます。
これをテストするために、ローカルとリモートのSQL Serverインスタンス間でデータをコピーし、Linuxマシンでパッケージを実行する単純なパッケージをWindowsで作成しました。
プロセスは単純でした。覚えておくべき唯一のことは、WindowsマシンとLinuxマシンで同じ名前のODBCデータソースを作成する必要があるということです。簡単なテストパッケージを作成する手順は次のとおりです。
- SQL Server Management Studioで、データのコピー元のSQLServerインスタンスに接続します。
- 簡単なテストテーブルを作成します。
CREATE DATABASE ssis USE ssis CREATE TABLE Persons ( PersonID int identity, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) ); INSERT INTO Persons VALUES ('Erichsen', 'Tom', 'Skagen 21', 'Stavanger')
- データのコピー先のインスタンスに接続します。テストテーブルを作成しますが、入力しないでください。
- Visual Studioがインストールされているマシンで、SQLServerインスタンスごとに1つずつ2つのODBCデータソースを作成します。これを行うには、32ビットバージョンのODBCデータソースアドミニストレータを使用します。
- Visual Studioで、新しいIntegrationServicesプロジェクトを作成します。
- データフロータスクをツールボックスから[制御フロー]タブにドラッグします。
- [データフロー]タブを選択します。
- ODBCソースをツールボックスから[データフロー]タブにドラッグし、Returnキーを押します。
ODBC宛先は[その他のソース]リストにあります。
- ODBCソースを選択し、Returnキーを押します。
- [ODBCソース]ダイアログボックスで、[新規]を選択します。
- [ODBC接続マネージャーの構成]ダイアログボックスで、[新規]を選択します。
- [接続マネージャー]ダイアログボックスで、ソースSQL Serverインスタンスに接続するODBCデータソースを選択し、[OK]ボタンを使用して[ODBCソース]ダイアログボックスに戻ります。
- 列を選択します。
- ODBC宛先をツールボックスから[データフロー]タブにドラッグし、Returnキーを押します。
ODBC宛先は[その他の宛先]リストにあります。
- ODBCソースを選択します。青い矢印をODBC宛先にドラッグします。
- ODBC宛先を選択し、Returnキーを押します。
- [ODBC宛先]ダイアログボックスで、[新規]を選択します。
- [ODBC接続マネージャーの構成]ダイアログボックスで、[新規]を選択します。
- [接続マネージャー]ダイアログボックスで、宛先SQL Serverインスタンスに接続するODBCデータソースを選択し、[OK]ボタンを使用して[ODBCソース]ダイアログボックスに戻ります。
- テーブルまたはビューリストの名前で、[個人]を選択します。
- マッピングを選択してください。
- PersonID列間のマッピングを削除します。 PersonIDは自動的に入力されます。
- SQLServerとSSISのLinuxポートがインストールされているマシンに64ビットLinuxバージョンのSQLServerODBCドライバーをインストール、ライセンス供与、およびテストします。
- Linuxマシンで、Windowsで作成したデータソースと同じ名前の2つのSQLServerODBCデータソースを作成します。
Linuxでは、通常は/etc/odbc.iniに保存されているテキストファイルを編集して、ODBCデータソースを作成します。サンプルデータソース
SQLSERVER_SAMPLE
を適応させることができます 、必要に応じて、名前を変更することを忘れないでください。 - SSISパッケージをWindowsマシンからLinuxマシンにコピーします。
- パッケージを実行するには:
export PATH=/opt/ssis/bin:$PATH dtexec /F "MyPackage.dtsx"