Развертывание и выполнение пакетов служб SSIS с помощью хранимых процедур
После настройки проекта Службы Integration Services для использования модели развертывания проекта можно вызывать хранимые процедуры в каталоге служб SSIS, чтобы развернуть проект и выполнить пакеты. Дополнительные сведения о модели развертывания проектов см. в разделе Развертывание проектов и пакетов.
Для развертывания и выполнения пакетов также можно использовать среду SQL Server Management Studio или SQL Server Data Tools (SSDT). Дополнительные сведения см. в разделе См. также.
Совет |
---|
Не составит труда создать инструкции Transact-SQL для хранимых процедур, перечисленных в следующей процедуре, за исключением catalog.deploy_project, выполнив следующие действия.
|
Развертывание и выполнение пакета с помощью хранимых процедур
Вызовите функцию catalog.deploy_project (база данных SSISDB), чтобы развернуть проект служб Службы Integration Services, содержащий пакет, на сервере Службы Integration Services.
Можно использовать инструкцию SELECT с функцией OPENROWSET и поставщиком больших наборов строк (BULK) для получения двоичного содержимого файла развертывания проекта Службы Integration Services для параметра @project\_stream. Поставщик больших наборов строк позволяет считывать данные из файла. Аргумент SINGLE_BLOB для поставщика больших наборов строк возвращает содержимое файла данных в виде набора строк с одной строкой и одним столбцом типа varbinary(max). Дополнительные сведения см. в разделе OPENROWSET (Transact-SQL).
В следующем примере проект SSISPackages_ProjectDeployment будет развернут в папке SSIS Packages на сервере Службы Integration Services. Двоичные данные считываются из файла проекта (SSISPackage_ProjectDeployment.ispac) и сохраняются в параметре @ProjectBinary типа varbinary(max). Значение параметра @ProjectBinary присваивается параметру @project\_stream.
DECLARE @ProjectBinary as varbinary(max) DECLARE @operation_id as bigint Set @ProjectBinary = (SELECT * FROM OPENROWSET(BULK 'C:\MyProjects\ SSISPackage_ProjectDeployment.ispac', SINGLE_BLOB) as BinaryData) Exec catalog.deploy_project @folder_name = 'SSIS Packages', @project_name = 'DeployViaStoredProc_SSIS', @Project_Stream = @ProjectBinary, @operation_id = @operation_id out
Вызовите функцию catalog.create_execution (база данных SSISDB), чтобы создать экземпляр выполнения пакета, и при необходимости вызовите функцию catalog.set_execution_parameter_value (база данных SSISDB), чтобы задать значения параметров среды выполнения.
В следующем примере catalog.create_execution создает экземпляр для выполнения package.dtsx, содержащегося в проекте SSISPackage_ProjectDeployment. Проект располагается в папке SSIS Packages. Значение execution_id, возвращаемое хранимой процедурой, используется для вызова функции catalog.set_execution_parameter_value. Эта вторая хранимая процедура устанавливает параметр LOGGING_LEVEL равным 3 (подробный уровень ведения журнала) и задает параметру пакета Parameter1 значение 1.
Для таких параметров, как LOGGING_LEVEL, значение object_type равно 50. Для параметров пакета значение object_type равно 30.
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 GO
Вызовите функцию catalog.start_execution (база данных SSISDB) для выполнения пакета.
В следующем примере вызов catalog.start_execution добавляется в Transact-SQL, чтобы можно было начать выполнение пакета. Используется значение execution_id, возвращаемое хранимой процедурой catalog.create_execution.
Declare @execution_id bigint EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'SSIS Packages', @project_name=N'SSISPackage_ProjectDeployment', @use32bitruntime=False, @reference_id=1 Select @execution_id DECLARE @var0 smallint = 3 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 DECLARE @var1 int = 1 EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'Parameter1', @parameter_value=@var1 EXEC [SSISDB].[catalog].[start_execution] @execution_id GO
Развертывание проекта из сервера на сервер с использованием хранимых процедур
Проект можно развернуть из сервера на сервер с помощью хранимых процедур catalog.get_project (база данных SSISDB) и catalog.deploy_project (база данных SSISDB).
Необходимо выполнить следующие действия перед выполнением хранимых процедур.
Создание связанного объекта сервера. Дополнительные сведения см. в разделе Создание связанных серверов (компонент SQL Server Database Engine).
На странице Параметры сервера диалогового окна Свойства связанного сервера назначьте для RPC и RPC Out значения True. Кроме того, назначьте свойству Разрешить продвижение распределенных транзакций для RPC значение False.
Включите динамические параметры для поставщика, выбранного для связанного сервера, разверните узел Поставщики и выберите Связанные серверы в обозревателе объектов, щелкните правой кнопкой мыши поставщик, затем выберите пункт Свойства. Нажмите кнопку Включить рядом с полем Динамический параметр.
Убедитесь, что на обоих серверах запущен координатор распределенных транзакций (DTC).
Вызовите catalog.get_project для получения двоичных файлов проекта, а затем вызовите catalog.deploy_project. Значение, возвращаемое catalog.get_project, вставляется в табличную переменную типа varbinary(max). Связанный сервер не может возвращать результаты типа varbinary(max).
В следующем примере catalog.get_project возвращает двоичный результат для проекта SSISPackages на связанном сервере. Catalog.deploy_project развертывает проект на локальном сервере в папке с именем DestFolder.
declare @resultsTableVar table (
project_binary varbinary(max)
)
INSERT @resultsTableVar (project_binary)
EXECUTE [MyLinkedServer].[SSISDB].[catalog].[get_project] 'Packages', 'SSISPackages'
declare @project_binary varbinary(max)
select @project_binary = project_binary from @resultsTableVar
exec [SSISDB].[CATALOG].[deploy_project] 'DestFolder', 'SSISPackages', @project_binary
См. также
Задания
Развертывание проектов на сервере служб Integration Services
Запуск пакета с помощью SQL Server Data Tools
Выполнение пакета на сервере служб SSIS с использованием среды SQL Server Management Studio