Проблема: Как развернуть проекты 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 на сервере сборки и развертывания.