Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
SSIS Integration Runtime em Azure Data Factory
Pode executar pacotes de Serviços de Integração conforme necessário ou em momentos pré-determinados, utilizando os métodos descritos em Pacotes em Execução. No entanto, com apenas algumas linhas de código, também pode executar um pacote a partir de uma aplicação personalizada, como uma aplicação Windows Forms, uma aplicação de consola, um formulário Web ASP.NET ou um serviço Web, ou um serviço Windows.
Este tópico discute:
Carregamento de um pacote programaticamente
Executar um pacote programaticamente
Todos os métodos usados neste tópico para carregar e executar pacotes requerem uma referência à Microsoft. Assembly SqlServer.ManagedDTS. Depois de adicionar a referência num novo projeto, importa o Microsoft.SqlServer.Dts.Runtime namespace com uma instrução using ou Imports .
Carregamento Programático de um Pacote
Para carregar um pacote programaticamente no computador local, quer o pacote esteja armazenado local ou remotamente, chame um dos seguintes métodos:
| Localização de Armazenamento | Método de Chamada |
|---|---|
| File | LoadPackage |
| Loja de Pacotes SSIS | LoadFromDtsServer |
| SQL Server | LoadFromSqlServer |
Importante
Os métodos da Application classe para trabalhar com a SSIS Package Store suportam apenas ".", localhost, ou o nome do servidor local. Não pode usar "(local)".
Executar um Pacote Programáticamente
Desenvolver uma aplicação personalizada em código gerido que execute um pacote no computador local requer a seguinte abordagem. Os passos aqui resumidos são demonstrados na aplicação de exemplo para consola que se segue.
Para executar um pacote no computador local programaticamente
Inicia o ambiente de desenvolvimento Visual Studio e cria uma nova aplicação na tua linguagem de desenvolvimento preferida. Este exemplo utiliza uma aplicação de consola; no entanto, também pode executar um pacote a partir de uma aplicação Windows Forms, de um formulário ou serviço Web ASP.NET, ou de um serviço Windows.
No menu Project, clique em Adicionar Referência e adicione uma referência a Microsoft.SqlServer.ManagedDTS.dll. Clique em OK.
Use a instrução Visual Basic Imports ou a instrução C# using para importar a Microsoft. Espaço de nomes SqlServer.Dts.Runtime.
Adicione o seguinte código na rotina principal. A aplicação de consola concluída deve assemelhar-se ao seguinte exemplo.
Note
O código de exemplo demonstra como carregar o pacote a partir do sistema de ficheiros usando o LoadPackage método. No entanto, também pode carregar o pacote a partir da base de dados MSDB chamando o LoadFromSqlServer método, ou do armazenamento de pacotes dos Serviços de Integração chamando o LoadFromDtsServer método.
Execute o projeto. O código de exemplo executa o pacote de exemplo CalculatedColumns que está instalado com os exemplos do SQL Server. O resultado da execução do pacote é apresentado na janela da consola.
Código de Exemplo
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim pkgLocation As String
Dim pkg As New Package
Dim app As New Application
Dim pkgResults As DTSExecResult
pkgLocation = _
"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _
"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"
pkg = app.LoadPackage(pkgLocation, Nothing)
pkgResults = pkg.Execute()
Console.WriteLine(pkgResults.ToString())
Console.ReadKey()
End Sub
End Module
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace RunFromClientAppCS
{
class Program
{
static void Main(string[] args)
{
string pkgLocation;
Package pkg;
Application app;
DTSExecResult pkgResults;
pkgLocation =
@"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +
@"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";
app = new Application();
pkg = app.LoadPackage(pkgLocation, null);
pkgResults = pkg.Execute();
Console.WriteLine(pkgResults.ToString());
Console.ReadKey();
}
}
}
Captura de Eventos a partir de um Pacote em Execução
Quando executa um pacote programaticamente, como mostrado no exemplo anterior, pode também querer capturar erros e outros eventos que ocorrem à medida que o pacote é executado. Pode conseguir isto adicionando uma classe que herde da DefaultEvents classe e passando uma referência a essa classe quando carrega o pacote. Embora o exemplo seguinte capture apenas o OnError evento, há muitos outros eventos que a DefaultEvents classe permite capturar.
Executar um pacote no computador local programaticamente e capturar eventos do pacote
Siga os passos do exemplo anterior para criar um projeto para este exemplo.
Adicione o seguinte código na rotina principal. A aplicação de consola concluída deve assemelhar-se ao seguinte exemplo.
Execute o projeto. O código de exemplo executa o pacote de exemplo CalculatedColumns que está instalado com os exemplos do SQL Server. O resultado da execução do pacote é apresentado na janela da consola, juntamente com quaisquer erros que ocorram.
Código de Exemplo
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim pkgLocation As String
Dim pkg As New Package
Dim app As New Application
Dim pkgResults As DTSExecResult
Dim eventListener As New EventListener()
pkgLocation = _
"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _
"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"
pkg = app.LoadPackage(pkgLocation, eventListener)
pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)
Console.WriteLine(pkgResults.ToString())
Console.ReadKey()
End Sub
End Module
Class EventListener
Inherits DefaultEvents
Public Overrides Function OnError(ByVal source As Microsoft.SqlServer.Dts.Runtime.DtsObject, _
ByVal errorCode As Integer, ByVal subComponent As String, ByVal description As String, _
ByVal helpFile As String, ByVal helpContext As Integer, _
ByVal idofInterfaceWithError As String) As Boolean
' Add application-specific diagnostics here.
Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description)
Return False
End Function
End Class
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace RunFromClientAppWithEventsCS
{
class MyEventListener : DefaultEvents
{
public override bool OnError(DtsObject source, int errorCode, string subComponent,
string description, string helpFile, int helpContext, string idofInterfaceWithError)
{
// Add application-specific diagnostics here.
Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description);
return false;
}
}
class Program
{
static void Main(string[] args)
{
string pkgLocation;
Package pkg;
Application app;
DTSExecResult pkgResults;
MyEventListener eventListener = new MyEventListener();
pkgLocation =
@"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +
@"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";
app = new Application();
pkg = app.LoadPackage(pkgLocation, eventListener);
pkgResults = pkg.Execute(null, null, eventListener, null, null);
Console.WriteLine(pkgResults.ToString());
Console.ReadKey();
}
}
}