Info: DTS-Paket-Entwicklung, Bereitstellung und Leistung

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 242391 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel dient einige ausführliche Informationen zur Unterstützung der Entwicklung und Bereitstellung SQL Server 7.0 Data Transformation Services (DTS)-Pakete bereitstellen. Hinweise zur Verbesserung der Leistung Paket werden ebenfalls bereitgestellt.

Informationen zu diesem Thema in SQL Server 2000 finden Sie unter SQL Server-Onlinedokumentation.

Weitere Informationen

Machen Datenverbindungen flexible

Ein DTS-Paket ist eine vollständig selbst enthaltenen Einheit. Alle Verbindungsinformationen werden in die Verbindung Eigenschaftenauflistung zur Entwurfszeit auch Verbindungsinformationen in UDLs und ODBC-DSNs eingelesen. Wenn Sie der ODBC-DSN oder OLE DB-UDL, ändern nach dem Erstellen des Pakets, hat die Änderung keine Auswirkungen auf das Paket. Dies ist wichtig Beachten Sie beim Versuch, Pakete von einer Entwicklungsumgebung zu Produktion zu migrieren.

Bei Verwendung von SQL Server-Datenverbindungen verwenden Sie (lokal) für den Servernamen erleichtern das Paket von Server zu Server verschieben, da der Name des Servers zur Ausführungszeit-Paket behoben ist. Ein Nachteil dieses Ansatzes besteht darin, dass, dass das Paket ausgeführt und auf die SQL bearbeitet werden erforderlich ist Server-Computer selbst.

Sie auch können ein ActiveX-Skript-Task oder ein Wrapper-Programm Sie Paketeigenschaften zur Laufzeit ändern. Um das Paket in sich selbst zu ändern, erstellen Sie einen ActiveX-Skripttask Datapump Tasks vor, und ändern Sie das Paket, während der Ausführung. Um ein Handle zum Paket Verweis DTSGlobalVariables.Parent zu erhalten. Von dort aus können Sie den Paketeigenschaften ändern es ist jedoch etwas Programmierung Fähigkeiten erforderlich.

Im folgenden Beispiel aus dem SQL Books Online Thema "ActiveX-Skripttasks," zum Ändern der DataSource-Verbindung-Eigenschaft mit einem ActiveX-Skript ist:
   Function main()
   dim oPackage
   dim oConn

     'Get package object
     set oPackage = DTSGlobalVariables.parent
     'Get a handle to the desired connection.
     set oConn = oPackage.connections(1)
     'Modify the datasource.
     oConn.datasource = "newServerName"

     'Release object handles.
     set oPackage = nothing
     set oConn = nothing

    Main = DTSTaskExecResult_Success
End function
				
Wenn Sie besser steuern möchten und noch mehr Codierung Abrufen von Zeilen nicht mind, sollten Sie das Paket mit einem externen Programm ändern, bevor es ausgeführt wird oder das Paket neu erstellt.

Erstellen ein Programm zum Laden und Ändern eines Pakets, das Vorlage-Paket mit dem DTS-Assistenten oder mit dem DTS-Designer erstellen und speichern. Schreiben Sie ein Visual Basic-Programm, das das Paket lädt und ändert die gewünschten Eigenschaften, und rufen die Execute-Methode für das Paketobjekt, das Paket ausgeführt.

Um ein Programm zum Generieren eines Pakets aus neu zu erstellen, erstellen Sie ein Prototyp-Paket mit dem DTS-Assistenten oder mit dem DTS-Designer und speichern Sie es auf dem lokalen SQL Server. Verwenden Sie das Dienstprogramm "ScriptPkg" im folgenden Artikel der Microsoft Knowledge Base, um eine Vorlage für den Paketcode zu erstellen:
239454Info: Generiert ScriptPkg Tool DTS Object Model Code, um Hilfe mit DTS programmgesteuert
Schreiben Sie dieses Vorlage als Verweis verwenden, Ihre eigenen Code, um ein Paket basierend auf Benutzereingaben zu generieren.

Beachten Sie, dass für beide vorherigen Situationen das Visual Basic-Projekt einen Verweis auf die Microsoft DTSPackage-Objektbibliothek verfügen muss.

