Paketausführung (Problembehandlung)

Aktualisiert: 12. Dezember 2006

Integration Services enthält Features und Tools, die Sie zur Behandlung von Problemen beim Ausführen von Paketen nach deren Fertigstellung und Bereitstellung verwenden können.

Business Intelligence Development Studio stellt zur Entwurfszeit Haltepunkte zum Unterbrechen der Paketausführung, das Statusfenster sowie Daten-Viewer zum Überwachen der Daten beim Durchlaufen des Datenflusses zur Verfügung. Bei der Ausführung von bereitgestellten Paketen sind diese Features jedoch nicht verfügbar. Folgende Haupttechniken zum Behandeln von Problemen mit bereitgestellten Paketen sind verfügbar:

  • Abfangen und Behandeln von Paketfehlern mithilfe von Ereignishandlern
  • Aufzeichnen von fehlerhaften Daten mithilfe von Fehlerausgaben
  • Nachverfolgen der Paketausführungsschritte mithilfe der Protokollierung

Sie können außerdem die folgenden Tipps und Techniken verwenden, um Probleme mit ausgeführten Paketen zu vermeiden:

Abfangen und Behandeln von Paketfehlern mithilfe von Ereignishandlern

Sie können auf viele Ereignisse, die vom Paket und den Objekten im Paket ausgelöst wurden, mit Ereignishandlern reagieren.

  • Erstellen eines Ereignishandlers für das OnError-Ereignis. Sie können im Ereignishandler den Task 'Mail senden' verwenden, um einen Administrator über den Fehler zu benachrichtigen, einen Skripttask und benutzerdefinierte Logik verwenden, um Systeminformationen zur Problembehandlung abzurufen, oder einen Cleanup der temporären Ressourcen und unvollständigen Ausgaben durchzuführen. Weitere Informationen finden Sie unter Ereignishandler von SQL Server Integration Services und Erstellen von Paketereignishandlern.

Behandlung von Problemen mit externen Datenprovidern

Viele Paketfehler treten während Interaktionen mit externen Datenprovidern auf. Die von diesen Anbietern an Integration Services zurückgegebenen Meldungen bieten jedoch häufig nicht genug Informationen, um mit der Problembehandlung der Interaktion zu beginnen. Damit Sie die Problembehandlung vorgenommen werden kann, enthält Microsoft SQL Server 2005 Service Pack 2 (SP2) neue Meldungen für die Protokollierung, die Sie zur Problembehandlung der Interaktion eines Pakets mit externen Datenquellen verwenden können.

  • Aktivieren Sie die Protokollierung, und wählen Sie das Diagnostic-Ereignis des Pakets aus, um die neuen Meldungen zur Problembehandlung anzuzeigen. Seit SP2 kann mit den folgenden Komponenten von Integration Services vor und nach jedem Aufruf an einen externen Datenprovider eine Meldung in das Protokoll geschrieben werden:

    • OLE DB-Verwaltungs-Manager, OLE DB-Quelle und OLE DB-Ziel
    • ADO.NET-Verbindungs-Manager und DataReader-Quelle
    • Task SQL ausführen
    • Transformation für Suche, Transformation für OLE DB-Befehl und Transformation für langsam veränderliche Dimensionen

    Die neuen Protokollmeldungen enthalten den Namen der aufgerufenen Methode. Diese Protokollmeldungen können beispielsweise die Open-Methode eines Connection-Objekts von OLE DB oder die ExecuteNonQuery-Methode eines Command-Objekts enthalten. Die Meldungen weisen das im Folgenden aufgeführte Format auf, wobei '%1!s!' einen Platzhalter für die Informationen zur Methode darstellt:

    ExternalRequest_pre: The object is ready to make the following external request: '%1!s!'.
    ExternalRequest_post: '%1!s!'. The external request has completed.
    

    Überprüfen Sie zur Problembehandlung der Interaktion mit dem externen Datenprovider, ob für jede "Vorher"-Meldung (ExternalRequest_pre) eine entsprechende "Nachher"-Meldung (ExternalRequest_post) vorhanden ist. Wenn keine entsprechende "Nachher"-Meldung vorhanden ist, hat der externe Datenprovider nicht wie erwartet reagiert.
    Im folgenden Beispiel sind einige Beispielzeilen aus einem Protokoll dargestellt, in dem die neuen Meldungen für die Protokollierung enthalten sind:

    ExternalRequest_pre: The object is ready to make the following external request: 'ITransactionJoin::JoinTransaction'.
    ExternalRequest_post: 'ITransactionJoin::JoinTransaction succeeded'. The external request has completed.
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.Open'.
    ExternalRequest_post: 'IDbConnection.Open succeeded'. The external request has completed.
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.CreateCommand'.
    ExternalRequest_post: 'IDbConnection.CreateCommand finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbCommand.ExecuteReader'.
    ExternalRequest_post: 'IDbCommand.ExecuteReader finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDataReader.GetSchemaTable'.
    ExternalRequest_post: 'IDataReader.GetSchemaTable finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDataReader.Close'.
    ExternalRequest_post: 'IDataReader.Close finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.Close'.
    ExternalRequest_post: 'IDbConnection.Close finished'. The external request has completed."
    

