Du har 3 værktøjer til at implementere .ispac-filer i SSISDB-kataloget.
- ISDeploymentWizard.exe
- ManagedObjectModel
- 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).