Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı
Uzak paketleri Integration Services yüklü olmayan bir yerel bilgisayardan çalıştırmak için, tümleştirme hizmetlerinin yüklü olduğu uzak bilgisayarda çalıştırılacak şekilde paketleri başlatın. Bu hedefe ulaşmak için, yerel bilgisayarın uzak bilgisayarda paketleri başlatmak için SQL Server Agent' ı, bir Web hizmetini veya uzak bir bileşeni kullanmasını sağlayın. Uzak paketleri doğrudan yerel bilgisayardan başlatmaya çalışırsanız, paketler üzerine yüklenir ve yerel bilgisayardan çalıştırmayı dener. Yerel bilgisayarda Integration Services yüklü değilse paketler çalışmaz.
Uyarı
Integration Services yüklü olmadığı sürece paketleri sql server veri araçları dışında bir istemci bilgisayarda çalıştıramazsınız. SQL Server lisanslama koşulları, Integration Services'i diğer bilgisayarlara yüklemenize izin vermeyebilir. Integration Services bir sunucu bileşenidir ve istemci bilgisayarlara yeniden dağıtılamaz.
Alternatif olarak, Integration Services'ın yüklü olduğu yerel bir bilgisayardan uzak bir paket çalıştırabilirsiniz. Daha fazla bilgi için bkz . Program Aracılığıyla Yerel Paket Yükleme ve Çalıştırma.
Uzak Bilgisayarda Uzak Paket Çalıştırma
Uzak sunucuda uzak paket çalıştırmanın birden çok yolu vardır:
Uzak paketi program aracılığıyla çalıştırmak için SQL Server Aracısı'nı kullanma
Uzak paketi program aracılığıyla çalıştırmak için bir Web hizmeti veya uzak bileşen kullanma
Paketleri yüklemek ve kaydetmek için bu konu başlığında kullanılan yöntemlerin neredeyse tümü Microsoft.SqlServer.ManagedDTS derlemesine başvuru gerektirir. Özel durum, bu konuda yalnızca System.Data ve Microsoft.Data.SqlClient başvurularını gerektiren sp_start_job saklı yordamını yürütmek için gösterilen ADO.NETyaklaşımıdır. Başvuruyu yeni bir projeye Microsoft.SqlServer.ManagedDTS derlemesine ekledikten sonra, ad alanını using veya Imports deyimiyle içeri aktarınMicrosoft.SqlServer.Dts.Runtime.
Sql Server Aracısını Kullanarak Sunucuda Program Aracılığıyla Uzak Paket Çalıştırma
Aşağıdaki kod örneği, sunucuda uzak bir paket çalıştırmak için SQL Server Agent'ın program aracılığıyla nasıl kullanılacağını gösterir. Kod örneği, bir SQL Server Aracısı işi başlatan sp_start_job sistem saklı yordamını çağırır. Yordamın başlattığı iş olarak adlandırılır RunSSISPackageve bu iş uzak bilgisayardadır. İş RunSSISPackage daha sonra paketi uzak bilgisayarda çalıştırır.
Uyarı
sp_start_job saklı yordamının dönüş değeri, saklı yordamın SQL Server Aracısı işini başarıyla başlatıp başlatamadığını gösterir. Dönüş değeri, paketin başarılı mı yoksa başarısız mı olduğunu göstermez.
SQL Server Agent işlerinden çalıştırılacak paketlerin sorunlarını giderme hakkında bilgi için, SQL Server Aracısı iş adımından SSIS paketini çağırdığınızda SSIS paketi çalışmıyor başlıklı Microsoft makalesine bakın.
Örnek Kod
Imports System.Data
Imports Microsoft.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, RunSSISPackage, started successfully.")
Case Else
Console.WriteLine("SQL Server Agent job, RunSSISPackage, failed to start.")
End Select
Console.Read()
End Sub
End Module
using System;
using System.Data;
using Microsoft.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, RunSSISPackage, started successfully.");
break;
default:
Console.WriteLine("SQL Server Agent job, RunSSISPackage, failed to start.");
break;
}
Console.Read();
}
}
}
Bir Uzak Paketi Program Aracılığıyla Çalıştırmak için Web Hizmeti veya Uzak Bileşen Kullanma
Paketleri sunucuda program aracılığıyla çalıştırmak için önceki çözüm, sunucuda herhangi bir özel kod gerektirmez. Ancak, paketleri yürütmek için SQL Server Aracısı'na bağımlı olmayan bir çözüm tercih edebilirsiniz. Aşağıdaki örnekte, Integration Services paketlerini yerel olarak başlatmak için sunucuda bir Web hizmeti oluşturma ve bir istemci bilgisayardan Web hizmetini çağırmak için bir test uygulaması gösterilmektedir. Web hizmeti yerine uzak bir bileşen oluşturmayı tercih ederseniz, uzak bir bileşende birkaç değişiklikle aynı kod mantığını kullanabilirsiniz. Ancak uzak bir bileşen, Web hizmetinden daha kapsamlı bir yapılandırma gerektirebilir.
Önemli
Kimlik doğrulaması ve yetkilendirme için varsayılan ayarlarıyla, bir Web hizmeti genellikle PAKETLERI yüklemek ve yürütmek için SQL Server'a veya dosya sistemine erişmek için yeterli izinlere sahip değildir. web.config dosyasında kimlik doğrulaması ve yetkilendirme ayarlarını yapılandırarak ve veritabanı ve dosya sistemi izinlerini uygun şekilde atayarak Web hizmetine uygun izinleri atamanız gerekebilir. Web, veritabanı ve dosya sistemi izinlerinin eksiksiz bir tartışması bu konunun kapsamı dışındadır.
Önemli
SSIS Paket Deposu ile çalışmak için sınıfının yöntemleri Application yalnızca ".", localhost veya yerel sunucunun sunucu adını destekler. "(yerel)" kullanamazsınız.
Örnek Kod
Aşağıdaki kod örnekleri, Web hizmetini oluşturma ve test etme işlemini gösterir.
Web Hizmeti Oluşturma
Integration Services paketini doğrudan bir dosyadan, SQL Server'dan veya SSIS Paket Deposu'ndan yükleyebilirsiniz. SSIS Paket Deposu hem SQL Server hem de özel dosya sistemi klasörlerinde paket depolamayı yönetir. Bu örnek, paketi başlatmak için uygun söz dizimini seçmek ve giriş bağımsız değişkenlerini uygun şekilde birleştirmek için Büyük/Küçük Harf Seçme veya anahtar yapısı kullanarak tüm kullanılabilir seçenekleri destekler. LaunchPackage Web hizmeti yöntemi, istemci bilgisayarların herhangi bir Integration Services derlemesine başvuru gerektirmemesi için paket yürütmenin sonucunu bir değer yerine tamsayı DTSExecResult olarak döndürür.
Sunucudaki paketleri program aracılığıyla çalıştıracak bir Web hizmeti oluşturmak için
Visual Studio'yu açın ve tercih ettiğiniz programlama dilinde bir Web hizmeti projesi oluşturun. Örnek kod, proje için LaunchSSISPackageService adını kullanır.
Microsoft.SqlServer.ManagedDTS'ye bir başvuru ekleyin ve Microsoft.SqlServer.Dts.Runtime ad alanının kod dosyasına imports veya using deyimi ekleyin.
LaunchPackage Web hizmeti yöntemi için örnek kodu sınıfına yapıştırın. (Örnek, kod penceresinin tüm içeriğini gösterir.)
LaunchPackage yönteminin mevcut bir paketi işaret eden giriş bağımsız değişkenleri için bir dizi geçerli değer sağlayarak Web hizmetini derleyin ve test edin. Örneğin, package1.dtsx sunucuda C:\Paketlerim'de depolanıyorsa sourceType değeri olarak "dosya", sourceLocation değeri olarak "C:\Paketlerim" ve packageName değeri olarak "package1" (uzantı olmadan) geçirin.
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.IO
<WebService(Namespace:="https://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 = "https://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 Hizmetini Test Etme
Aşağıdaki örnek konsol uygulaması, bir paketi çalıştırmak için Web hizmetini kullanır. Web hizmetinin LaunchPackage yöntemi, istemci bilgisayarların herhangi bir Integration Services derlemesine başvuru gerektirmemesi için paket yürütmenin sonucunu bir DTSExecResult değer yerine tamsayı olarak döndürür. Örnek, değerleri yürütme sonuçlarını raporlamak için değerleri yansıtan DTSExecResult özel bir sabit listesi oluşturur.
Web hizmetini test etmek üzere bir konsol uygulaması oluşturmak için
Visual Studio'da, Web hizmeti projesini içeren çözüme tercih ettiğiniz programlama dilini kullanarak yeni bir konsol uygulaması ekleyin. Örnek kod, proje için LaunchSSISPackageTest adını kullanır.
Yeni konsol uygulamasını çözümdeki başlangıç projesi olarak ayarlayın.
Web hizmeti projesi için bir Web başvurusu ekleyin. Gerekirse, Web hizmeti proxy nesnesine atadığınız adın örnek kodundaki değişken bildirimini ayarlayın.
Main yordamı ve özel sabit listesi için örnek kodu koda yapıştırın. (Örnek, kod penceresinin tüm içeriğini gösterir.)
Var olan bir paketi işaret eden giriş bağımsız değişkenleri için geçerli değerler kümesi sağlamak üzere LaunchPackage yöntemini çağıran kod satırını düzenleyin. Örneğin, package1.dtsx sunucuda C:\Paketlerim'de depolanıyorsa, değeri olarak
sourceType"file" değerini , "C:\Paketlerim" değerinisourceLocationve "package1" (uzantısı olmadan) değerinipackageNameolarak geçirin.
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
};
}
}
Dış Kaynaklar
İlgili içerik
Yerel ve Uzaktan Yürütme arasındaki farkları anlama
Program Aracılığıyla Yerel Paket Yükleme ve Çalıştırma
Yerel Paketin Çıktısını Yükleme