Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
SSIS Integration Runtime in Azure Data Factory
Je kunt Integration Services-pakketten uitvoeren wanneer dat nodig is of op vooraf bepaalde tijden door gebruik te maken van de methoden beschreven in Running Packages. Met slechts een paar regels code kun je echter ook een pakket uitvoeren vanuit een aangepaste applicatie, zoals een Windows Forms-applicatie, een consoleapplicatie, een ASP.NET webformulier of webservice, of een Windows-service.
Dit onderwerp bespreekt:
Een pakket programmatisch laden
Een pakket programmatisch uitvoeren
Alle methoden die in dit onderwerp worden gebruikt om pakketten te laden en uit te voeren, vereisen een verwijzing naar Microsoft. SqlServer.ManagedDTS assembly. Na het toevoegen van de referentie in een nieuw project, importeer je de Microsoft.SqlServer.Dts.Runtime naamruimte met een using of Imports-instructie .
Een pakket programmatisch laden
Om een pakket programmatisch op de lokale computer te laden, of het nu lokaal of op afstand is opgeslagen, roep een van de volgende methoden aan:
| Opslaglocatie | Methode om te roepen |
|---|---|
| Bestand | LoadPackage |
| SSIS Package Store | LoadFromDtsServer |
| SQL Server | LoadFromSqlServer |
Important
De methoden van de Application klasse voor het werken met de SSIS Package Store ondersteunen alleen ".", localhost of de servernaam van de lokale server. Je kunt "(lokaal)" niet gebruiken.
Een pakket programmatisch uitvoeren
Het ontwikkelen van een aangepaste applicatie in beheerde code die een pakket draait op de lokale computer vereist de volgende aanpak. De hier samengevat stappen worden gedemonstreerd in de voorbeeldapplicatie van de console die volgt.
Om een pakket programmatisch op de lokale computer te draaien
Start de Visual Studio-ontwikkelomgeving en maak een nieuwe applicatie in je favoriete ontwikkeltaal. Dit voorbeeld gebruikt een console-applicatie; je kunt echter ook een pakket draaien vanuit een Windows Forms-applicatie, een ASP.NET-webformulier of webservice, of een Windows-service.
Klik in het menu Project op Referentie toevoegen en voeg een referentie toe aan Microsoft.SqlServer.ManagedDTS.dll. Klik op OK.
Gebruik de Visual Basic Imports-instructie of de C#-instructie om de Microsoft-instructie te importeren. SqlServer.Dts.Runtime naamruimte.
Voeg de volgende code toe aan de hoofdroutine. De voltooide console-applicatie zou er als volgt uit moeten zien.
Note
De voorbeeldcode laat zien dat het pakket vanuit het bestandssysteem wordt geladen met behulp van de methode LoadPackage . Je kunt het pakket echter ook laden uit de MSDB-database door de LoadFromSqlServer methode aan te roepen, of vanuit de Integration Services-pakketopslag door de LoadFromDtsServer methode aan te roepen.
Voer het project uit. De voorbeeldcode voert het voorbeeldpakket CalculatedColumns uit dat wordt geïnstalleerd met de SQL Server-voorbeelden. Het resultaat van pakketuitvoering wordt weergegeven in het consolevenster.
Voorbeeldcode
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();
}
}
}
Gebeurtenissen vastleggen uit een lopend pakket
Wanneer je een pakket programmatisch uitvoert zoals getoond in het voorgaande voorbeeld, wil je misschien ook fouten en andere gebeurtenissen vastleggen die optreden tijdens het uitvoeren van het pakket. Je kunt dit bereiken door een klasse toe te voegen die van de DefaultEvents klasse erft, en door een referentie naar die klasse door te geven wanneer je het pakket laadt. Hoewel het volgende voorbeeld alleen het OnError evenement vastlegt, zijn er veel andere evenementen die de DefaultEvents klasse je laat vastleggen.
Om een pakket programmatisch op de lokale computer uit te voeren en pakketgebeurtenissen vast te leggen
Volg de stappen in het voorgaande voorbeeld om een project voor dit voorbeeld te maken.
Voeg de volgende code toe aan de hoofdroutine. De voltooide console-applicatie zou er als volgt uit moeten zien.
Voer het project uit. De voorbeeldcode voert het voorbeeldpakket CalculatedColumns uit dat wordt geïnstalleerd met de SQL Server-voorbeelden. Het resultaat van pakketuitvoering wordt weergegeven in het consolevenster, samen met eventuele fouten die optreden.
Voorbeeldcode
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();
}
}
}