Implantar e executar pacotes SSIS usando procedimentos armazenados
Quando configura um projeto do Integration Services para usar o modelo de implantação de projeto, você pode usar procedimentos armazenados no catálogo do SSIS para implantar o projeto e executar os pacotes. Para obter mais informações sobre o modelo de implantação de projeto, consulte Implantação de projetos e pacotes.
Você também pode usar o SQL Server Management Studio ou o SSDT (SQL Server Data Tools) para implantar o projeto e executar os pacotes. Para obter mais informações, consulte os tópicos na seção Consulte também.
Dica |
---|
Você pode facilmente gerar as instruções Transact-SQL para os procedimentos armazenados listados no procedimento abaixo, com exceção de catalog.deploy_project, fazendo o seguinte:
|
Para implantar e executar um pacote usando procedimentos armazenados
Chame catalog.deploy_project (Banco de Dados SSISDB) para implantar o projeto do Integration Services que contém o pacote no servidor do Integration Services .
Para recuperar o conteúdo binário do arquivo de implantação do projeto do Integration Services, para o parâmetro @project\_stream, use uma instrução SELECT com a função OPENROWSET e o provedor de conjunto de linhas BULK. O conjuntos de linhas BULK permite a você ler dados de um arquivo. O argumento SINGLE_BLOB do provedor de conjuntos de linhas BULK retorna o conteúdo do arquivo de dados como uma única linha, um conjunto de linhas de coluna única do tipo varbinary(max). Para obter mais informações, consulte OPENROWSET (Transact-SQL).
No exemplo a seguir, o projeto SSISPackages_ProjectDeployment é implantado na pasta Pacotes SSIS no servidor do Integration Services . Os dados binários são lidos no arquivo do projeto (SSISPackage_ProjectDeployment.ispac) e armazenados no parâmetro @ProjectBinary do tipo varbinary(max). O valor do parâmetro @ProjectBinary é atribuído ao parâmetro @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
Chame catalog.create_execution (Banco de dados SSISDB) para criar uma instância de execução de pacote e, opcionalmente, chame catalog.set_execution_parameter_value (Banco de Dados SSISDB) para definir valores de parâmetro de tempo de execução.
No exemplo a seguir, catalog.create_execution cria uma instância de execução para package.dtsx que está contida no projeto SSISPackage_ProjectDeployment. O projeto está localizado na pasta Pacotes SSIS. A execution_id retornada pelo procedimento armazenado é usado na chamada para catalog.set_execution_parameter_value. Esse segundo procedimento armazenado define o parâmetro LOGGING_LEVEL como 3 (log detalhado) e define um parâmetro de pacote denominado Parameter1 com um valor de 1.
Para parâmetros como LOGGING_LEVEL, o valor de object_type é 50. Para parâmetros de pacote, o valor de 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
Chame catalog.start_execution (Banco de dados SSISDB) para executar o pacote.
No exemplo a seguir, uma chamada a catalog.start_execution é adicionada ao Transact-SQL para iniciar a execução do pacote. A execution_id retornada pelo procedimento armazenado catalog.create_execution é usada.
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
Para implantar um projeto de servidor para servidor usando procedimentos armazenados
Você pode implantar um projeto de servidor para servidor usando os procedimentos armazenados catalog.get_project (Banco de Dados SSISDB) e catalog.deploy_project (Banco de Dados SSISDB).
Você precisa fazer o seguinte antes de executar os procedimentos armazenados:
Crie um objeto de servidor vinculado. Para obter mais informações, consulte Criar servidores vinculados (Mecanismo de Banco de Dados do SQL Server).
Na página Opções do Servidor da caixa de diálogo Propriedades do Servidor Vinculado , defina RPC e RPC Out como True. Além disso, defina Habilitar Promoção de Transações Distribuídas para RPC como False.
Habilite parâmetros dinâmicos para o provedor selecionado para o servidor vinculado expandindo o nó Provedores sob Servidores Vinculados no Pesquisador de Objetos, clicando com o botão direito do mouse no provedor e clicando em Propriedades. Selecione Habilitar ao lado de Parâmetro dinâmico.
Confirme se o DTC (Distributed Transaction Coordinator) foi iniciado em ambos os servidores.
Chame catalog.get_project para retornar o binário do projeto e chame catalog.deploy_project. O valor retornado por catalog.get_project é inserido em uma variável de tabela do tipo varbinary(max). O servidor vinculado não pode retornar os resultados que são varbinary(max).
No exemplo a seguir, catalog.get_project retorna um binário para o projeto SSISPackages no servidor vinculado. O catalog.deploy_project implanta o projeto no servidor local, na pasta chamada 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
Consulte também
Tarefas
Implantar projetos no Servidor do Integration Services
Executar um pacote nas Ferramentas de Dados do SQL Server
Executar um pacote no servidor SSIS usando o SQL Server Management Studio