wichtig : bei Ausführen eines Pakets aus einem Programm in Visual Basic und Überwachung Paket oder Aufgabenereignisse geschrieben alle Schritte im Paket müssen konfiguriert werden auf dem primären Thread ausgeführt werden. Dies liegt an eine Einschränkung in Visual Basic, der ordnungsgemäß behandeln mehrere gleichzeitige Aufrufe an seine Ereignisse verhindert.

Steuern von Paketen mit globalen Variablen

Globalen Variablen sind nur über ActiveX-Skripttasks, Workflow Skripts und ActiveX-Transformationen. Sie können nicht direkt im SQL-Anweisungen oder Eigenschaften der Verbindung verwendet werden. Jedoch kann ein ActiveX-Skript-Task verwendet werden, um eine SQL-Anweisung oder Verbindungseigenschaften basierend auf einer globalen Variablen zu ändern. Hier ist ein Beispiel ActiveX-Skript Aufgabe, die verwendet werden kann, um die SQL-Anweisung für ein DataPumpTask basierend auf die globale Variable mit dem Namen 'Booktype' zu ändern:
Function Main()
   dim oPackage
   dim oPump

        'Get a handle to the Package object.
	set oPackage = DTSGlobalVariables.Parent
	'Get a handle to the desired Datapump Task.
	set oPump = oPackage.Tasks("DTSTask_DTSDataPumpTask_1").CustomTask   
	'Alter the datapump SQL statement.
	oPump.SourceSQLStatement = "select * from pubs..titles WHERE type _
  = ''" + DTSGlobalVariables("booktype") + "''"
	Main = DTSTaskExecResult_Success
End Function
				
Hinweis : die Beschreibung einer Aufgabe wird in DTS-Designer angezeigt, jedoch nicht, eine Aufgabe in einem ActiveX-Skript direkt verweisen verwendet werden. Der Name des Vorgangs sollte verwendet werden, verweisen Sie die Aufgabe von einem ActiveX-Skript auf. Um den Namen der der Task betrachten die Workfloweigenschaften für den Namen Schritt abzurufen. Der Vorgangsname entspricht dem Schritt außer dem Wort 'Schritt' mit 'Task' ersetzt wird. Beispielsweise wird DTSStep_DTSDataPumpTask_1 DTSTask_DTSDataPumpTask_1.

Übergeben von Parametern zu einem DTS-Paket

DTSRun-Programm akzeptiert keine Befehlszeilenparameter, die für das Paket während der Ausführung übergeben werden können. Um Informationen zu einem Paket zur Laufzeit übergeben, müssen die Parameter aus einer Datei lesen oder programmgesteuert aus einer Datenbanktabelle abgefragt werden.

Hinweis : Wenn SQL Server 2000-Tools oder eine benannte Instanz von SQL Server 2000 auf einem Server, auf dem SQL Server 7.0 als Standardinstanz installiert ist installiert ist, akzeptiert das Programm DTSRun den Befehlszeilenparameter/a in globalen Variablen in einer SQL Server 7.0-DTS-Paket definierten Werte über die Befehlszeile übergeben.

Hier ist ein Beispiel für ein ActiveX-Skripttask, der eine Zeile aus einer Textdatei eine globale Variable fest liest. Diese globale Variable konnte dann verwendet werden, um Paket Verhalten wie in diesem Artikel im Abschnitt "Pakete mit globalen Variablen steuern" dargestellt.
Function main()
  Dim fso	'This will serve as a handle to a file system object.
  Dim ofile	'Handle for accessing a file.

    'Get a file system object for manipulation files.
    Set fso = CreateObject("Scripting.FileSystemObject")

    'Open the text file.
    Set ofile = fso.OpenTextFile("c:\test.txt")

    'Read line from the file into the global variable.
    DTSGlobalVariables("myGlobalVar").Value = ofile.ReadLine

    'Close the "parameter" file.
    ofile.Close

    Main = DTSTaskExecResult_Success
End function
				
