|
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
Programmgesteuertes Laden und Ausführen eines Remotepakets
Hinweis
|
|---|
|
|
Verwenden von SQL Server-Agent zum programmgesteuerten Ausführen eines Remotepakets auf dem Server
Hinweis
|
|---|
|
|
Beispielcode
using System; using System.Data; using System.Data.SqlClient; namespace LaunchSSISPackageAgent_CS { class Program { static void Main(string[] args) { SqlConnection jobConnection; SqlCommand jobCommand; SqlParameter jobReturnValue; SqlParameter jobParameter; int jobResult; jobConnection = new SqlConnection("Data Source=(local);Initial Catalog=msdb;Integrated Security=SSPI"); jobCommand = new SqlCommand("sp_start_job", jobConnection); jobCommand.CommandType = CommandType.StoredProcedure; jobReturnValue = new SqlParameter("@RETURN_VALUE", SqlDbType.Int); jobReturnValue.Direction = ParameterDirection.ReturnValue; jobCommand.Parameters.Add(jobReturnValue); jobParameter = new SqlParameter("@job_name", SqlDbType.VarChar); jobParameter.Direction = ParameterDirection.Input; jobCommand.Parameters.Add(jobParameter); jobParameter.Value = "RunSSISPackage"; jobConnection.Open(); jobCommand.ExecuteNonQuery(); jobResult = (Int32)jobCommand.Parameters["@RETURN_VALUE"].Value; jobConnection.Close(); switch (jobResult) { case 0: Console.WriteLine("SQL Server Agent job, RunSISSPackage, started successfully."); break; default: Console.WriteLine("SQL Server Agent job, RunSISSPackage, failed to start."); break; } Console.Read(); } } }
Verwenden eines Webdiensts oder einer Remotekomponente zum programmgesteuerten Auszuführen eines Remotepakets
Wichtig
|
|---|
|
|
Wichtig
|
|---|
|
|
Beispielcode
Erstellen des Webdiensts
So erstellen Sie einen Webdienst zum programmgesteuerten Ausführen von Paketen auf dem Server
-
Öffnen Sie Visual Studio, und erstellen Sie in der gewünchsten Programmiersprache ein Webdienstprojekt. Im Beispielcode wird der Name "LaunchSSISPackageService" für das Projekt verwendet. -
Fügen Sie einen Verweis auf Microsoft.SqlServer.ManagedDTS und eine Imports- oder using-Anweisung für den Microsoft.SqlServer.Dts.Runtime-Namespace zur Codedatei hinzu. -
Fügen Sie den Beispielcode für die LaunchPackage-Webdienstmethode in die Klasse ein. (Im Beispiel ist der gesamte Inhalt des Codefensters dargestellt.) -
Erstellen und testen Sie den Webdienst. Stellen Sie hierzu eine Reihe gültiger Werte für die Eingabeargumente der LaunchPackage-Methode bereit, die auf ein vorhandenes Paket zeigen. Beispiel: Wenn package1.dtsx auf dem Server im Verzeichnis C:\My Packages gespeichert ist, übergeben Sie "file" als Wert von sourceType, "C:\My Packages" als Wert von sourceLocation und "package1" (ohne Erweiterung) als Wert von packageName.
using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using Microsoft.SqlServer.Dts.Runtime; using System.IO; [WebService(Namespace = "http://dtsue/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class LaunchSSISPackageServiceCS : System.Web.Services.WebService { public LaunchSSISPackageServiceCS() { } // LaunchPackage Method Parameters: // 1. sourceType: file, sql, dts // 2. sourceLocation: file system folder, (none), logical folder // 3. packageName: for file system, ".dtsx" extension is appended [WebMethod] public int LaunchPackage(string sourceType, string sourceLocation, string packageName) { string packagePath; Package myPackage; Application integrationServices = new Application(); // Combine path and file name. packagePath = Path.Combine(sourceLocation, packageName); switch(sourceType) { case "file": // Package is stored as a file. // Add extension if not present. if (String.IsNullOrEmpty(Path.GetExtension(packagePath))) { packagePath = String.Concat(packagePath, ".dtsx"); } if (File.Exists(packagePath)) { myPackage = integrationServices.LoadPackage(packagePath, null); } else { throw new ApplicationException("Invalid file location: "+packagePath); } break; case "sql": // Package is stored in MSDB. // Combine logical path and package name. if (integrationServices.ExistsOnSqlServer(packagePath, ".", String.Empty, String.Empty)) { myPackage = integrationServices.LoadFromSqlServer(packageName, "(local)", String.Empty, String.Empty, null); } else { throw new ApplicationException("Invalid package name or location: "+packagePath); } break; case "dts": // Package is managed by SSIS Package Store. // Default logical paths are File System and MSDB. if (integrationServices.ExistsOnDtsServer(packagePath, ".")) { myPackage = integrationServices.LoadFromDtsServer(packagePath, "localhost", null); } else { throw new ApplicationException("Invalid package name or location: "+packagePath); } break; default: throw new ApplicationException("Invalid sourceType argument: valid values are 'file', 'sql', and 'dts'."); } return (Int32)myPackage.Execute(); } }
Testen des Webdiensts
So erstellen Sie eine Konsolenanwendung zum Testen des Webdiensts
-
Fügen Sie in Visual Studio mithilfe der gewünschten Programmiersprache eine neue Konsolenanwendung zu der Projektmappe hinzu, die das Webdienstprojekt enthält. Im Beispielcode wird der Name LaunchSSISPackageTest für das Projekt verwendet. -
Legen Sie die neue Konsolenanwendung als Startprojekt in der Projektmappe fest. -
Fügen Sie einen Webverweis für das Webdienstprojekt hinzu. Passen Sie ggf. die Variablendeklaration im Beispielscode für den Namen an, den Sie dem Webdienstproxyobjekt zuweisen. -
Fügen Sie den Beispielcode für die Hauptroutine und die private Enumeration in den Code ein. (Im Beispiel ist der gesamte Inhalt des Codefensters dargestellt.) -
Bearbeiten Sie die Codezeile, die die LaunchPackage-Methode aufruft, um eine Reihe gültiger Werte für die Eingabeargumente bereitzustellen, die auf ein vorhandenes Paket zeigen. Beispiel: Wenn package1.dtsx auf dem Server im Verzeichnis C:\My Packages gespeichert ist, übergeben Sie "file" als Wert von sourceType, "C:\My Packages" als Wert von sourceLocation und "package1" (ohne Erweiterung) als Wert von packageName.
using System; namespace LaunchSSISPackageSvcTestCS { class Program { static void Main(string[] args) { LaunchSSISPackageServiceCS.LaunchSSISPackageServiceCS launchPackageService = new LaunchSSISPackageServiceCS.LaunchSSISPackageServiceCS(); int packageResult = 0; try { packageResult = launchPackageService.LaunchPackage("sql", String.Empty, "SimpleTestPackage"); } catch (Exception ex) { // The type of exception returned by a Web service is: // System.Web.Services.Protocols.SoapException Console.WriteLine("The following exception occurred: " + ex.Message); } Console.WriteLine(((PackageExecutionResult)packageResult).ToString()); Console.ReadKey(); } private enum PackageExecutionResult { PackageSucceeded, PackageFailed, PackageCompleted, PackageWasCancelled }; } }
-
Video Vorgehensweise: Automatisieren der SSIS-Paketausführung mit dem SQL Server-Agent (SQL Server-Video) auf technet.microsoft.com
Hinweis