Share via


SQL Server Integration Services (SSIS) DevOps ツール Azure DevOps 拡張機能

SSIS DevOps Tools 拡張機能は Azure DevOps Marketplace で入手できます。 SSIS DevOps では、Azure DevOps ServicesAzure DevOps Server 2019 以降がサポートされています。

Azure DevOps 組織がない場合、まず、Azure Pipelines に新規登録し、次の手順SSIS DevOps ツール拡張機能を追加します。

SSIS DevOps ツールには、SSIS Build タスク、SSIS Deploy リリース タスク、および SSIS Catalog Configuration タスクが含まれています。

  • SSIS Build タスクでは、プロジェクト デプロイ モデルまたはパッケージ デプロイ モデルでの dtproj ファイルのビルドがサポートされます。

  • SSIS Deploy タスクでは、1 つまたは複数の ispac ファイルをオンプレミスの SSIS カタログと Azure-SSIS IR にデプロイしたり、SSISDeploymentManifest ファイルとその関連ファイルをオンプレミスまたは Azure ファイル共有にデプロイしたりできます。

  • SSIS Catalog Configuration タスクでは、JSON 形式の構成ファイルを使用した SSIS カタログのフォルダー、プロジェクト、環境の構成がサポートされます。 このタスクでは次のシナリオがサポートされます。

    • フォルダー
      • フォルダーを作成します。
      • フォルダーの説明を更新します。
    • プロジェクト
      • パラメーターの値を構成します。literal 値と referenced 値の両方がサポートされます。
      • 環境参照を追加します。
    • 環境
      • 環境を作成します。
      • 環境の説明を更新します。
      • 環境変数を作成または更新します。

SSIS Build タスク

build task

プロパティ

プロジェクト パス

ビルドするプロジェクト フォルダーまたはファイルのパス。 フォルダー パスが指定されている場合、SSIS Build タスクでは、このフォルダーの下にあるすべての dtproj ファイルが繰り返し検索され、すべてビルドされます。

プロジェクト パスを "" にすることはできません。. として設定して、リポジトリのルート フォルダーからビルドします。

プロジェクトの構成

ビルドに使用されるプロジェクト構成の名前。 指定されていない場合、各 dtproj ファイルに最初に定義されているプロジェクト構成が選択されます。

[出力パス]

ビルド成果物の公開タスクによってビルド成果物として公開できるビルド結果を保存するための個別フォルダーのパス。

制限事項と既知の問題

  • SSIS Build タスクは Visual Studio と、ビルド エージェントで必須となる SSIS デザイナーに依存します。 したがって、パイプラインで SSIS ビルド タスクを実行するには、次の手順を実行します。

    • Microsoft ホステッド エージェントの場合は、Visual Studioと SQL Server Integration Services 拡張機能 (windows-2022 など) を含む使用可能なイメージを選択する必要があります。 使用可能なイメージに含まれるソフトウェアの詳細については、Microsoft がホステッド エージェントのドキュメントを参照してください。
    • セルフホステッド エージェントの場合は、セルフホステッド エージェント上で Visual Studio および SSIS デザイナー (VS2022 + SSIS Projects 拡張機能、または VS2019 + SSIS Projects 拡張機能) をインストールします。
  • 面倒な設定の要らないコンポーネント (SSIS Azure Feature Pack やその他のサードパーティ コンポーネント) を利用して SSIS プロジェクトをビルドするには、パイプライン エージェントが実行されているコンピューターにそのようなコンポーネントをインストールする必要があります。 Microsoft によってホストされるエージェントの場合、PowerShell Script タスクまたは Command Line Script タスクを追加してコンポーネントをダウンロードし、インストールしてから SSIS Build タスクを実行できます。 次に示すのは、Azure Feature Pack をインストールするための PowerShell のサンプル スクリプトです。

wget -Uri https://download.microsoft.com/download/E/E/0/EE0CB6A0-4105-466D-A7CA-5E39FA9AB128/SsisAzureFeaturePack_2017_x86.msi -OutFile AFP.msi

start -Wait -FilePath msiexec -Args "/i AFP.msi /quiet /l* log.txt"

cat log.txt
  • 保護レベルの EncryptSensitiveWithPasswordEncryptAllWithPassword は SSIS Build タスクではサポートされていません。 コードベースのいずれの SSIS プロジェクトでもこの 2 つの保護レベルが使用されていないことを確認してください。使用されている場合、SSIS Build タスクの実行中、応答が停止し、タイムアウトになります。

SSIS Build タスク バージョン 1.*