die folgenden veranschaulicht, wie einen ActiveX-Skripttask verwenden, um Parameter aus einer SQL Server-Tabelle zu lesen. Der Code liest den Wert der Paramvalue-Spalte in der My_param_table und zum Festlegen einer globalen Variablen verwendet. In diesem Beispiel verwendet SQL Distributed Management Objects (DMO) für die Interaktion mit SQL Server, aber Sie können das gleiche mithilfe von ActiveX Data Objects (ADO) oder eine andere Datenzugriffsmethode ausführen.
Function main()
Dim oServer 		'DMO Server object.
Dim oResult		'Result set.
Dim sParamValue

	'Create a SQLDMO server object.
	Set oServer =  CreateObject("SQLDMO.SQLServer")

	' Make a connection to the local server.
	oServer.Connect ".", "sa"

	'Select the desired row from the table.
	set oResult = oServer.Databases("pubs").ExecuteWithResults_
("select  paramvalue from  my_param_table")

	'Retrieve the first row, first column from the results.
	sParamValue = oResult.GetColumnString (1,1)

	'Set the global variable.
	DTSGlobalVariables("MyGlobalVar").Value = sParamValue

	Main = DTSTaskExecResult_Success
End function
				

Schreiben von benutzerdefinierten DTS-Tasks in Visual Basic

Es ist möglich, benutzerdefinierte DTS-Tasks in Visual Basic zu schreiben. Ein Beispiel für einen benutzerdefinierten Vorgang in Visual Basic ohne Benutzeroberfläche ist im Verzeichnis \Devtools\Samples\DTS auf der SQL Server-CD verfügbar. Im folgenden werden einige häufige Probleme beim Umgang mit benutzerdefinierten Visual Basic-Tasks in DTS:
  1. Benutzerdefinierte Tasks in Visual Basic geschrieben und einer Schnittstelle wie DTS.CustomTaskUI muss implementieren jedes Ereignis in die Schnittstelle implementieren, oder Sie werden eine Zugriffsverletzung verursachen.
  2. Wenn Sie eine benutzerdefinierte Visual Basic-Aufgabe mit einer Benutzeroberfläche entwickeln, wird empfohlen, SQL Server Service Pack 1 (SP1) anzuwenden. SP1 umfasst verschiedene Erweiterungen für UI-Entwicklung zu erleichtern.
  3. Visual Basic-Vorgänge sind Apartmentthread, während DTS free threaded ist. Um eine Aufgabe in Visual Basic geschriebene auszuführen, muss er auf dem Hauptthread ausgeführt werden, oder es wird eine Zugriffsverletzung verursachen. DTS-legt das entsprechende Flag standardmäßig fest. Der Benutzer sollte dieses Flag nicht ändern.

Erhalten Informationen zu Code DTS-Pakete

In SQL 7.0 stehen mehrere Beispiele auf der CD im Ordner \Devtools\Damples\DTS. Dazu gehören ein Beispiel für benutzerdefinierten Task (Visual Basic) und eine benutzerdefinierte Transform (C++). Einige Beispielpakete werden auch in der selbstextrahierenden ausführbaren Datei DTSDemo.exe.

Das vielseitigste Beispiel ist ScriptPkg, die dtsdemo.exe gehört. ScriptPkg enthält den Visual Basic-Herkunftscode, der ein in Visual Basic-Code auf dem lokalen Server gespeichertes Paket konvertiert. In diesem Beispiel wird am besten für verwendet:
  1. Erzeugt Visual Basic-Beispiele von Skripts eines vorhandenen DTS-Pakets.
  2. Zeigt, wie den DTS-Flatfile-Treiber code, ist die nicht in SQL Books Online dokumentiert.
  3. Konvertieren ein Paket in Text, sodass hinzugefügt und in SourceSafe nachverfolgt.
Es sind mehrere bekannte Probleme mit der ScriptPkg-Beispiel:
  1. Lookups für die Datapump, die für die Skripterstellung nicht korrekt festgelegt werden.
  2. Wenn das Paket zu groß ist, dann der Text generiert als eine Funktion in Visual Basic aufgrund einer Beschränkung der Anzahl der Zeilen in eine Funktion behandelt werden kann nicht. Sie müssen die Skriptdatei in mehrere Funktionen auf Ihren eigenen Visual Basic zum Kompilieren des Codes zu unterteilen.

Verbessern der Leistung von DTS-Paket

Mit parallele laden

DTS kann mehrere Vorgänge parallel ausgeführt. Jede Verbindung in DTS-Paket kann jedoch nur einen Thread zu einem Zeitpunkt verarbeiten. Das bedeutet, dass die folgenden Datenaustausch in einem Paket serialisiert werden:

EIN-> B und A-> B
EIN-> B und A-> C
EIN-> B und C-> B

