Integration Services プロジェクトを、プロジェクト配置モデルを使用するように構成すると、SSIS カタログのストアド プロシージャを使用して、プロジェクトの配置とパッケージの実行を行うことができます。 プロジェクトの配置モデルの詳細については、「プロジェクトとパッケージの展開」を参照してください。
また、SQL Server Management Studio または SQL Server データ ツール (SSDT) を使用して、プロジェクトの配置とパッケージの実行を行うこともできます。 詳細については、「関連項目」セクションのトピックを参照してください。
ヒント |
|---|
次の手順を実行することにより、catalog.deploy_project を除き、次の手順に示されるストアド プロシージャの Transact-SQL ステートメントを簡単に生成できます。
|
ストアド プロシージャを使用してパッケージの配置と実行を行うには
catalog.deploy_project (SSISDB データベース) を呼び出して、パッケージが含まれている Integration Services プロジェクトを Integration Services サーバーに配置します。
Integration Services プロジェクト配置ファイルのバイナリ コンテンツを取得するには、@project_stream パラメーターの場合、SELECT ステートメントと、OPENROWSET 関数および BULK 行セット プロバイダーを使用します。 BULK 行セット プロバイダーを使用すると、ファイルからデータを読み取ることができます。 BULK 行セット プロバイダーの SINGLE_BLOB 引数は、データ ファイルの内容を、varbinary(max) 型の単一行、単一列の行セットとして返します。 詳細については、「OPENROWSET (Transact-SQL)」を参照してください。
次の例では、SSISPackages_ProjectDeployment プロジェクトを、Integration Services サーバーの SSIS パッケージ フォルダーに配置します。 バイナリ データは、プロジェクト ファイル (SSISPackage_ProjectDeployment.ispac) から読み取られ、varbinary(max) 型の @ProjectBinary パラメーターに格納されます。 @ProjectBinary パラメーター値は、@project_stream パラメーターに割り当てられます。
DECLARE @ProjectBinary as varbinary(max) DECLARE @operation_id as bigint Set @ProjectBinary = (SELECT * FROM OPENROWSET(BULK 'C:\MyProjects\ SSISPackage_ProjectDeployment.ispac', SINGLE_BLOB) as BinaryData) Exec catalog.deploy_project @folder_name = 'SSIS Packages', @project_name = 'DeployViaStoredProc_SSIS', @Project_Stream = @ProjectBinary, @operation_id = @operation_id outcatalog.create_execution (SSISDB データベース) を呼び出してパッケージ実行のインスタンスを作成し、必要に応じて、catalog.set_execution_parameter_value (SSISDB データベース) を呼び出してランタイム パラメーター値を設定します。
次の例では、catalog.create_execution は、SSISPackage_ProjectDeployment プロジェクトに含まれる package.dtsx の実行のインスタンスを作成します。 このプロジェクトは SSIS パッケージ フォルダーに配置されます。 ストアド プロシージャから返される execution_id は、catalog.set_execution_parameter_value の呼び出しに使用されます。 この 2 番目のストアド プロシージャは、LOGGING_LEVEL パラメーターを 3 (詳細ログ) に、Parameter1 という名前のパッケージ パラメーターを 1 に設定します。
LOGGING_LEVEL などのパラメーターの場合、object_type 値は 50 です。 パッケージ パラメーターの場合、object_type 値は 30 になります。
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 GOcatalog.start_execution (SSISDB データベース) を呼び出して、パッケージを実行します。
次の例では、catalog.start_execution の呼び出しを Transact-SQL に追加して、パッケージの実行を開始します。 catalog.create_execution ストアド プロシージャによって返される execution_id が使用されます。
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 EXEC [SSISDB].[catalog].[start_execution] @execution_id GO
ストアド プロシージャを使用してサーバー間でプロジェクトを配置するには
catalog.get_project (SSISDB データベース) と catalog.deploy_project (SSISDB データベース) ストアド プロシージャを使用して、サーバー間でプロジェクトを配置できます。
ストアド プロシージャを実行する前に次の操作を行う必要があります。
リンク サーバー オブジェクトを作成します。 詳細については、「リンク サーバーの作成 (SQL Server データベース エンジン)」を参照してください。
[リンク サーバーのプロパティ] ダイアログ ボックスの [サーバー オプション] ページで、[RPC] および [RPC 出力] を [True] に設定します。 そして、[分散トランザクションのプロモーションを RPC に対して有効化] を [False] に設定します。
オブジェクト エクスプローラーの [リンク サーバー] にある [プロバイダー] ノードを展開し、プロバイダーを右クリックして [プロパティ] をクリックすることで、リンク サーバーに対して選択したプロバイダーの動的パラメーターを有効にします。 [動的パラメーター] の横にある [有効化] を選択します。
分散トランザクション コーディネーター (DTC) が両方のサーバーで起動していることを確認します。
プロジェクトのバイナリを返す catalog.get_project を呼び出したら、catalog.deploy_project を呼び出します。 catalog.get_project によって返される値は、varbinary(max) 型のテーブル変数に挿入されます。 リンク サーバーは varbinary(max) 型の結果を返すことができません。
次の例では、catalog.get_project は、リンク サーバーで SSISPackages プロジェクトのバイナリを返します。 catalog.deploy_project は、ローカル サーバーの DestFolder という名前のフォルダーにプロジェクトを配置します。
declare @resultsTableVar table (
project_binary varbinary(max)
)
INSERT @resultsTableVar (project_binary)
EXECUTE [MyLinkedServer].[SSISDB].[catalog].[get_project] 'Packages', 'SSISPackages'
declare @project_binary varbinary(max)
select @project_binary = project_binary from @resultsTableVar
exec [SSISDB].[CATALOG].[deploy_project] 'DestFolder', 'SSISPackages', @project_binary
関連項目
タスク
Integration Services サーバーへのプロジェクトの配置
ヒント