Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wdrażanie projektu SSIS (SQL Server 2012) poza siecią

Masz 3 narzędzia do wdrażania plików .ispac w katalogu SSISDB.

  1. ISDeploymentWizard.exe
  2. ManagedObjectModel
  3. TSQL

Używasz już kreatora i nie działa on z powodu problemów z uwierzytelnianiem. Myślę, że nawet przy podejściu MOM nadal będziesz mieć problemy z autoryzacją. Pozostawia to podejście TSQL, a ponieważ masz prawidłowe logowanie, miejmy nadzieję, że to zadziała.

Poniższy kod spowoduje serializację pliku ispac, utworzenie folderu wdrożenia, jeśli jeszcze nie istnieje, wdrożenie projektu, a następnie przypisanie wartości parametru.

W SSMS będziesz musiał zmienić tryb na tryb SQLCMD, który jest dostępny w menu Zapytanie. Po wykonaniu tej czynności naciśnij Ctrl-Shift-M, aby wywołać makro-rzecz, a to pozwoli ci określić, gdzie można znaleźć plik .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

Jeśli brałeś udział w konferencji SQL Pass Summit 2012, przedstawiłem to w moim wystąpieniu na stronie Model wdrażania 2012 ale nie omówiłem parametru część. Uważam, że to ostatnie wezwanie jest poprawne, ale nie zweryfikowałem go. Połączyłem się z dokumentacją wezwania do procedury, abyś mógł dostosować ją do swoich konkretnych potrzeb.

Przykładowa implementacja PowerShell

Aktualizacja sierpień 2013

Nauczyłem się czegoś u mojego obecnego klienta. Mamy nasze laptopy, które są podłączone do domeny domowej. Posiadamy konta w sieci AD klienta. Ilekroć potrzebuję „zrobić” coś w świecie klienta, muszę uruchomić mój proces i poinstruować go, aby przedstawił moje „obce” dane uwierzytelniające. Umożliwia to RunAs . Alternatywne odniesienie

Stworzyłem zestaw plików wsadowych, które uruchamiają każdy proces, którego potrzebuję. Przybierają formę

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

Mam jeden do wiersza poleceń (powyżej), Visual Studio, SSMS, PowerShell, PowerShell ISE i kilka innych specjalistycznych aplikacji, które muszą współpracować z ich domeną.

Korzystając z podejścia runas, mogłem wdrażać pakiety przy użyciu wszystkich powyższych metod (a także wdrażać bezpośrednio z instancji Visual Studio uruchamianej z obcymi poświadczeniami).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server :jak wybrać stałą liczbę wierszy (wybierz każdą x-tą wartość)

  2. Analiza MS SQL Server dla tych, którzy widzą go po raz pierwszy

  3. Wybierz wiersze nie w innej tabeli, zapytanie SQL Server

  4. Łamigłówka impasu:ofiara nie posiada żadnego zasobu używanego do zabijania w celu rozwiązania impasu

  5. Nie udało się przekonwertować wartości parametru z ciągu na Int32