バージョン 1.* の機能強化:

  • Visual Studio と SSIS デザイナーの依存関係を削除します。 ビルド タスクは、Windows OS と .NET framework 4.6.2 以上で、Microsoft がホストするエージェントまたは自己ホスト型エージェントで実行できます。

  • 面倒な設定の要らないコンポーネントをインストールする必要はありません。

  • 保護レベル EncryptionWithPassword および EncryptionAllWithPassword がサポートされています。

制限事項と既知の問題

  • SSIS ビルド タスク バージョン 1.* では、デジタル署名を使用した SSIS パッケージを含む SSIS プロジェクトのビルドはサポートされていません。

バージョン 1.* のみのプロパティ

プロジェクトのパスワード

SSIS プロジェクトとそのパッケージのパスワード。 この引数は、SSIS プロジェクトとパッケージの保護レベルが EncryptSensitiveWithPassword または EncryptAllWithPassword の場合にのみ有効です。 パッケージ配置モデルでは、この引数で指定されたのと同じパスワードが、すべてのパッケージで共有される必要があります。

機密データの削除

この値が true である場合、SSIS プロジェクトの保護レベルを DontSaveSensitve に変換します。 保護レベルが EncryptSensitiveWithPassword または EncryptAllWithPassword の場合は、引数 Project Password を正しく設定する必要があります。 このオプションは、プロジェクト配置モデルに対してのみ有効です。

SSIS Deploy タスク

deploy task

プロパティ

ソース パス

デプロイするソース ISPAC ファイルまたは SSISDeploymentManifest ファイルのパス。 このパスはフォルダー パスやファイル パスになることがあります。

変換先の型

デプロイ先の種類。 SSIS Deploy タスクでは現在、2 つの種類がサポートされています。

  • ファイル システム:SSISDeploymentManifest ファイルとその関連ファイルを指定のファイル システムにデプロイします。 オンプレミスと Azure ファイル共有の両方がサポートされています。
  • SSISDB:オンプレミスの SQL Server または Azure-SSIS Integration Runtime でホストできる指定の SSIS カタログに ISPAC ファイルをデプロイします。

[転送先サーバー]

宛先データベース エンジンの名前。 これは、オンプレミスの SQL Server、Azure SQL Database、または Azure SQL Managed Instance の名前にすることができます。 このプロパティは、宛先の種類が SSISDB の場合にのみ表示されます。

宛先のパス

ソース ファイルがデプロイされる宛先フォルダーのパス。 次に例を示します。

  • /SSISDB/<folderName>
  • \\<machineName>\<shareFolderName>\<optionalSubfolderName>

フォルダーやサブフォルダーが存在しない場合、SSIS Deploy タスクによって作成されます。

認証の種類

指定の宛先サーバーにアクセスするための認証の種類。 このプロパティは、宛先の種類が SSISDB の場合にのみ表示されます。 一般に、以下の認証の種類がサポートされています。

  • Windows 認証
  • SQL Server 認証
  • Active Directory - パスワード
  • Active Directory - 統合

しかし、特定の種類の認証がサポートされるかどうかは、宛先サーバーの種類やエージェントの種類によって異なります。 サポート マトリックスの詳細を一覧にしたものが下の表になります。

宛先サーバーの種類 Microsoft によってホストされるエージェント 自己ホスト エージェント
オンプレミスの SQL Server または VM 該当なし Windows 認証
Azure SQL SQL Server 認証
Active Directory - パスワード
SQL Server 認証
Active Directory - パスワード
Active Directory - 統合

ドメイン名

指定のファイル システムにアクセスするためのドメイン名。 このプロパティは、宛先の種類がファイル システムの場合にのみ表示されます。 自己ホスト エージェントを実行するユーザー アカウントに指定の宛先パスの読み取り/書き込みアクセスが付与されている場合、この項目は空のまま残すことができます。

ユーザー名

指定のファイル システムまたは SSISDB にアクセスするためのユーザー名。 このプロパティは宛先の種類がファイル システムの場合か、認証の種類が SQL Server 認証か "アクティブ ディレクトリ - パスワード" の場合に表示されます。 宛先の種類がファイル システムであり、自己ホスト エージェントを実行するユーザー アカウントに指定の宛先パスの読み取り/書き込みアクセスが付与されている場合、この項目は空のまま残すことができます。

Password

指定のファイル システムまたは SSISDB にアクセスするためのパスワード。 このプロパティは宛先の種類がファイル システムの場合か、認証の種類が SQL Server 認証か "アクティブ ディレクトリ - パスワード" の場合に表示されます。 宛先の種類がファイル システムであり、自己ホスト エージェントを実行するユーザー アカウントに指定の宛先パスの読み取り/書き込みアクセスが付与されている場合、この項目は空のまま残すことができます。