Behandlung von Problemen mit fehlerhaften Daten mithilfe von Fehlerausgaben

Sie können die bei vielen Datenflusskomponenten verfügbare Fehlerausgabe verwenden, um Zeilen mit Fehlern an ein anderes Ziel zur späteren Analyse weiterzuleiten.

  • Aufzeichnen von fehlerhaften Daten mithilfe von Fehlerausgaben Senden Sie Zeilen, die Fehler enthalten, an eine anderes Ziel, z. B. an eine Fehlertabelle oder eine Textdatei. Die Fehlerausgabe fügt automatisch zwei numerische Spalten mit der Nummer des Fehlers, der zum Abweisen der Zeile führte, und der ID der Spalte, in welcher der Fehler auftrat, hinzu. Weitere Informationen finden Sie unter Behandeln von Fehlern in Daten und Vorgehensweise: Konfigurieren einer Fehlerausgabe in einer Datenflusskomponente.
  • Hinzufügen von beschreibenden Informationen zu den Fehlerausgaben. Fügen Sie zusätzlich zu den beiden von der Fehlerausgabe bereitgestellten numerischen Bezeichnern beschreibende Informationen hinzu, um die Analyse der Fehlerausgabe zu vereinfachen.
    Hinzufügen der Fehlerbeschreibung. Die Fehlerbeschreibungen können sehr leicht mithilfe der Skriptkomponente nachgeschlagen werden. Weitere Informationen finden Sie unter Enhancing an Error Output with the Script Component.
    Hinzufügen des Namens der Fehlerspalte. Das Abrufen des zur Spalten-ID gehörenden Spaltennamens (die Spalten-ID wird von der Fehlerausgabe gespeichert) mithilfe der Skriptkomponente ist nicht einfach und erfordert zusätzliche Arbeitsschritte. Jede Spalten-ID in einem Datenfluss ist innerhalb dieses Datenflusstasks eindeutig und wird zur Entwurfszeit permanent im Paket gespeichert. Folgenden Vorgehensweise wird zum Hinzufügen des Spaltennamens zur Fehlerausgabe empfohlen:
    1. Erstellen einer Nachschlagetabelle für Spaltennamen. Erstellen Sie eine separate Anwendung, die die Integration Services-API zum Ausführen einer Iteration durch alle gespeicherten Pakete, alle Datenflüsse in den Paketen, alle Objekte in den Datenflüssen sowie alle Eingaben und Ausgaben in den Datenflussobjekten verwendet. Die Anwendung sollte die Spalten-IDs und die Namen aller Spalten in einer Nachschlagetabelle zusammen mit der ID des übergeordneten Datenflusstasks und der ID des Pakets permanent speichern.
    2. Hinzufügen des Spaltennamens zur Ausgabe. Fügen Sie der Fehlerausgabe eine Transformation für Suche hinzu, die den Spaltennamen in der im vorherigen Schritt erstellten Nachschlagetabelle nachschlägt. Zum Nachschlagen können die Spalten-ID in der Fehlerausgabe, die Paket-ID (verfügbar über die Systemvariable System::PackageID) und die ID des Datenflusstasks (verfügbar über die Systemvariable System::TaskID) verwendet werden.

Behandlung von Problemen bei der Paketausführung mithilfe der Protokollierung

