Aracılığıyla paylaş


Yükleme ve uzak paket programla çalıştırma

Uzak paket sahip yerel bir bilgisayarda çalıştırmak için Integration Services Bunlar, uzak bilgisayarda çalışacak şekilde yüklü paketler başlatmak Integration Services yüklü. Yerel bilgisayarın kullanmasını sağlayarak bunu SQL Server Aracı, Web hizmet, veya paketler, uzak bilgisayarda başlatmak için uzak bir bileşen. Doğrudan yerel bilgisayardan uzak paketleri başlatmaya çalışırsanız paketleri üzerine yüklenemedi ve yerel bilgisayardan çalıştırmayı deneyin.Yerel bilgisayarda yüklü değilse Integration Services yüklü paketler çalışmayacak.

Not

You cannot run packages outside BI Development Studio on a client computer that does not have Integration Services installed, and the terms of your SQL Server licensing might not let you install Integration Services on additional computers.Integration Services is a server component and is not redistributable to client computers.

Alternatif olarak, uzak bir paket olan yerel bir bilgisayarda çalıştırabilirsiniz Integration Services yüklü. Daha fazla bilgi için bkz:Yükleme ve yerel paketi programla çalıştırma.

Uzak bir paket Uzak bilgisayarda çalışan

Yukarıda belirtildiği gibi uzak bir paket uzak bir sunucuda çalıştırabilirsiniz, birden fazla yolu daha vardır:

  • Uzak paket programsal olarak çalıştırmak için SQL Server Agent'ı kullanın

  • Bir Web kullanımını hizmet ya da uzak paket programsal olarak çalıştırılacak uzak bileşen

Bu konuda, yüklemek ve paketleri kaydetmek için kullanılan yöntemleri hemen hemen tüm başvuru gerektirir Microsoft.SqlServer.ManagedDTS derleme. Özel yürütme için bu konudaki gösterildiği ADO.NET yaklaþýmdýr sp_start_job saklı yordam, hangi yalnızca başvuru gerektirir.System.Data. Başvuru ekledikten sonra Microsoft.SqlServer.ManagedDTS Yeni bir proje alma derlemede Microsoft.SqlServer.Dts.Runtime ad alanı ile bir using veya Imports deyim.

Uzak paket, program aracılığıyla sunucuda çalıştırmak için SQL Server Agent'ı kullanma

Aşağıdaki kod örneği, programlı olarak nasıl gösterir SQL Server Aracı, uzak bir paket sunucuda çalıştırmak için. Kod örneği, sistem saklı yordamı çağırır. sp_start_ işhangi başlatır SQL Server Aracı iş. Yordamı başlatır işi yeniden adlandırılır RunSSISPackage, ve bu işlemi uzak bilgisayarda. The RunSSISPackage iş then runs the paket on the remote computer.

Not

Dönüş değeri, sp_start_job saklı yordamı saklı yordam için Windows NT olup olmadığını gösterenSQL Server Aracı başarıyla iş. Dönüş değeri, paket başarılı veya başarısız olup olmadığını göstermez.

Dosyasından çalıştırılırsa, paketleri sorun giderme hakkında bilgi için SQL Server Aracı işler, Microsoft Knowledge Base makalesine, bakın. SQL Server Agent iş adımından SSIS paket çağırdığınızda bir SSIS paket çalıştırın.

Örnek kod

Imports System.Data
Imports System.Data.SqlClient

Module Module1

  Sub Main()

    Dim jobConnection As SqlConnection
    Dim jobCommand As SqlCommand
    Dim jobReturnValue As SqlParameter
    Dim jobParameter As SqlParameter
    Dim jobResult As Integer

    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 = DirectCast(jobCommand.Parameters("@RETURN_VALUE").Value, Integer)
    jobConnection.Close()

    Select Case jobResult
      Case 0
        Console.WriteLine("SQL Server Agent job, RunSISSPackage, started successfully.")
      Case Else
        Console.WriteLine("SQL Server Agent job, RunSISSPackage, failed to start.")
    End Select
    Console.Read()

  End Sub

End Module
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();
    }
  }
}

Başa dön

Uzak paket programsal olarak çalıştırmak için bir Web hizmet ya da uzak bir bileşen kullanma

