SSISパッケージに取り組んでいます。既存のssisパッケージにもう1つのデータフロータスクを追加しました。新しいタスクの追加が完了した後、パッケージを再構築し、エラーなしで成功しました。開発サーバーに展開する必要がありますか?
Visual Studioの 2012 SSISプロジェクト配置モデル には、プロジェクトパラメーター、プロジェクトレベルの接続マネージャー、パッケージ、およびプロジェクトに追加したその他のファイルが含まれています。
次の図では、Lifecycleという名前のソリューションがあることがわかります。このソリューションには、Lifecycleという名前のプロジェクトがあります。ライフサイクルプロジェクトには、プロジェクトレベル接続マネージャーERIADOR
が定義されており、2つのSSISパッケージ:Package00.dtsxとPackage01.dtsxがあります。
パッケージを実行すると、舞台裏でVisual Studioはまず、必要なすべてのプロジェクト要素をispac(ice-packではなくeye-ess-packと発音)と呼ばれる展開可能なクォンタムにビルド/コンパイルします。これはbin\Development
プロジェクトのサブフォルダー。
Lifecycle.ispacは、次の内容を含むZipファイルです。
これはどういう意味ですか?最大の違いは、更新されたパッケージを展開するだけでなく、.ispac全体を展開する必要があることです。はい、1つのパッケージのみを変更した場合でも、本当にすべてを再デプロイする必要があります。それが人生だ。
ホストオプションを利用できますが、知っておく必要がある3つのことは
これはおそらく最初に最も一般的なオプションです。 SQL Server Data Tools(SSDT)内では、Configuration Managerレベルで、どのサーバーとどのフォルダーにデプロイするかを定義できます。私のクライアントには、開発、ステージ、本番の3つの構成があります。これらの値を定義すると、それらは.dtprojファイルに保存されます。その後、Visual Studioから右クリックして心のコンテンツに展開できます。
SSDTは、何らかの理由で32ビットと64ビットのフレーバーが付属するISDeploymentWizard.exeの呼び出しを実際に構築しているだけです。
.ispac拡張子はISDeploymentWizardに関連付けられているため、ダブルクリックしてすぐに移動できます。最初の画面は、SSDTインターフェイスを使用した場合と比べて新しいものですが、その後、展開するのと同じ一連のクリックになります。
パッケージ展開モデルでひどい2012リリースで彼らが得たものは、マニフェストファイルを自動化された方法で展開できることです。 回避策 がありましたが、それは標準の「もの」であるべきでした。
そのため、SSDTまたはGUIデプロイのいずれかの[レビュー]タブを注意深く見てください。それは美しさではありませんか?
同じ実行可能ファイルISDeploymentWizardを使用すると、.ispacの有人インストーラと無人インストーラの両方を使用できます。そこで2行目を強調表示し、コピーして貼り付ければ、継続的な統合が可能になります!
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe
/Silent
/SourcePath:"C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.ispac"
/DestinationServer:"localhost\dev2012"
/DestinationPath:"/SSISDB/Folder/Lifecycle"
SQL Server Management Studio、SSMS、またはコマンドラインsqlcmd.exeを使用して、ispacをSQL Serverに展開できます。 [〜#〜] sqlcmd [〜#〜] は厳密に必須ではありませんが、スクリプトを簡素化します。
あなたはmustこの操作を実行するためにWindowsアカウントを使用する必要がありますが、そうしないと、次のエラーメッセージが表示されます。
SQL Server認証を使用するアカウントでは、操作を開始できません。 Windows認証を使用するアカウントで操作を開始します。
さらに、一括操作(.ispacのシリアル化)およびSSISDBデータベースに対するssis_admin/sa権限を実行する機能が必要です。
ここでは、OPENROWSETとBULKオプションを使用してispacをvarbinary変数に読み取ります。 catalog.create_folder でフォルダーが存在しない場合は作成し、実際に catalog.deploy_project でプロジェクトをデプロイします。完了したら、操作メッセージテーブルをチェックして、期待どおりに処理されたことを確認します。
USE SSISDB
GO
-- You must be in SQLCMD mode
-- setvar isPacPath "C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.ispac"
:setvar isPacPath "<isPacFilePath, nvarchar(4000), C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.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;
-- Check to see if something went awry
SELECT
OM.*
FROM
catalog.operation_messages AS OM
WHERE
OM.operation_message_id = @operation_id;
たとえば、 Managed Object Model は、パッケージを展開するための.NETインターフェイスを提供します。これは、isDeployを展開するためのPowerShellのアプローチであり、ISDeploymentWizardがサポートしていないオプションであるフォルダーの作成も行います。
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Management.IntegrationServices") | Out-Null
#this allows the debug messages to be shown
$DebugPreference = "Continue"
# Retrieves a 2012 Integration Services CatalogFolder object
# Creates one if not found
Function Get-CatalogFolder
{
param
(
[string] $folderName
, [string] $folderDescription
, [string] $serverName = "localhost\dev2012"
)
$connectionString = [String]::Format("Data Source={0};Initial Catalog=msdb;Integrated Security=SSPI;", $serverName)
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
$integrationServices = New-Object Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices($connection)
# The one, the only SSISDB catalog
$catalog = $integrationServices.Catalogs["SSISDB"]
$catalogFolder = $catalog.Folders[$folderName]
if (-not $catalogFolder)
{
Write-Debug([System.string]::Format("Creating folder {0}", $folderName))
$catalogFolder = New-Object Microsoft.SqlServer.Management.IntegrationServices.CatalogFolder($catalog, $folderName, $folderDescription)
$catalogFolder.Create()
}
return $catalogFolder
}
# Deploy an ispac file into the SSISDB catalog
Function Deploy-Project
{
param
(
[string] $projectPath
, [string] $projectName
, $catalogFolder
)
# test to ensure file exists
if (-not $projectPath -or -not (Test-Path $projectPath))
{
Write-Debug("File not found $projectPath")
return
}
Write-Debug($catalogFolder.Name)
Write-Debug("Deploying $projectPath")
# read the data into a byte array
[byte[]] $projectStream = [System.IO.File]::ReadAllBytes($projectPath)
# $ProjectName MUST match the value in the .ispac file
# else you will see
# Failed to deploy the project. Fix the problems and try again later.:The specified project name, test, does not match the project name in the deployment file.
$projectName = "Lifecycle"
$project = $catalogFolder.DeployProject($projectName, $projectStream)
}
$isPac = "C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.ispac"
$folderName = "Folder"
$folderName = "SSIS2012"
$folderDescription = "I am a description"
$serverName = "localhost\dev2012"
$catalogFolder = Get-CatalogFolder $folderName $folderDescription $serverName
Deploy-Project $isPac $projectName $catalogFolder
これは、SSIS 2016での単一パッケージの展開に関する更新です(これが役立つことを願っています)。
SQL Server 2016およびSSDT 2015のリリースにより、単一パッケージの展開の問題は過去のものとなりました。プロジェクト展開モデル内で個々のパッケージを展開するために登場する新しいDeploy Packageオプション(VS 2015)があります
この新機能を使用すると、コントロールキー(Ctrl)をクリックして押したまま、展開するパッケージを選択することで、複数のパッケージを展開することもできます。
Visual Studio 2015の[パッケージの展開]オプションの他に、ISDeploymentWizardアプリケーションの起動やコマンドライン展開など、パッケージの展開に使用できる他の可能性がいくつかあります。 (これは、SSISのビルドと展開が継続的インテグレーションプロセスの一部として自動化または管理される場合に必要です)。この記事に移動して詳細を確認できます。 http://www.sqlshack.com/single-package-deployment-in-sql-server-integration-services-2016/
SSIS 2012でプロジェクトモデルを使用している場合は、パッケージを変更するたびにプロジェクトを展開する必要があります。簡単にできることは: