Published on

January 22, 2024

Автоматизация развертывания SQL Server Integration Services

Проблема: Как развернуть проекты SSIS (файлы ISPAC) на целевом сервере?

Решение:

В этой статье мы рассмотрим метод автоматизации развертывания SQL Server Integration Services (SSIS) с использованием консольного приложения на C#. Традиционный метод развертывания с использованием “Мастера развертывания служб интеграции” требует полной установки Visual Studio на сервере сборки и развертывания, что может быть невозможно в некоторых организациях. Поэтому нам нужен альтернативный метод автоматического развертывания SSIS-пакетов.

Преимущества автоматизации развертывания:

  • Развертывание может выполняться часто и по расписанию
  • Полностью исключаются ошибки человека
  • Те же артефакты могут быть развернуты на нескольких целевых серверах одновременно

Развертывание SSIS с использованием консольного приложения на C#:

В этой статье мы рассмотрим метод разработки консольного приложения на C#, которое может развернуть файл ISPAC на целевом сервере.

Предварительные требования:

Предполагается, что проект SSIS уже построен и файл ISPAC для проекта доступен для развертывания.

Разработка консольного приложения на Windows:

Для разработки консольного приложения на C# вам понадобится Visual Studio. После установки создайте новый проект и выберите шаблон Windows/Console Application. Добавьте необходимые сборки в проект. Эти сборки включают:

  • Microsoft.SqlServer.Management.Sdk.Sfc
  • Microsoft.SqlServer.Smo
  • Microsoft.SqlServer.Management.IntegrationServices

Проект SSIS:

Создайте простой проект SSIS и постройте его, чтобы сгенерировать файл ISPAC.

Каталог SSIS:

Создайте каталог SSIS на целевом сервере.

Доступ к серверу SSIS с использованием C#:

Используйте следующий код для доступа к серверу SSIS и создания папки в каталоге SSIS:

// Объявление и присвоение значений переменным
string SSISServerName = ".\\SQL2012";

// Создание подключения
string sqlConnectionString = "Data Source=" + SSISServerName + ";Initial Catalog=master;Integrated Security=SSPI;";
SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

// Создание объекта SSIS
IntegrationServices integrationServices = new IntegrationServices(sqlConnection);

// Создание каталога SSIS
Catalog catalog = integrationServices.Catalogs["SSISDB"];

Console.WriteLine("Имя каталога SSIS:" + catalog.Name);

Создание папки для развертывания проекта SSIS:

Используйте следующий код для создания папки в каталоге SSIS:

// Объявление и присвоение значений переменным
string SSISServerName = ".\\SQL2012";
string SSISFolderName = "Dev_Staging";

// Создание подключения
string sqlConnectionString = "Data Source=" + SSISServerName +
";Initial Catalog=master;Integrated Security=SSPI;";
SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

// Создание объекта SSIS
IntegrationServices integrationServices = new IntegrationServices(sqlConnection);

// Создание каталога SSIS
Catalog catalog = integrationServices.Catalogs["SSISDB"];

Console.WriteLine("Имя каталога SSIS:" + catalog.Name);

// Создание объекта для папки SSIS
CatalogFolder folder = new CatalogFolder(catalog, SSISFolderName, "Описание папки");
folder.Create();

Console.WriteLine("Папка:" + SSISFolderName + " была создана в каталоге SSIS");

Развертывание файла ISPAC на сервере:

Используйте следующий код для развертывания файла ISPAC на сервере:

// Объявление и присвоение значений переменным
string SSISServerName = ".\\SQL2012";
string SSISFolderName = "Dev_Staging";
string SSISProjectName = "Integration Services Project1";
string SSISProjectFilePath = @"E:\WorkArea\Analysis\Pre Constraint\Integration Services Project1\Integration Services Project1\bin\Development\Integration Services Project1.ispac";

// Создание подключения
string sqlConnectionString = "Data Source=" + SSISServerName +
";Initial Catalog=master;Integrated Security=SSPI;";
SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

// Создание объекта SSIS
IntegrationServices integrationServices = new IntegrationServices(sqlConnection);

// Создание каталога SSIS
Catalog catalog = integrationServices.Catalogs["SSISDB"];

Console.WriteLine("Имя каталога SSIS:" + catalog.Name);

// Создание объекта для папки SSIS
CatalogFolder folder = new CatalogFolder(catalog, SSISFolderName, "Описание папки");
folder.Create();

Console.WriteLine("Папка:" + SSISFolderName + " была создана в каталоге SSIS");

Console.WriteLine("Развертывание проекта " + SSISProjectName + ".");

byte[] projectFile = File.ReadAllBytes(SSISProjectFilePath);
folder.DeployProject(SSISProjectName, projectFile);
Console.WriteLine("Проект SSIS был успешно развернут!");

Итог:

В этой статье мы узнали, как разработать простое приложение для Windows, чтобы автоматизировать развертывание проектов SSIS. Это решение подходит для организаций, которые следуют модели развертывания проектов SSIS и не хотят устанавливать Visual Studio на сервере сборки и развертывания.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.