Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Внедряване на SSIS (SQL Server 2012) проект извън мрежата

Имате 3 инструмента за внедряване на .ispac файлове в каталога SSISDB.

  1. ISDeploymentWizard.exe
  2. ManagedObjectModel
  3. TSQL

Вече използвате съветника и той не работи поради проблеми с удостоверяването. Мисля, че дори с вашия MOM подход, пак ще се натъкнете на проблеми с удостоверяването. Това оставя TSQL подхода и тъй като имате валидно влизане, надяваме се, че това ще работи.

Следният код ще сериализира вашия .ispac, ще създаде папката за внедряване, ако все още не съществува, ще разположи проекта и след това ще присвои стойност на параметър.

В SSMS ще трябва да промените режима си на режим SQLCMD, който е достъпен в менюто Query. След като направите това, натиснете Ctrl-Shift-M, за да изведете макроса и това ще ви позволи да посочите къде може да бъде намерен .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

Ако сте присъствали на конференцията SQL Pass Summit 2012, демонстрирах това в моето изказване на 2012 модел на внедряване но не покрих параметър част. Вярвам, че последното обаждане е правилно, но не съм го потвърдил. Свързах се с документацията за процедурата, така че да можете да я приспособите към вашите специфични нужди.

Примерно внедряване на PowerShell

Актуализация август 2013

Научих нещо от настоящия си клиент. Имаме наши лаптопи, които са присъединени към домашния домейн. Имаме акаунти в AD мрежата на клиента. Всеки път, когато трябва да „направя“ нещо в света на клиента, трябва да стартирам своя процес и да го инструктирам да представи моите „чужди“ идентификационни данни. Това, което прави това възможно, е RunAs . Алтернативна справка

Създадох пакет от пакетни файлове, които стартират всеки процес, от който се нуждая. Те приемат формата на

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

Имам такъв за команден ред (по-горе), Visual Studio, SSMS, PowerShell, PowerShell ISE и някои други специални приложения, които трябва да работят с домейна си.

Използвайки подхода runas, успях да разположа пакети, използвайки всички горепосочени методи (както и внедряване директно от екземпляр на Visual Studio, изпълняван с чужди идентификационни данни).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обединете данни в две целеви таблици

  2. Вземете всички служители под управление с CTE

  3. Предаване на списък от низове към съхранена процедура

  4. Уебинар:Проследяване на напредъка на заявките в SQL Server

  5. Вмъкване на данни от SQL Server в Salesforce.com