sql >> Databáze >  >> RDS >> Sqlserver

Nasazení projektu SSIS (SQL Server 2012) mimo síť

Máte 3 nástroje pro nasazení souborů .ispac do katalogu SSISDB.

  1. ISDeploymentWizard.exe
  2. ManagedObjectModel
  3. TSQL

Průvodce již používáte a kvůli problémům s ověřením nefunguje. Myslím, že i s vaším přístupem MOM budete stále narážet na problémy s ověřováním. Tím zůstává přístup TSQL a protože máte platné přihlášení, doufejme, že to bude fungovat.

Následující kód serializuje váš .ispac, vytvoří složku nasazení, pokud ještě neexistuje, nasadí projekt a poté přiřadí hodnotu parametru.

V SSMS budete muset změnit svůj režim na režim SQLCMD, který je dostupný v nabídce Dotaz. Poté stiskněte Ctrl-Shift-M pro vyvolání makra a umožní vám určit, kde lze najít soubor .ispac.

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

Pokud jste se zúčastnili konference SQL Pass Summit 2012, předvedl jsem to ve své přednášce na Model nasazení 2012 ale nepokryl jsem parametr část. Věřím, že poslední výzva je správná, ale nemám ji ověřenou. Připojil jsem k dokumentaci pro volání procedury, abyste si ji mohli přizpůsobit svým konkrétním potřebám.

Ukázka implementace PowerShellu

Aktualizace ze srpna 2013

U svého současného klienta jsem se něco naučil. Máme své notebooky, které jsou připojeny k domácí doméně. Máme účty v AD síti klienta. Kdykoli potřebuji něco „udělat“ ve světě klienta, musím spustit svůj proces a dát mu pokyn, aby předložil mé „cizí“ pověření. Co to umožňuje, je RunAs . Alternativní odkaz

Vytvořil jsem sadu dávkových souborů, které spouštějí každý proces, který potřebuji. Mají podobu

runas /netonly:ForeignDomain\Doppelganger "C:\windows\system32\cmd.exe"

Mám jeden pro příkazový řádek (výše), Visual Studio, SSMS, PowerShell, PowerShell ISE a některé další speciální aplikace, které potřebují pracovat se svou doménou.

Pomocí přístupu runas jsem byl schopen nasadit balíčky pomocí všech výše uvedených metod (stejně jako nasazení přímo z instance sady Visual Studio spuštěné s cizími přihlašovacími údaji).



  1. Vložení data z formuláře pomocí PHP Mysql

  2. Co je transakce.commit() v režimu spánku?

  3. Mezi příkazy v určitých případech chybí indexy

  4. sql nadřazený podřízený strom s pořadím řazení