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

Как да разположа съществуващ SSIS пакет в sql сървър 2012?

Фон

2012 SSIS Project Deployment model в Visual Studio съдържа файл за параметри на проекта, мениджъри на връзки на ниво проект, пакети и всичко друго, което сте добавили към проекта.

На следващата снимка можете да видите, че имам решение, наречено Lifecycle. Това решение има проект, наречен Lifecycle. Проектът на жизнения цикъл има мениджър на връзки на ниво проект ERIADOR дефинирани и два SSIS пакета:Package00.dtsx и Package01.dtsx.

Когато стартирате пакет, зад кулисите Visual Studio първо ще изгради/компилира всички необходими елементи на проекта в квант за разгръщане, наречен ispac (произнася се eye-ess-pack, а не ice-pack). Това ще бъде намерено в bin\Development подпапка за вашия проект.

Lifecycle.ispac е zip файл със следното съдържание.

Какво означава всичко това? Най-голямата разлика е, че вместо просто да разположите актуализиран пакет, ще трябва да разположите целия .ispac. Да, наистина трябва да преразпределите всичко, въпреки че сте променили само един пакет. Такъв е животът.

Как да разположа пакети с помощта на модела за внедряване на SSIS проект?

Имате налични опции за хост, но 3-те неща, които трябва да знаете са

  • къде е моят ispac
  • на какъв сървър внедрявам
  • в коя папка проектира този проект

SSDT

Това вероятно ще бъде най-честата ви опция в началото. В рамките на SQL Server Data Tools, SSDT, вие имате възможността да дефинирате на ниво Configuration Manager на кой сървър и в каква папка нещата се разполагат. При моя клиент имам 3 конфигурации:Dev, Stage, Production. След като дефинирате тези стойности, те се записват във файла .dtproj и след това можете да щракнете с десния бутон и да разположите до насита от Visual Studio.

ISDeploymentWizard – GUI вариант

SSDT всъщност просто изгражда извикването към ISDeploymentWizard.exe, който по някаква причина се предлага в 32 и 64 битови варианти.

  • C:\Program Files\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe
  • C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe

Разширение .ispac е свързано с ISDeploymentWizard, така че щракнете два пъти и тръгвайте. Първият екран е нов в сравнение с използването на интерфейса SSDT, но след това ще има същия набор от кликвания за внедряване.

ISDeploymentWizard - вариант на командния ред

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

Така че погледнете внимателно раздела Преглед от SSDT или GUI внедряване. Не е ли красота?

Използвайки същия изпълним файл, ISDeploymentWizard, можем да имаме както наблюдаван, така и ненаблюдаван инсталатор за нашите .ispac(и). Маркирайте втория ред там, копирайте и поставете и сега можете да имате непрекъсната интеграция!

C:\Program Files\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe 
/Silent 
/SourcePath:"C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.ispac" 
/DestinationServer:"localhost\dev2012" 
/DestinationPath:"/SSISDB/Folder/Lifecycle"

TSQL

Можете да внедрите ispac в SQL Server чрез SQL Server Management Studio, SSMS или чрез командния ред, sqlcmd.exe. Докато SQLCMD не е строго задължителен, той опростява скрипта.

Виетрябва използвайте Windows акаунт, за да извършите тази операция, но в противен случай ще получите следното съобщение за грешка.

Освен това ще имате нужда от способността да извършвате групови операции (за сериализиране на .ispac) и ssis_admin/sa права за базата данни SSISDB.

Тук използваме OPENROWSET с опцията BULK, за да прочетем ispac във varbinary променлива. Създаваме папка чрез catalog.create_folder ако все още не съществува и след това действително внедрите проекта с catalog.deploy_project . След като приключите, обичам да проверявам таблицата със съобщения за операции, за да проверя, че нещата вървят според очакванията.

USE SSISDB
GO

-- You must be in SQLCMD mode
-- setvar isPacPath "C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.ispac"
:setvar isPacPath "<isPacFilePath, nvarchar(4000), C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.ispac>"

DECLARE
    @folder_name nvarchar(128) = 'TSQLDeploy'
,   @folder_id bigint = NULL
,   @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
WHERE
    OM.operation_message_id = @operation_id;

Вашата МАМА

Както във вашия Управляван обектен модел предоставя .NET интерфейс за внедряване на пакети. Това е подход на PowerShell за внедряване на ispac заедно със създаването на папката, тъй като това е опция, която ISDeploymentWizard не поддържа.

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Management.IntegrationServices") | Out-Null

#this allows the debug messages to be shown
$DebugPreference = "Continue"

# Retrieves a 2012 Integration Services CatalogFolder object
# Creates one if not found
Function Get-CatalogFolder
{
    param
    (
        [string] $folderName
    ,   [string] $folderDescription
    ,   [string] $serverName = "localhost\dev2012"
    )

    $connectionString = [String]::Format("Data Source={0};Initial Catalog=msdb;Integrated Security=SSPI;", $serverName)

    $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

    $integrationServices = New-Object Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices($connection)
    # The one, the only SSISDB catalog
    $catalog = $integrationServices.Catalogs["SSISDB"]

    $catalogFolder = $catalog.Folders[$folderName]

    if (-not $catalogFolder)
    {
        Write-Debug([System.string]::Format("Creating folder {0}", $folderName))
        $catalogFolder = New-Object Microsoft.SqlServer.Management.IntegrationServices.CatalogFolder($catalog, $folderName, $folderDescription)
        $catalogFolder.Create()
    }

    return $catalogFolder
}

# Deploy an ispac file into the SSISDB catalog
Function Deploy-Project
{
    param
    (
        [string] $projectPath
    ,   [string] $projectName
    ,   $catalogFolder
    )

    # test to ensure file exists
    if (-not $projectPath -or  -not (Test-Path $projectPath))
    {
        Write-Debug("File not found $projectPath")
        return
    }

    Write-Debug($catalogFolder.Name)
    Write-Debug("Deploying $projectPath")

    # read the data into a byte array
    [byte[]] $projectStream = [System.IO.File]::ReadAllBytes($projectPath)

    # $ProjectName MUST match the value in the .ispac file
    # else you will see 
    # Failed to deploy the project. Fix the problems and try again later.:The specified project name, test, does not match the project name in the deployment file.
    $projectName = "Lifecycle"

    $project = $catalogFolder.DeployProject($projectName, $projectStream)
}




$isPac = "C:\Dropbox\presentations\SSISDB Lifecycle\Lifecycle\Lifecycle\bin\Development\Lifecycle.ispac"
$folderName = "Folder"
$folderName = "SSIS2012"
$folderDescription = "I am a description"
$serverName = "localhost\dev2012"

$catalogFolder = Get-CatalogFolder $folderName $folderDescription $serverName

Deploy-Project $isPac $projectName $catalogFolder


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създам псевдоним на таблица в MySQL

  2. Вземете ID на последните вмъкнати записи

  3. Как да вмъкнете низ, съдържащ единични или двойни кавички

  4. SQL Server - PIVOT - две колони в редове

  5. Създаване на изглед чрез съхранена процедура