Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menyebarkan Proyek SSIS (SQL Server 2012) Di Luar Jaringan

Anda memiliki 3 alat untuk menerapkan file .ispac ke dalam katalog SSISDB.

  1. ISDeploymentWizard.exe
  2. ManagedObjectModel
  3. 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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana kita bisa memeriksa bahwa tabel memiliki indeks atau tidak?

  2. Bagaimana menemukan kombo bidang duplikat

  3. Pengembang Sql 2008 ke Sql Azure Migration

  4. Perbaiki Msg 8117 "Operand tipe data varchar tidak valid untuk operator penjumlahan" di SQL Server

  5. Arah pesanan dinamis