Sie können die meisten Vorgänge beim Ausführen von Paketen durch Aktivieren der Protokollierung nachverfolgen. Bei der Protokollierung werden Informationen zu angegebenen Ereignissen zur späteren Analyse aufgezeichnet und in einer Datenbanktabelle, einer Flatfile, einer XML-Datei oder einem anderen unterstützten Ausgabeformat gespeichert.

  • Aktivieren der Protokollierung. Sie können die Protokollierungsausgabe optimieren, indem Sie nur die Ereignisse und Informationen auswählen, die Sie aufzeichnen möchten. Weitere Informationen finden Sie unter SQL Server Integration Services-Protokollanbieter und Implementieren der Protokollierung in Pakete.
  • Wählen Sie das Diagnostic-Ereignis des Pakets aus, um Probleme mit dem Anbieter zu behandeln. In SP2 sind neue Meldungen für die Protokollierung enthalten, mit denen Sie Probleme bei der Interaktion eines Pakets mit externen Datenquellen behandeln können. Weitere Informationen finden Sie unter Behandlung von Problemen mit externen Datenprovidern in diesem Thema.
  • Verbessern der Standardprotokollierungsausgabe. Bei der Protokollierung werden normalerweise bei jeder Paketausführung Zeilen an ein Protokollierungsziel angefügt. Zwar enthält jede Zeile der Protokollierungsausgabe den Namen und eindeutigen Bezeichner des Pakets sowie die eindeutige ExecutionID der Paketausführung, die umfangreiche Protokollierungsausgabe in einer einzigen Liste kann jedoch die Analyse erschweren. Die folgende Vorgehensweise stellt eine Möglichkeit zum Verbessern der Standardprotokollierungsausgabe und Vereinfachen der Berichtgenerierung dar.
    1. Erstellen einer übergeordneten Tabelle zum Protokollieren aller Paketausführungen. Diese übergeordnete Tabelle enthält nur eine einzige Zeile pro Paketausführung und verwendet die ExecutionID zur Verknüpfung mit den untergeordneten Datensätzen in der Integration Services-Protokollierungstabelle. Zum Erstellen dieser neuen Zeile und Aufzeichnen der Startzeit können Sie am Anfang eines jeden Pakets den Task 'SQL ausführen' verwenden. Anschließend können Sie am Ende des Pakets den Task 'SQL ausführen' erneut verwenden, um die Beendigungszeit, Dauer und den Status in der Zeile zu aktualisieren.
    2. Hinzufügen von Überwachungsinformationen zum Datenfluss. Sie können mit der Überwachungstransformation Informationen zu Zeilen im Datenfluss hinzufügen, die Daten zur Paketausführung enthalten, durch die die betreffende Zeile erstellt oder geändert wurde. Die Überwachungstransformation stellt neun Arten von Informationen bereit, wie z. B. PackageName und ExecutionInstanceGUID. Weitere Informationen finden Sie unter Überwachungstransformation. Wenn Sie zu Überwachungszwecken jede Zeile mit benutzerdefinierten Informationen versehen möchten, können Sie diese Informationen mithilfe einer Transformation für abgeleitete Spalten den Zeilen im Datenfluss hinzufügen. Weitere Informationen finden Sie unter Transformation für abgeleitete Spalten.
    3. Erwägen der Aufzeichnung von Zeilenanzahldaten. Erwägen Sie, eine separate Tabelle mit Informationen zur Zeilenanzahl zu erstellen, in der jede Paketausführungsinstanz über ihre ExecutionID identifiziert wird. Verwenden Sie die Transformation für Zeilenanzahl, um an wichtigen Stellen im Datenfluss die Zeilenanzahl in einer Reihe von Variablen zu speichern. Verwenden Sie den Task 'SQL ausführen', um nach Beendigung des Datenflusses die Variablenreihe zur späteren Analyse und Berichterstattung in eine Zeile der Tabelle einzufügen.

Behandlung von Problemen bei der Überprüfung zur Laufzeit

