Anda memiliki 3 alat untuk menerapkan file .ispac ke dalam katalog SSISDB.
- ISDeploymentWizard.exe
- ManagedObjectModel
- TSQL
Anda sudah menggunakan wizard dan tidak berfungsi karena masalah autentikasi. Saya pikir bahkan dengan pendekatan MOM Anda, Anda masih akan mengalami masalah autentikasi. Itu meninggalkan pendekatan TSQL dan karena Anda memiliki login yang valid, semoga ini akan berhasil.
Kode berikut akan membuat serial .ispac Anda, membuat folder penerapan jika belum ada, menyebarkan proyek dan kemudian menetapkan nilai parameter.
Di SSMS, Anda perlu mengubah mode Anda ke mode SQLCMD yang tersedia di bawah menu Query. Setelah melakukan itu, tekan Ctrl-Shift-M untuk memunculkan makro dan itu akan memungkinkan Anda untuk menentukan di mana file .ispac dapat ditemukan.
USE SSISDB
GO
IF ('$(isPacPath)' = '$' + '(isPacPath)')
BEGIN
THROW 50000, N'This script must be run in SQLCMD mode.', 1;
END
GO
-- You must be in SQLCMD mode
-- setvar isPacPath "C:\sandbox\SSDTDeploy\TSQLDeploy\bin\Development\TSQLDeploy.ispac"
:setvar isPacPath "<isPacFilePath, nvarchar(4000), C:\sandbox\SSDTDeploy\TSQLDeploy\bin\Development\TSQLDeploy.ispac>"
DECLARE
@folder_name nvarchar(128) = 'TSQLDeploy'
, @folder_id bigint = NULL
-- this must match the ispac
, @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;
-- Use this to set parameters
-- http://msdn.microsoft.com/en-us/library/ff878162.aspx
EXECUTE catalog.set_object_parameter_value
-- Use the value 20 to indicate a project parameter
-- or the value 30 to indicate a package parameter
@object_type = 20
, @folder_name = @folder_name
, @project_name = @project_name
, @parameter_name = N'' -- nvarchar(128)
, @parameter_value = NULL -- sql_variant
, @object_name = N'' -- nvarchar(260)
, @value_type = '' -- char(1)
-- Use the character V to indicate that parameter_value is a literal value
-- that will be used by default if no other values are assigned prior
-- to execution.
-- Use the character R to indicate that parameter_value is a referenced value
-- and has been set to the name of an environment variable.
-- This argument is optional, the character V is used by default
Jika Anda menghadiri konferensi SQL Pass Summit 2012, saya mendemonstrasikan ini dalam ceramah saya di Model Penerapan 2012 tapi saya tidak membahas parameter bagian. Saya percaya bahwa panggilan terakhir itu benar tetapi saya belum memverifikasinya. Saya telah menautkan ke dokumentasi untuk panggilan prosedur sehingga Anda dapat menyesuaikannya dengan kebutuhan spesifik Anda.
Contoh implementasi PowerShell
Pembaruan Agustus 2013
Saya telah belajar sesuatu di klien saya saat ini. Kami memiliki laptop kami yang bergabung dengan domain rumah. Kami memiliki akun di jaringan AD klien. Setiap kali saya perlu "melakukan" sesuatu di dunia klien, saya perlu meluncurkan proses saya dan menginstruksikannya untuk menunjukkan kredensial "asing" saya. Apa yang memungkinkan hal ini adalah RunAs . Alternatif referensi
Saya membuat serangkaian file batch yang meluncurkan setiap proses yang saya butuhkan. Mereka mengambil bentuk
runas /netonly:ForeignDomain\Doppelganger "C:\windows\system32\cmd.exe"
Saya punya satu untuk prompt perintah (di atas), Visual Studio, SSMS, PowerShell, PowerShell ISE dan beberapa aplikasi khusus lainnya yang perlu bekerja dengan domain mereka.
Dengan menggunakan pendekatan runas, saya dapat men-deploy paket menggunakan semua metode di atas (serta men-deploy langsung dari instance Visual Studio yang dijalankan dengan kredensial asing).