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.
![]() |
---|
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. |
![]() |
---|
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
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.
Başvuru Ekle Microsoft.SqlServer.ManagedDTS ve bir ekleyin.Imports veya using deyim için Kod dosyaya Microsoft.SqlServer.dts.Runtime ad alanı.
Ö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.)
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
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.
küme çözümde başlangıç proje olarak yeni bir konsol uygulaması.
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.
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.)
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
|