Es kann vorkommen, dass Sie keine Verbindung mit den Datenquellen herstellen können oder Teile des Pakets erst nach der Ausführung von vorausgehenden Tasks im Paket zur Laufzeit überprüft werden können. Integration Services stellt die folgenden Features bereit, mit denen Sie die Überprüfungsfehler, die in solchen Fälle ausgelöst werden, vermeiden können:

  • Konfigurieren der DelayValidation-Eigenschaft für Paketelemente, die erst zur Laufzeit gültig sind. Zum Verhindern von Überprüfungsfehlern können Sie für Paketelemente, deren Konfigurationen zur Entwurfszeit ungültig sind, DelayValidation auf True festlegen. Ein Beispiel hierfür wäre ein Datenflusstask, der eine Zieltabelle verwendet, die erst zur Laufzeit durch einen Task 'SQL ausführen' erstellt wird. Die DelayValidation-Eigenschaft kann auf Paketebene oder auf der Ebene der einzelnen, in den Paketen enthaltenen Tasks und Container aktiviert werden.
    Die DelayValidation-Eigenschaft kann für einen Datenflusstask, jedoch nicht für einzelne Datenflusskomponenten festgelegt werden. Sie erreichen für einzelne Datenflusskomponenten ein ähnliches Ergebnis, wenn Sie die ValidateExternalMetadata-Eigenschaft der Datenflusskomponenten auf false festlegen. Wenn jedoch der Wert dieser Eigenschaft auf false festgelegt ist, erkennt die Komponente keine Änderungen der Metadaten externer Datenquellen. Wenn der Wert auf true festgelegt ist, können Sie durch Verwendung der ValidateExternalMetadata-Eigenschaft durch Sperren in der Datenbank verursachte Blockierungsprobleme vermeiden, insbesondere, wenn das Paket Transaktionen verwendet.

Behandlung von Problemen mit Berechtigungen zur Laufzeit

Wenn beim Versuch, bereitgestellte Pakete mithilfe des SQL Server-Agents auszuführen, Fehler auftreten, verfügen die vom Agent verwendeten Konten möglicherweise nicht über die erforderlichen Berechtigungen. Informationen über die Problembehandlung bei Paketen, die von Aufträgen des SQL Server-Agents ausgeführt werden, finden Sie im Microsoft Knowledge Base-Artikel für Support Beim Aufrufen aus einem SQL Server-Agentauftragsschritt wird ein SSIS-Paket nicht ausgeführt. Weitere Informationen zum Ausführen von Pakten aus SQL Server-Agentaufträgen finden Sie unter Planen der Paketausführung im SQL Server-Agent und Vorgehensweise: Ausführen eines Pakets mit einem SQL Server-Agent-Auftrag.

Behandlung von 64-Bit-Problemen

Wenn auf 64-Bit-Servern Fehler bei Paketen auftreten, die erfolgreich im 32-Bit-Modus bzw. auf 32-Bit-Servern ausgeführt werden konnten, sollten Sie die folgenden Punkte bedenken. Weitere Informationen finden Sie unter Überlegungen zu Integration Services auf 64-Bit-Computern.

  • Einige Datenprovider sind auf der 64-Bit-Plattform nicht verfügbar. Insbesondere ist keine 64-Bit-Version des Microsoft OLE DB-Anbieters für Jet verfügbar, der zum Herstellen von Verbindungen mit Excel- oder Access-Datenquellen benötigt wird.
  • Skripts müssen vor der Verwendung auf einem 64-Bit-Computer auf einem 32-Bit-Computer vorkompiliert werden. In Paketen, die Skripttasks oder Skriptkomponenten verwenden, muss die PreCompile-Eigenschaft auf True festgelegt werden.
  • DTS-Pakete können nicht im 64-Bit-Modus ausgeführt werden. Wenn ein Paket den Task 'DTS 2000-Paket ausführen' zum Ausführen von SQL Server 2000 Data Transformation Services (DTS)-Paketen verwendet, müssen Sie das Paket im 32-Bit-Modus ausführen. Es ist keine 64-Bit-Laufzeitunterstützung für DTS-Pakete vorhanden.

Behandlung von Fehlern ohne Beschreibung

Wenn ein Integration Services-Fehler ohne zugehörige Beschreibung auftritt, können Sie die Beschreibung zu dem Fehler anhand seiner Fehlernummer in der Liste unter Integration Services Error and Message Reference nachschlagen. Die Liste enthält zurzeit keine Informationen zur Problembehandlung.

Siehe auch

Aufgaben

Paketentwicklung (Problembehandlung)

Konzepte

Problembehandlung der Paketleistung
SQL Server Integration Services-Dienst (Problembehandlung)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Neuer Inhalt:
  • Es wurden Informationen hinzugefügt, dass SQL Server 2005 SP2 neue Meldungen für die Protokollierung enthält, mit denen Benutzer Probleme bei externen Anbietern behandeln können.