同じ名前の既存のプロジェクトまたは SSISDeploymentManifest ファイルを上書きする

同じ名前の既存のプロジェクトまたは SSISDeploymentManifest ファイルを上書きするかどうかを指定します。 "いいえ" の場合、SSIS Deploy では、そのようなプロジェクトまたはファイルのデプロイがスキップされます。

エラーの発生時にデプロイを続行する

エラーの発生時に残りのプロジェクトまたはファイルのデプロイを続行するかどうかを指定します。 "いいえ" の場合、エラーの発生直後に SSIS Deploy タスクが停止します。

制限事項と既知の問題

SSIS Deploy タスクでは、現在、次のシナリオはサポートされていません。

  • SSIS カタログでの環境の構成。
  • 多要素認証のみが許可される、Azure SQL Server または Azure SQL Managed Instance への ISPAC のデプロイ。
  • MSDB または SSIS パッケージ ストアへのパッケージのデプロイ。
  • Azure DevOps Server で SSIS DevOps Tools 拡張機能をインストールすると、"拡張機能のパッケージ サイズが最大パッケージ サイズを超えています" というメッセージが表示される場合があります。この問題を解決するには、次の手順を実行します。
    1. オンプレミスの SQL Server インスタンスに接続し、データベース Gallery_Configuration を選択します。
    2. クエリ INSERT INTO dbo.tbl_RegistryItems VALUES (1,'#\Configuration\Service\Gallery\LargeExtensionUpload\SSIS\','MaxPackageSizeMB\',50) を実行します。 拡張機能が 50 MB より大きい場合は、50 をそれ以上の数値に変更します。
    3. クエリを実行した後、インターネット インフォメーション サービスを再起動します。 拡張機能のアップロードを再試行します。
    4. エラーが解決しない場合は、SQL Server サポート チームにお問い合わせください。

SSIS Deploy タスク バージョン 1.*

バージョン 1.* の機能強化:

  • 保護レベル EncryptionWithPassword および EncryptionAllWithPassword がサポートされています。

バージョン 1.* のみのプロパティ

プロジェクトのパスワード

ISPAC または DTSX ファイルを復号化するためのパスワード。 この引数は、保護レベルが EncryptSensitiveWithPassword または EncryptAllWithPassword の場合にのみ有効です。

SSIS Catalog Configuration タスク

catalog configuration task

プロパティ

構成ファイルのソース

SSIS カタログ構成 JSON ファイルのソース。 [ファイル パス] または [インライン] にすることができます。

構成 JSON を定義する方法の詳細を参照してください。

構成 JSON ファイルのパス

SSIS カタログ構成 JSON ファイルのパス。 このプロパティは、構成ファイル ソースとして [ファイル パス] を選択した場合にのみ表示されます。

構成 JSON ファイルでパイプライン変数を使用するには、このタスクの前に File Transform タスクを追加して、構成値をパイプライン変数に置き換える必要があります。 詳細については、「JSON 変数置換」を参照してください。

インライン構成 JSON

SSIS カタログ構成のインライン JSON。 このプロパティは、構成ファイル ソースとして "インライン" を選択した場合にのみ表示されます。 パイプライン変数は直接使用できます。

エラーが発生したときに構成をロールバックする

エラーが発生したときに、このタスクによって行われた構成をロールバックするかどうか。

ターゲット サーバー

ターゲット データベース エンジンの名前。 これは、オンプレミスの SQL Server、Azure SQL Database、または Azure SQL Managed Instance の名前にすることができます。

認証の種類

指定されたターゲット サーバーにアクセスするための認証の種類。 一般に、以下の認証の種類がサポートされています。

  • Windows 認証
  • SQL Server 認証
  • Active Directory - パスワード
  • Active Directory - 統合

しかし、特定の種類の認証がサポートされるかどうかは、宛先サーバーの種類やエージェントの種類によって異なります。 サポート マトリックスの詳細を一覧にしたものが下の表になります。

宛先サーバーの種類 Microsoft によってホストされるエージェント 自己ホスト エージェント
オンプレミスの SQL Server または VM 該当なし Windows 認証
Azure SQL SQL Server 認証
Active Directory - パスワード
SQL Server 認証
Active Directory - パスワード
Active Directory - 統合

ユーザー名

ターゲット SQL Server にアクセスするためのユーザー名。 このプロパティは、認証の種類が SQL Server 認証またはアクティブ ディレクトリ - パスワードの場合にのみ表示されます。

Password

ターゲット SQL Server にアクセスするためのパスワード。 このプロパティは、認証の種類が SQL Server 認証またはアクティブ ディレクトリ - パスワードの場合にのみ表示されます。

構成 JSON を定義する

構成 JSON スキーマには、次の 3 つの層があります。

  • catalog
  • folder
  • project と environment

catalog configuration schema

インライン構成 JSON のサンプル

{
  "folders": [
    {
      "name": "devopsdemo",
      "description": "devops demo folder",
      "projects": [
        {
          "name": "catalog devops",
          "parameters": [
            {
              "name": "password",
              "container": "Package.dtsx",
              "value": "passwd",
              "valueType": "referenced"
            },
            {
              "name": "serverName",
              "container": "catalog devops",
              "value": "localhost",
              "valueType": "literal"
            }
          ],
          "references": [
            {
              "environmentName": "test",
              "environmentFolder": "devopsdemo"
            },
            {
              "environmentName": "test",
              "environmentFolder": "."
            }
          ]
        }
      ],
      "environments": [
        {
          "name": "test",
          "description": "test",
          "variables": [
            {
              "name": "passwd",
              "type": "string",
              "description": "",
              "value": "$(SSISDBServerAdminPassword)",
              "sensitive": true
            },
            {
              "name": "serverName",
              "type": "string",
              "description": "",
              "value": "$(TargetServerName)",
              "sensitive": false
            }
          ]
        }
      ]
    }
  ]
}

JSON スキーマ

カタログ属性
プロパティ 説明 Notes
フォルダー フォルダー オブジェクトの配列。 各オブジェクトには、カタログ フォルダーの構成情報が含まれています。 フォルダー オブジェクトのスキーマについては、「フォルダー属性」を参照してください。
フォルダー属性
プロパティ 説明 Notes
name カタログ フォルダーの名前。 フォルダーが存在しない場合は作成されます。
description カタログ フォルダーの説明。 null の値はスキップされます。
projects プロジェクト オブジェクトの配列。 各オブジェクトには、プロジェクトの構成情報が含まれています。 プロジェクト オブジェクトのスキーマについては、「プロジェクト属性」を参照してください。
環境 環境オブジェクトの配列。 各オブジェクトには、環境の構成情報が含まれています。 環境オブジェクトのスキーマについては、「環境属性」を参照してください。
プロジェクト属性
プロパティ 説明 Notes
name プロジェクトの名前。 プロジェクトが親フォルダーに存在しない場合、プロジェクト オブジェクトはスキップされます。
parameters パラメーター オブジェクトの配列です。 各オブジェクトには、パラメーターの構成情報が含まれています。 パラメーター オブジェクトのスキーマについては、「パラメーター属性」を参照してください。
references 参照オブジェクトの配列。 各オブジェクトは、ターゲット プロジェクトへの環境参照を表します。 参照オブジェクトのスキーマについては、「参照属性」を参照してください。
パラメーター属性
プロパティ 説明 Notes
name パラメーターの名前。
  • パラメーターには、プロジェクト パラメーターまたはパッケージ パラメーターを使用できます。
  • 存在しない場合は、パラメーターはスキップされます。
  • パラメーターが接続マネージャー プロパティの場合、名前は CM.<接続マネージャー名>.<プロパティ名> の形式である必要があります。
  • container パラメーターのコンテナー。
  • パラメーターがプロジェクト パラメーターの場合、container はプロジェクト名である必要があります。
  • パッケージ パラメーターの場合、container は、拡張子が .dtsx のパッケージ名である必要があります。
  • value パラメーターの値。
  • valueTypereferenced の場合: 値は string 型の環境変数への参照です。
  • valueTypeliteral の場合: この属性では、任意の有効な "ブール値"、"数値"、および "文字列" の JSON 値がサポートされます。
  • 値は、ターゲット パラメーターの型に変換されます。 変換できない場合はエラーが発生します。
  • null の値は無効です。 タスクではこのパラメーター オブジェクトがスキップされ、警告が示されます。
  • valueType パラメーター値の型。 有効な型は次のとおりです。
    literal: value 属性はリテラル値を表します。
    referenced: value 属性は、環境変数への参照を表します。
    参照属性
    プロパティ 説明 Notes
    environmentFolder 環境のフォルダー名。 フォルダーが存在しない場合は作成されます。
    値は "." にすることができます。これは、環境を参照する、プロジェクトの親フォルダーを表します。
    environmentName 参照先環境の名前。 存在しない場合は、指定された環境が作成されます。
    環境属性
    プロパティ 説明 Notes
    name 環境の名前。 環境が存在しない場合は作成されます。
    description 環境の説明。 null の値はスキップされます。
    variables 変数オブジェクトの配列。 各オブジェクトには、環境変数の構成情報が含まれています。変数オブジェクトのスキーマについては、「変数属性」を参照してください。
    変数属性
    プロパティ 説明 Notes
    name 環境変数の名前。 環境変数が存在しない場合は作成されます。
    type 環境変数のデータ型。 有効な型は次のとおりです。
    boolean
    byte
    datetime
    decimal
    double
    int16
    int32
    int64
    sbyte
    single
    string
    uint32
    uint64
    description 環境変数の説明。 null の値はスキップされます。
    value 環境変数の値。 この属性では、任意の有効なブール値、数値、および文字列の JSON 値がサポートされます。
    値は type 属性によって指定された型に変換されます。 変換に失敗すると、エラーが発生します。
    null の値は無効です。 タスクではこの環境変数オブジェクトがスキップされ、警告が示されます。
    sensitive 環境変数の値が機微であるかどうか。 有効な入力は次のとおりです。
    true
    false

    リリース ノート

    バージョン 1.0.6

    リリース日: 2021 年 9 月 1 日

    • 一般提供 (GA) リリース。

    バージョン 1.0.5

    リリース日: 2021 年 6 月 2 日

    • バージョン 1.* の SSIS ビルド タスクが時々保護レベルの EncryptSensitiveWithPassword または EncryptAllWithPassword でプロジェクトまたはパッケージをビルドできず、"指定された初期化ベクトル (IV) がこのアルゴリズムのブロック サイズと一致しません" というエラーが発生する問題を修正しました。
    • "構成ファイル ソース" が "ファイル パス" である場合に、SSIS カタログ構成タスクのログ内にある JSON コンテンツを削除しました。

    バージョン 1.0.4

    リリース日: 2021 年 4 月 21 日

    • SSIS ビルド タスク バージョン 1.* (プレビュー)
      • Visual Studio と SSIS デザイナーの依存関係を削除します。 ビルド タスクは、Windows OS と .NET framework 4.6.2 以上で、Microsoft がホストするエージェントまたは自己ホスト型エージェントで実行できます。
      • 面倒な設定の要らないコンポーネントをインストールする必要はありません。
      • 保護レベル EncryptionWithPassword および EncryptionAllWithPassword がサポートされています。
    • SSIS Deploy タスク バージョン 1.* (プレビュー)
      • 保護レベル EncryptionWithPassword および EncryptionAllWithPassword がサポートされています。

    バージョン 1.0.3

    リリース日:2020 年 10 月 21 日

    • SSIS Deploy タスクと SSIS Catalog Configuration タスクに接続文字列サフィックスを指定できます。

    バージョン 1.0.2

    リリース日:2020 年 5 月 26 日

    • 構成作業が完了した後に SSIS Catalog Configuration タスクが失敗する場合があるという問題を修正しました。

    Version 1.0.1

    リリース日:2020 年 5 月 9 日

    • プロジェクト パスとして 1 つの dtproj ファイルのみが指定されている場合でも、SSIS ビルド タスクによって常にソリューション全体がビルドされる問題を修正しました。

    バージョン 1.0.0

    リリース日:2020 年 5 月 8 日

    • 一般公開 (GA) リリース。
    • エージェントに対する .NET Framework の最小バージョンに制限が追加されました。 現在、.NET Framework の最小バージョンは 4.6.2 です。
    • SSIS Build タスクと SSIS Deploy タスクの説明が改善されました。

    バージョン 0.2.0 プレビュー

    リリース日:2020 年 3 月 31 日

    • SSIS Catalog Configuration タスクを追加します。

    バージョン 0.1.3 プレビュー

    リリース日:2020 年 1 月 19 日

    • 元のファイル名が変更された場合に、ispac を展開できない問題を修正しました。

    バージョン 0.1.2 Preview

    リリース日:2020 年 1 月 13 日

    • 宛先の種類が SSISDB である場合、SSIS Deploy タスク ログにより詳細な例外情報が追加されていましす。
    • SSIS Deploy タスクのプロパティ Destination パスのヘルプ テキスト内の宛先パスの例が修正されています。

    バージョン 0.1.1 プレビュー

    リリース日:2020 年 1 月 6 日

    • 最小エージェント バージョン要件の制約が追加されました。 現在、この製品の最小エージェント バージョンは 2.144.0 です。
    • SSIS Deploy タスクの表示テキストの間違いがいくつか修正されました。
    • エラー メッセージがいくつか改善されました。

    バージョン 0.1.0 プレビュー

    リリース日:2019 年 12 月 5 日

    SSIS DevOps ツールの初回リリース。 これはプレビュー リリースです。

    次のステップ