Unabhängig davon, ob Sie die dieselben oder verschiedene Symbole für die Verbindung verwenden, macht keinen Unterschied.

Die einzige Möglichkeit, parallele Ausführung von Aufgaben zu erhalten besteht darin, mehrere Verbindungen zu derselben Datenbank mit unterschiedlichen Namen zu erstellen. Beispielsweise werden A-> B und C-> D parallel ausgeführt selbst wenn B und D sind verschiedene Verbindungen auf demselben Server und Datenbank.

Rangfolgeneinschränkungen können verwendet werden, um Aufgabe Ausführungsreihenfolge erzwingen und verhindern Parallelität für ausgewählte Vorgänge.

Insert Commit Size

Der wichtigste Parameter der DataPumpTask ist der Commit-Größe einfügen . Diese Eigenschaft ist nur relevant, wenn das Ziel SQL Server ist. Er steuert, wie viele Zeilen sind Massenkopieren, die vor der Transaktion eingefügt. Standardmäßig ist dies 0, alle Zeilen sind Teil einer einzelnen Transaktion. Dies ist die sicherste Einstellung, da bei jedem Fehler SQL Server alle Änderungen zurückgesetzt. Jedoch können sehr umfangreichen Transaktionsprotokoll erfordern, führen zu sehr lange Antwortzeiten bei einem Paket abgebrochen wird und Zähler werden produktiver, wenn eine einzelne Zeile am Ende von eine großen Last bewirkt, die gesamte Auslastung dass fehlschlagen. Eine deutliche Pause wird am Ende jedes Commit-Intervalls angezeigt, während die Zeilen ein Commit ausgeführt werden. Eine Commit-Größe von 0 ist am schnellsten, aber andere gute Werte sind 10.000, 1000 und 1 in Reihenfolge der verringern beschleunigen. 1 ist nützlich, da nur 1 Zeile auf einen beliebigen Fehler ein Rollback ist.

Beachten Sie, dass die Fehleranzahl auf eine beliebige Zahl > 1 festlegen keine Auswirkungen, hat Wenn die Insert Commit-Größe 0 ist. Die Fehleranzahl der zählt die Anzahl der Transaktionen mit Fehlern und nicht die Anzahl der Zeilen.

In SQL Server 7.0 können Sie im Abschnitt Daten Bewegung auf der Registerkarte Erweitert der Eigenschaften für den Datentransformationstask ? Insert Commit Size -Wert festlegen.

DTS und verteilte Transaktionen

Pakete bieten Unterstützung für verteilte Transaktionen für diesen Anbieter, die Unterstützung von DTC. Der DTC-Dienst muss für Paket und Schritt Transaktionen funktionieren ausgeführt werden. Darüber hinaus muss jeder Anbieter in der Transaktion DTC unterstützen.

Die Transaktion Paketeigenschaften werden auf der Registerkarte Erweitert den Paketeigenschaften gesteuert.

Standardmäßig jede Schritt in einem Paket verarbeitet seine eigene Transaktionen und nicht die Transaktionen über DTC koordiniert. Um eine Aufgabe in eine DTC-Transaktion eintragen müssen Sie das Kontrollkästchen "Verknüpfung Transaktion, wenn vorhanden" in den Workfloweigenschaften der Aufgabe festlegen. Andere DTC-Transaktion-Optionen für einen Vorgang sind "Commit für Transaktion nach erfolgreichem Abschluss dieses Schritt ausführen" und "Rollback-Transaktion bei einem Fehler."

Beachten Sie, dass Pakete nicht Microsoft Transaction Server (MTS) unterstützen.

Fehlermeldung

Wenn Sie lokal für die Datenbank-Server für eine Verbindung von einem Paket und das Paket von einem anderen Server anschließend bearbeitet und möchte, dass diese Person die Transformationen betrachten tritt auf, die folgenden Fehlermeldung:
Fehlerquelle: Microsoft OLE DB Provider für SQL Server-Fehlerbeschreibung: in der Anmeldung 'Xxxxxxx' angeforderte Datenbank kann nicht geöffnet. Anmeldung schlägt fehl."

Eigenschaften

Artikel-ID: 242391 - Geändert am: Montag, 25. November 2002 - Version: 1.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbmt kbinfo KB242391 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 242391
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com