web-dev-qa-db-ja.com

SQL Server Data Tools 2015でSSISパッケージを展開できません(宛先サーバー名はパスワードの入力を許可していません)

とてもイライラしています。 SQL Server Data Tools 2015を使用しています。IntegrationServicesプロジェクトがあり、このソリューションの単一のパッケージをSQL Server 2012に展開します。ソリューションを[Deployment Target Server Version to SQL 2012]に設定しました。右クリックしますパッケージで[展開]を選択しますが、ウィザードの[宛先の選択]部分では、サーバー名のみを選択できます(資格情報を入力できません)。ただし、ドメインアカウントは有効なログインではないため、特定のユーザー名とパスワードを入力する必要があります。

私はそのウィザードが最終的にisdeploymentwizard.exeを実行することを理解し、そのパラメーターも調べましたが、サーバー名の外に接続情報を入力する方法がわかりません。

信頼できるアカウントの代わりにユーザー名とパスワードを使用して、このパッケージをサーバーに展開するにはどうすればよいですか? Googleを1時間検索しても同様の問題のある人を見つけることができなかったので、信じられないほど愚かなものを見逃しているように感じます。どうやらSSDT2015からSQL Serverにデプロイする全員が信頼できるアカウントを使用しているようです。

編集:古いバージョンのBIDSでは、プロジェクトを開き、[ファイル]> [.dtsxのコピーを保存]を選択して、SQLサーバーに保存し、認証情報を使用できました。ただし、SSDTでは、[コピーを保存]オプションでは、パッケージをローカルに保存することしかできません。

4
Brad

MSDNフォーラムの この投稿 によると、それは単に不可能です。パッケージを展開するには、Windows認証を使用する必要があります。ただし、[パッケージデプロイメントモデルに変換]をクリックすると、[コピーを名前を付けて保存]機能でSQL Serverに保存できることがわかりました。しかし、そうしようとすると、次のメッセージが表示されます。

SQL Serverにパッケージを格納または変更するには、SSISランタイムとデータベースが同じバージョンである必要があります。以前のバージョンでのパッケージの保存はサポートされていません。

SSDT 2015(展開ターゲットサーバーをSQL 2016からSQL 2012またはSQL 2014のいずれかに変更できます)では、SSISランタイムをインストールせずにパッケージをSQL 2012またはSQL 2014のSQLサーバーに保存できないようです。

SSDT2015のインストール中に dtutil によって同様のエラーがスローされ、110、120、および130バージョンが(C:\Program Files (x86)\Microsoft SQL Server\xxx\DTS\Binnディレクトリに)インストールされているように見えます。

C:\ Program Files(x86)\ Microsoft SQL Server\110\DTS\Binn> dtutil /?

Microsoft(R)SQL Server SSISパッケージユーティリティバージョン11.0.6020.0(32ビット版)Copyright(C)Microsoft Corporation 2012。

このアプリケーションには、SQL Server 2012 Standard、Enterprise、Developer、Business Intelligence、またはEvaluation Editionによってインストールされるコンポーネントの1つであるIntegration Services、Business Intelligence Studio、Management Tools-BasicまたはDatabase Engineが必要です。コンポーネントをインストールするには、SQL Serverセットアップを実行し、コンポーネント名を選択します。

SQL 2012セットアップからIntegration Services共有機能をインストールしても、SSDT内で[名前を付けてコピーを保存]機能を使用しようとしたときのエラーメッセージは変わりませんでしたが、dtutilを使用してパッケージをサーバーに正常にコピーできました。

TLDR;

  • Integration Servicesプロジェクトを変換して、パッケージ配置モデルを使用します。
  • Integration Servicesの共有機能が、パッケージを展開するSQLのバージョンに対してローカルにインストールされていることを確認してください。
  • Dtutilを使用してパッケージをサーバーにコピーします。つまり、C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn>dtutil /FILE "C:\path\to\mypackage.dtsx" /DestServer SERVER\INSTANCE /DestUser MyUserName /DestPassword MyPassword /Encrypt SQL;PackageNameOnServer;2;PackagePassword(別の暗号化レベルを使用するか、/ Encryptを使用する代わりに/ Copyを使用できます。dtutilのドキュメントを参照してください)
1
Brad

あなたはここでたくさん起こっています。

パッケージとプロジェクトの配置モデル

2012リリース以降、SSISプロジェクトでは、パッケージ配置モデルとプロジェクト配置モデルのどちらかを選択できます。プロジェクトでは、プロジェクトレベルのアーティファクト(共有接続マネージャー、プロジェクト(およびパッケージ)パラメーター)を作成できます。新しいプロジェクトのデフォルトの配置モデルはプロジェクト配置モデルです。

プロジェクト配置モデルの配置可能なコードの単位は.ispacファイルです。 SSISパッケージ+プロジェクトパラメーター+共有接続マネージャー+マニフェストファイルは、MyProject.ispacという名前のファイルに圧縮されます。 ispacファイルは、SSISDBと呼ばれるSQL Serverカタログに展開されます。