Önceki çözüm paketleri, program aracılığıyla sunucuda çalıştırmak için sunucu üzerindeki herhangi bir özel kod gerektirmez.Ancak, paketleri yürütülecek SQL Server Agent kullanan çözüm tercih edebilirsiniz.Aşağıdaki örnek, bir Web gösterir hizmet başlatmak için sunucuda oluşturulabilir Integration Services paketleri yerel olarak ve Web'de aramak için kullanılan bir sınama uygulaması hizmet bir istemci bilgisayardan. Bir Web hizmet yerine uzak bileşen oluşturmak isterseniz, uzak bileşen olarak çok az değişiklik aynı kodu mantığı kullanabilirsiniz.Ancak, uzak bileşen Web'den daha kapsamlı yapılandırma gerektirebilir hizmet.

Important noteImportant Note:

kimlik doğrulaması ve yetkilendirme için kendi varsayılan ayarlarla bir Web hizmet genellikle yüklemek ve paketleri yürütmek için SQL Server'ı veya dosya sistemine erişmek için yeterli izinlere sahip değil.Web'e uygun izinleri atamanız gerekebilir hizmet kimlik doğrulaması ve yetkilendirme ayarlarını yapılandırarak Web.config dosyası ve uygun veritabanı ve dosya sistemi izinleri atama.Web ve veritabanı dosya sistemi izinleri ile ilgili tam BIR tartışma, bu konunun kapsam dışındadır.

Important noteImportant Note:

Yöntemlerini Applicationçalışma ile SSIS paket depo sınıfı desteği yalnızca ".", localhost veya sunucu adı için yerel sunucu. "(Yerel)" kullanamazsınız.

Örnek kod

Aşağıdaki kod örnekleri nasıl oluşturulacağı ve Web sınama göster hizmet.

Web oluşturma hizmet

Bir Integration Services Paket, doğrudan bir dosya, SQL Server'dan doğrudan veya gelen SSIS paketi hem SQL Server, hem de özel bir dosya sistem klasörlerinin paketi depolama yönetir, depo, yüklenebilir. Bu örnek, kullanılabilir tüm seçenekleri kullanarak destekler bir Select Case veya switch Paket başlatmak için uygun sözdizimini seçin ve giriş bağımsız değişkenleri uygun şekilde bağlamak için bu seçeneği oluşturun. LaunchPackage Web hizmet yöntem paket yürütme yerine bir tamsayı olarak sonucu döndüren bir DTSExecResult Böylece istemci bilgisayarlar, herhangi bir baþvuru gerektirmeyen değer Integration Services derlemeler.

Web hizmet paketleri sunucu üzerinde programsal olarak çalıştırmak için oluşturmak için

  1. Visual Studio'nun açın ve tercih edilen programlama dilinde bir Web hizmet projesi oluşturun.Örnek kod, proje için LaunchSSISPackageService adı kullanır.

  2. Başvuru Ekle Microsoft.SqlServer.ManagedDTS ve bir ekleyin.Imports veya using deyim için Kod dosyaya Microsoft.SqlServer.dts.Runtime ad alanı.

  3. Örnek kod LaunchPackage Web hizmet yöntem için sınıf yapıştırın.(Örnek Kod penceresinin tüm içeriğini gösterir.)

  4. Oluşturma ve sağlayarak Web hizmetini sınama bir küme LaunchPackage yöntem, varolan bir paket gösteren giriş bağımsız için geçerli değerler.Örneğin, package1.DTSX C:\My paketleri sunucuda saklanıyorsa, "dosya" değerini sourceType, sourceLocation ve "package1" (uzantısı) olmadan packageName değeri olarak değeri olarak "C:\My paketleri" olarak geçirir.

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.IO

