SQL-Ausführungsanweisungen in einem Loop Package-Beispiel
Die SQL-Ausführungsanweisungen in einem Loop-Beispielpaket verwenden einen Foreach-Schleifencontainer für die Iteration durch SQL-Anweisungen, die in Textdateien oder in einem Ordner gespeichert sind. Die Transact-SQL-Anweisungen erstellen fünf Tabellen in der AdventureWorks-Datenbank. Dies entspricht einer Tabelle für jede der gültigen Verkaufsregionen in den Vereinigten Staaten. Der Auflistungswert des Foreach-Dateienumerators ist einer Variablen zugeordnet. Diese Variable wird in einem Eigenschaftsausdruck verwendet, um den Wert einer Verbindungszeichenfolge im Dateiverbindungs-Manager bei jeder Enumeration zu aktualisieren.
Bei den Daten in der Textdatei sind verschiedene Probleme aufgetreten: Einige Postleitzahlen werden fälschlicherweise als numerische Werte interpretiert, sodass führende Nullen verloren gehen, und die Bezeichner für einige Verkaufsregionen sind ungültig. Der Datenfluss im Paket erkennt und korrigiert falsche Postleitzahlen, schreibt Datenzeilen mit ungültigen Verkaufsregionen in eine Datei und leitet gültige Datenzeilen an eine von fünf Tabellen in der AdventureWorks-Datenbank weiter.
Bei einer erneuten Ausführung des Pakets werden die Tabellen vor dem Einfügen der Daten abgeschnitten.
Wenn Sie das Beispiel unter einer nicht englischsprachigen Version von Windows ausführen, müssen Sie möglicherweise den lokalisierten Namen des Programmdateiordners ersetzen, um das Beispiel öffnen oder ausführen zu können.
Wichtig: |
---|
Die Beispiele dienen nur zu Lernzwecken. Sie sind nicht für die Verwendung in einer Produktionsumgebung gedacht und wurden nicht in einer Produktionsumgebung getestet. Microsoft bietet für diese Beispiele keinen technischen Support. |
Anforderungen
Stellen Sie vor dem Ausführen des Beispielpakets sicher, dass die folgenden Bedingungen erfüllt sind:
- Das Beispielpaket und die von diesem verwendeten Daten müssen auf dem lokalen Festplattenlaufwerk installiert sein.
- Sie müssen die AdventureWorks-Datenbank installiert haben und über Administratorrechte für die Datenbank verfügen.
- Wenn Sie beabsichtigen, das Beispielpaket lediglich über die Befehlszeile auszuführen, müssen Sie SQL Server 2005 Integration Services (SSIS) installieren.
- Wenn Sie beabsichtigen, das Paket im SSIS-Designer zu öffnen und das Beispielpaket auszuführen, müssen Sie Business Intelligence Development Studio installieren.
Weitere Informationen zum Installieren von Beispielen finden Sie im Thema "Installieren von Integration Services-Beispielpaketen" in der SQL Server 2005-Onlinedokumentation. Wenn Sie die aktuelle Version der Beispiele erhalten möchten, einschließlich neuer Beispiele, die nach der ursprünglichen Version von SQL Server 2005 veröffentlicht wurden, finden Sie entsprechende Informationen unter SQL Server 2005 Samples and Sample Databases (April 2006) (in Englisch).
Speicherort des Beispielpakets
Wenn die Beispiele im Standardverzeichnis installiert wurden, befindet sich das Beispielpaket für SQL-Ausführungsanweisungen im folgenden Ordner:
c:\Programme\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\
Zum Ausführen des Beispielpakets sind die folgenden Dateien erforderlich.
Datei | Beschreibung |
---|---|
ExecuteSQLStatementsInLoop.dtsx |
Die Paketdatei |
Customer.txt |
Die Quelldatendatei |
CustomersWithInvalidTerritoryID.txt |
Die Datei, in die ungültige Daten geschrieben werden |
CreateProspectTableTerr1.sql |
Die Transact-SQL-Anweisung zum Erstellen der Territory1-Tabelle |
CreateProspectTableTerr2.sql |
Die Transact-SQL-Anweisung zum Erstellen der Territory2-Tabelle |
CreateProspectTableTerr3.sql |
Die Transact-SQL-Anweisung zum Erstellen der Territory3-Tabelle |
CreateProspectTableTerr4.sql |
Die Transact-SQL-Anweisung zum Erstellen der Territory4-Tabelle |
CreateProspectTableTerr5.sql |
Die Transact-SQL-Anweisung zum Erstellen der Territory5-Tabelle |
Ausführen des Beispiels
Das Paket kann von der Befehlszeile aus mithilfe des Dienstprogramms dtexec oder in Business Intelligence Development Studio ausgeführt werden.
Wenn Sie eine nicht englischsprachige Version von Windows verwenden, müssen Sie möglicherweise die ConnectionString-Eigenschaft aller Dateiverbindungs-Manager aktualisieren, der in dem Paket verwendet wurde, um das Beispielpaket erfolgreich auszuführen. Überprüfen Sie, ob der im Verbindungs-Manager verwendete Pfad auf Ihrem Computer gültig ist, und ändern Sie ihn ggf. so, dass er den lokalisierten Namen des Programmdateiordners verwendet.
Für dieses Beispiel müssen Sie möglicherweise "Programme" in der ConnectionString-Eigenschaft für die Verbindungs-Manager CreateTableSQL, Customers und CustomersWithInvalidTerritoryID aktualisieren.
So führen Sie das Paket mithilfe von dtexec aus
Öffnen Sie ein Eingabeaufforderungsfenster.
Wechseln Sie mit dem Befehl zum Wechseln des Verzeichnisses, cd, in das Verzeichnis C:\Programme\Microsoft SQL Server\90\DTS\Binn, in dem sich dtexec befindet.
Geben Sie folgenden Befehl ein:
dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\ExecuteSQLStatementsInLoop.dtsx"
Drücken Sie die Eingabetaste.
Weitere Informationen zum Ausführen des Pakets mithilfe des Dienstprogramms dtexec finden Sie im Thema "dtexec (Dienstprogramm)" in der SQL Server 2005-Onlinedokumentation.
So führen Sie das Paket in Business Intelligence Development Studio aus
Öffnen Sie Business Intelligence Development Studio.
Zeigen Sie im Menü Datei auf Öffnen, und klicken Sie auf Projekt/Projektmappe.
Navigieren Sie zum ExecuteSQLStatementsInLoop-Beispielordner, und doppelklicken auf die Datei mit dem Namen ExecuteSQLStatementsInLoop.sln.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf ExecuteSQLStatementsInLoop.dtsx im Ordner SSIS-Pakete, und klicken Sie dann auf Paket ausführen.
Wichtig: |
---|
Wenn Sie die SQL-Ausführungsanweisungen eines Loop-Beispielpakets noch vor dem erstmaligen Ausführen des Pakets im SSIS-Designer öffnen, enthält der Datenflusstask eine Warnung. Die Warnung wird ausgegeben, weil die vom Paket verwendeten SQL Server-Tabellen zu diesem Zeitpunkt noch nicht vorhanden sind. Die Tabellen werden erstellt, wenn Sie das Paket zum ersten Mal ausführen. Die Warnung wird nicht angezeigt, wenn Sie das Paket erneut im SSIS-Designer öffnen, nachdem Sie es mindestens einmal ausgeführt haben. Das Paket wird ungeachtet der Warnung erfolgreich ausgeführt. |
Komponenten im Beispiel
Die folgende Tabelle listet die Integration Services-Tasks, -Container, -Quellen, -Transformationen, -Ziele und -Verbindungs-Manager auf, die im Beispiel verwendet werden.
Element | Zweck |
---|---|
Foreach-Schleife |
Der Foreach-Schleifencontainer (Run SQL Statements) verwendet den Foreach-Dateienumerator für die Iteration durch Dateien, die Transact-SQL-Anweisungen enthalten. Der Foreach-Schleifencontainer enthält einen Task SQL ausführen. |
Task SQL ausführen |
Der Task SQL ausführen, Create Tables, stellt eine Verbindung zur AdventureWorks-Datenbank her und führt fünf Transact-SQL-Anweisungen zum Erstellen von Tabellen aus. |
Datenflusstask |
Der Datenflusstask, Extract-Clean-Load Data, führt einen Datenfluss aus, der die Daten aus einer Textdatei extrahiert, die Daten bereinigt und verteilt und sie anschließend in Tabellen in der AdventureWorks-Datenbank lädt. |
Flatfilequelle |
Die Flatfilequelle, Extract data, extrahiert die Daten aus der Textdatei. |
Transformation für bedingtes Teilen |
Die Transformation für bedingtes Teilen, Direct Rows by TerritoryID, leitet Zeilen je nach dem in der TerritoryID-Spalte enthaltenen Wert zu verschiedenen Ausgaben weiter. Zeilen mit ungültigen Werten in TerritoryID werden an die Standardausgabe geleitet. |
Transformation für abgeleitete Spalten |
Die Transformation für abgeleitete Spalten, Fix Postal Code, bereinigt die Postleitzahlen, indem Sie vierstelligen Postleitzahlen eine führende Null hinzufügt. |
OLE DB-Ziel |
Fünf OLE DB-Ziele laden Daten in fünf verschiedene Regionstabellen. |
Dateiverbindungs-Manager |
Der Dateiverbindungs-Manager, Create Tables SQL, stellt eine Verbindung mit Dateien her, die SQL CREATE TABLE-Anweisungen enthalten. |
Verbindungs-Manager für Flatfiles |
Der Verbindungs-Manager für Flatfiles, Customers, stellt eine Verbindung zu der Textdatei her, die die Quelldaten des Kunden enthält. Der Verbindungs-Manager für Flatfiles, CustomsWithInvalidTerritoryId, stellt eine Verbindung zu der Textdatei her, in die das Paket die ungültigen Daten schreibt. |
OLE DB-Verbindungs-Manager |
Der OLE DB-Verbindungs-Manager, (local).AdventureWorks, stellt eine Verbindung zur AdventureWorks-Datenbank auf dem lokalen Server her. |
Beispielergebnisse
Um die Ausführungsergebnisse des Beispielpakets für SQL-Ausführungsanweisungen in einer Schleife anzuzeigen, öffnen Sie ein Abfragefenster in SQL Server Management Studio, geben die folgende Transact-SQL-Abfrage ein (oder kopieren sie) und führen die Abfrage aus.
SELECT * FROM AdventureWorks.dbo.Territory1
SELECT * FROM AdventureWorks.dbo.Territory2
SELECT * FROM AdventureWorks.dbo.Territory3
SELECT * FROM AdventureWorks.dbo.Territory4
SELECT * FROM AdventureWorks.dbo.Territory5
Diese Abfrage ruft die aus der Textdatei extrahierten und in SQL Server-Tabellen geladenen Daten ab.