sql >> Database teknologi >  >> RDS >> Sqlserver

Implementering af SSIS (SQL Server 2012) projekt uden for netværk

Du har 3 værktøjer til at implementere .ispac-filer i SSISDB-kataloget.

  1. ISDeploymentWizard.exe
  2. ManagedObjectModel
  3. TSQL

Du bruger allerede guiden, og den virker ikke på grund af godkendelsesproblemer. Jeg tror, ​​at selv med din MOM-tilgang, vil du stadig støde på godkendelsesproblemer. Det forlader TSQL-tilgangen, og da du har et gyldigt logon, vil dette forhåbentlig fungere.

Følgende kode vil serialisere din .ispac, oprette implementeringsmappen, hvis den ikke allerede eksisterer, implementere projektet og derefter tildele en parameterværdi.

I SSMS skal du ændre din tilstand til SQLCMD-tilstand, som er tilgængelig under menuen Forespørgsel. Når du har gjort det, skal du trykke på Ctrl-Shift-M for at få makro-tinget frem, og det vil tillade dig at angive, hvor .ispac-filen kan findes.

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

Hvis du deltog i SQL Pass Summit 2012-konferencen, demonstrerede jeg dette i mit foredrag om 2012-implementeringsmodel men jeg dækkede ikke parameteren en del. Jeg mener, at det sidste opkald er korrekt, men jeg har ikke bekræftet det. Jeg har linket til dokumentationen for procedurekaldet, så du kan skræddersy det til netop dine behov.

Eksempel på PowerShell-implementering

Opdatering august 2013

Jeg har lært noget hos min nuværende kunde. Vi har vores bærbare computere, som er forbundet til hjemmedomænet. Vi har konti på kundens AD-netværk. Når jeg har brug for at "gøre" noget i klientens verden, skal jeg starte min proces og instruere den til at præsentere mine "fremmede" legitimationsoplysninger. Det, der gør dette muligt, er RunAs . Alternativ reference

Jeg oprettede en pakke med batchfiler, der starter alle de processer, jeg har brug for. De har form af

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

Jeg har en til en kommandoprompt (ovenfor), Visual Studio, SSMS, PowerShell, PowerShell ISE og nogle andre specialapps, der skal arbejde med deres domæne.

Ved at bruge runas-tilgangen har jeg været i stand til at implementere pakker ved hjælp af alle ovenstående metoder (såvel som at implementere direkte fra en Visual Studio-instans, der køres med udenlandske legitimationsoplysninger).



  1. Udførelse af SSRS-forespørgsel mislykkedes for datasættet

  2. Hvordan henter jeg kommentaren fra en PostgreSQL-database?

  3. MySQL-visninger

  4. Dot Net Entity Framework-databaseopdatering opretter ikke tabeller i mysql-databasen