パッケージ展開モデルからの展開可能なコードの単位は、SSISパッケージ自体です。 .dtsxファイルは、ファイルシステム、SSISパッケージストア(ファイルシステムのみ)、またはSQL Serverインスタンスに展開できます。ただし、SSISパッケージはMSDBに格納されます(sysdtspackages90/sysssispackages)

2016リリースでは、.dtsxパッケージをSSISDBに展開できるようになり、上記のマトリックスが複雑になっています。これは、段階的な導入ストーリーに対応するためです。舞台裏でispacが生成され、それがデプロイされます。しかし、それはあなたの2012年の物語を助けない2016年のサーバーのためだけのものです。

SSISバージョン

SSISパッケージには、使用しているSQL Serverおよびツールのバージョン(2005/2008/2008 R2/2012/2014/2016/v.Next)に対応するバージョンがあります。パッケージは、*のみ上位互換であるため、2014ツールを使用して2005パッケージを誤って開いた場合(またはそれを使用して2005インスタンスにデプロイした場合)は、現在のバージョンにアップグレードして、それが存在しない場所にデプロイしたことになります。その方言を話しなさい。

ツールがターゲティングをサポートするようになったため、2016はこの問題を混乱させます(プロジェクト->プロパティ、構成プロパティ->一般:TargetServerVersion)

配備

Ispacsはisdeploymentwizard.exeを介してデプロイされるか、TSQLで実行できます。

-- You must be in SQLCMD mode
-- Otherwise, modify the value of $(isPacPath) down below
:setvar isPacPath "C:\sandbox\SSDTDeploy\TSQLDeploy\bin\Development\TSQLDeploy.ispac"

DECLARE
    @folder_name nvarchar(128) = 'TSQLDeploy'
,   @folder_id bigint = NULL
,   @project_name nvarchar(128) = 'TSQLDeploy'
,   @project_stream varbinary(max)
,   @operation_id bigint = NULL;

-- Read the Zip (ispac) data in from the source file
SELECT
    @project_stream = T.stream
FROM
(
    SELECT 
        *
    FROM 
        OPENROWSET(BULK N'$(isPacPath)', SINGLE_BLOB ) AS B
) AS T (stream);

-- Test for catalog existences
IF NOT EXISTS
(
    SELECT
        CF.name
    FROM
        catalog.folders AS CF
    WHERE
        CF.name = @folder_name
)
BEGIN
    -- Create the folder for our project
    EXECUTE [catalog].[create_folder] 
        @folder_name
    ,   @folder_id OUTPUT;
END

-- Actually deploy the project
EXECUTE [catalog].[deploy_project] 
    @folder_name
,   @project_name
,   @project_stream
,   @operation_id OUTPUT;

ローカルSQLユーザーになることができるので、それはあなたが望んでいるように聞こえますが、メモリが機能する場合、上記の関数は、Windowsユーザーでない場合に失敗するこの偽装ジッジェリーを実行します。

このアプリケーションには、コンポーネントの1つが必要です。

2005/2008/2008 R2では、インストールメディアでSSDT、nee BIDSしか入手できませんでした。つまり、SSISパッケージを構築するには、少なくともDeveloper Editionが必要でした。 2012以降、SQL Serverのライセンスがなくても、SSDTツールをMSから直接ダウンロードできます。ただし、開発目的でのみライセンスが付与されます。コマンドラインツールは開発ツールとして分類されていないため、dtutilまたはdtexecはどちらもライセンスチェックに失敗し、上記(または同様のエラーメッセージ)を報告します。

あなたが指摘するように、解決策は、Integration Servicesサービスを、Integration Services開発だけではなく「より多く」を必要とするマシンにインストールすることです。これはライセンスの観点からSQL Serverのインストールとしてカウントされることに注意してください。ライセンスを処理する組織内の担当者が、これを行ったマシンを認識していることを確認してください。そうすれば、不愉快な驚きの監査時間がなくなります。

3
billinkc

Visual Studioを閉じてから、次のコマンドを使用してコマンドプロンプトから開きます。他のサーバーに接続するために必要なパスワードの入力を求められます。

 runas.exe /netonly /user:OTHERDOMAIN\OtherUser "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"

/ netonlyは、ネットワークを介して通信するときにこれらの代替資格情報を使用するように指示します。 OTHERDOMAIN\OtherUserを変更して、リモートシステムへの接続に必要なユーザー名に一致させます。そして最後の部分はVisual Studio 2015へのパスです。

これが完了すると、別の資格情報を再度提供することなく展開できるはずです。

ちなみに、 Deploy SSIS Packages 機能を活用して単一のパッケージの展開を容易にするために、無料のBIDSヘルパーをインストールすることを強くお勧めします。まだrunas.exeが必要です。

0
GregGalloway