<WebService(Namespace:="http://dtsue/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class LaunchSSISPackageService
  Inherits System.Web.Services.WebService

  ' 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 Function LaunchPackage( _
    ByVal sourceType As String, _
    ByVal sourceLocation As String, _
    ByVal packageName As String) As Integer 'DTSExecResult

    Dim packagePath As String
    Dim myPackage As Package
    Dim integrationServices As New Application

    ' Combine path and file name.
    packagePath = Path.Combine(sourceLocation, packageName)

    Select Case sourceType
      Case "file"
        ' Package is stored as a file.
        ' Add extension if not present.
        If String.IsNullOrEmpty(Path.GetExtension(packagePath)) Then
          packagePath = String.Concat(packagePath, ".dtsx")
        End If
        If File.Exists(packagePath) Then
          myPackage = integrationServices.LoadPackage(packagePath, Nothing)
        Else
          Throw New ApplicationException( _
            "Invalid file location: " & packagePath)
        End If
      Case "sql"
        ' Package is stored in MSDB.
        ' Combine logical path and package name.
        If integrationServices.ExistsOnSqlServer(packagePath, ".", String.Empty, String.Empty) Then
          myPackage = integrationServices.LoadFromSqlServer( _
            packageName, "(local)", String.Empty, String.Empty, Nothing)
        Else
          Throw New ApplicationException( _
            "Invalid package name or location: " & packagePath)
        End If
      Case "dts"
        ' Package is managed by SSIS Package Store.
        ' Default logical paths are File System and MSDB.
        If integrationServices.ExistsOnDtsServer(packagePath, ".") Then
          myPackage = integrationServices.LoadFromDtsServer(packagePath, "localhost", Nothing)
        Else
          Throw New ApplicationException( _
            "Invalid package name or location: " & packagePath)
        End If
      Case Else
        Throw New ApplicationException( _
          "Invalid sourceType argument: valid values are 'file', 'sql', and 'dts'.")
    End Select

    Return myPackage.Execute()

  End Function

End Class
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();

  }

}

Web sınama hizmet

Aşağıdaki örnek konsol uygulaması Web kullanan hizmet bir paket çalıştırmak için.Web hizmet yöntem LaunchPackage paket yürütme yerine bir tamsayı olarak sonucu verir bir DTSExecResult Böylece istemci bilgisayarlar, herhangi bir baþvuru gerektirmeyen değer Integration Services derlemeler. Örnek özel bir numaralandırma, değerleri yansıtma oluşturur DTSExecResult değerler, yürütme sonuçlar raporlamak için.

Web hizmetini sınamak için bir konsol uygulaması oluşturmak için

  1. Visual Studio'da, aynı Web hizmet projeyi içeren çözüm için tercih edilen programlama dilini kullanarak yeni bir konsol uygulaması ekleyin.Örnek kod, proje için LaunchSSISPackageTest adı kullanır.

  2. küme çözümde başlangıç proje olarak yeni bir konsol uygulaması.

  3. Web hizmet projesi için bir Web başvurusu ekleyin.Gerekirse, örnek kod Web hizmet proxy'si nesneye atadığınız adı için bir değişken bildiriminde ayarlayın.

  4. Ana yordam ve özel numaralandırma için örnek kod, kodun yapıştırın.(Örnek Kod penceresinin tüm içeriğini gösterir.)

  5. Varolan bir paket gösteren giriş bağımsız değişken geçerli değerler sağlamak amacıyla LaunchPackage yöntem çağıran bir kod satırı düzenleyin.Örneğin, "dosya" olarak geçirmek package1.dtsx C:\My paketleri sunucuda saklanıyorsa, sourceType, Değeri olarak "C:\My paketleri" sourceLocationve "package1" (uzantısı) olmadan değeri olarak packageName.

Module LaunchSSISPackageTest

  Sub Main()

    Dim launchPackageService As New LaunchSSISPackageService.LaunchSSISPackageService
    Dim packageResult As Integer

    Try
      packageResult = launchPackageService.LaunchPackage("sql", String.Empty, "SimpleTestPackage")
    Catch ex As Exception
      ' The type of exception returned by a Web service is:
      '  System.Web.Services.Protocols.SoapException
      Console.WriteLine("The following exception occurred: " & ex.Message)
    End Try

    Console.WriteLine(CType(packageResult, PackageExecutionResult).ToString)
    Console.ReadKey()

  End Sub

  Private Enum PackageExecutionResult
    PackageSucceeded
    PackageFailed
    PackageCompleted
    PackageWasCancelled
  End Enum

End Module
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
    };

  }
}

Başa dön

Integration Services icon (small) Tümleştirme Hizmetleri ile güncel kalın

Karşıdan yüklemeler, makaleleri, örnekler ve en son Microsoft video yanı sıra, seçili topluluğun çözümleri için ziyaret Integration Services sayfa MSDN veya TechNet:

Bu güncelleştirmelerin otomatik bildirim için kullanılabilir RSS akışlarına abone olmak sayfa.