2 Angebote ab € 9,99 €
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Dieses Buch zu den Data Transformation Services (DTS) - einem Tool des Microsoft SQL Server 2000 - zeigt Ihnen, wie Sie Daten unterschiedlicher Herkunft transformieren, zusammenfassen und verschieben. Sie erfahren, wie Sie Daten verschiedenster Herkunft mit dem DTS-Objektmodell vergleichbar und analysefähig präsentieren können oder wie Sie Unternehmens-Infosysteme erstellen. Anhand zahlreicher Beispiele zeigt Ihnen der Autor alle DTS-Funktionen, wie Sie mit dem DTS-Objektmodell programmieren und vieles andere mehr, was Sie über DTS mit dem MS SQL Server 2000 wissen müssen.
Dieses Buch zu den Data Transformation Services (DTS) - einem Tool des Microsoft SQL Server 2000 - zeigt Ihnen, wie Sie Daten unterschiedlicher Herkunft transformieren, zusammenfassen und verschieben. Sie erfahren, wie Sie Daten verschiedenster Herkunft mit dem DTS-Objektmodell vergleichbar und analysefähig präsentieren können oder wie Sie Unternehmens-Infosysteme erstellen. Anhand zahlreicher Beispiele zeigt Ihnen der Autor alle DTS-Funktionen, wie Sie mit dem DTS-Objektmodell programmieren und vieles andere mehr, was Sie über DTS mit dem MS SQL Server 2000 wissen müssen.
Produktdetails
- Produktdetails
- New Technology
- Verlag: Markt +Technik
- Seitenzahl: 760
- Abmessung: 245mm
- Gewicht: 1378g
- ISBN-13: 9783827260710
- ISBN-10: 382726071X
- Artikelnr.: 24092562
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
- New Technology
- Verlag: Markt +Technik
- Seitenzahl: 760
- Abmessung: 245mm
- Gewicht: 1378g
- ISBN-13: 9783827260710
- ISBN-10: 382726071X
- Artikelnr.: 24092562
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
Einleitung 25
Teil I Einführung in DTS 27
Kapitel 1 Überblick über DTS 29
1.1 Eine Hochleistungs-Datapump - und eine Menge mehr 30
1.2 Komplexe Datentransformationen mit dem
DTS-Designer erstellen 31
1.2.1 Die Struktur eines DTS-Pakets 32
1.2.2 Verbindungen erstellen 35
1.2.3 Tasks erstellen 36
1.2.4 Den Workflow einrichten 37
1.3 DTS-Pakete speichern und abrufen 38
1.3.1 Speicherort Meta Data Services 39
1.3.2 Speicherort SQL Server 40
1.3.3 Strukturierte Speicherdatei 40
1.3.4 Visual Basic-Datei 40
1.3.5 Paketversionen 41
1.4 Ein DTS-Paket ausführen 41
1.4.1 DTS-Pakete vom DTS-Designer ausführen 41
1.4.2 DTS-Pakete von den Assistenten ausführen 42
1.4.3 DTS-Pakete vom Enterprise Manager ausführen 42
1.4.4 DTS-Pakete aus Visual Basic-Code heraus ausführen 43
1.4.5 DTS-Pakete mit den gespeicherten Systemprozeduren
der OLE-Automatisierung ausführen 43
1.4.6 Ein DTS-Paket als Datenprovider 44
1.4.7 Das Befehlszeilendienstprogramm DTSRun 44
1.4.8 Das Dienstprogramm DTSRun für Windows 47
1.4.9 Aus einem anderen DTS-Paket ausführen 49
1.4.10 Ein DTS-Paket planen 50
1.4.11 Der Ausführungskontext für ein DTS-Paket 51
1.5 Das DTS-Objektmodell zur Programmsteuerung 52
1.5.1 Das DTS-Objektmodell 53
1.5.2 Das DTS-Objektmodell mit dem Task
"Dynamische Eigenschaften" 53
1.5.3 Das DTS-Objektmodell mit der Funktion
"Getrennte Bearbeitung" 55
1.5.4 DTS mit VBScript programmieren 57
1.5.5 DTS mit Visual Basic programmieren 57
1.5.6 DTS mit Visual C++ programmieren 57
1.6 DTS-Vorlagen 58
1.6.1 Vorlagen verwenden 58
1.6.2 Vorlagen erstellen 58
1.7 Assistenten für die schnelle Anwendungsentwicklung 59
1.7.1 Der Assistent zum Kopieren von Datenbanken 59
1.7.2 Der DTS-Import/Export-Assistent 61
1.8 DTS in der Praxis 63
1.8.1 Aktualisieren einer Datenbank von
Microsoft Access zu SQL Server 63
1.8.2 Daten aus mehren Quellen konsolidieren 63
1.8.3 Datamart oder Datawarehouse erstmalig und regelmäßig laden 64
1.8.4 Berichte in Transaktionsverarbeitungssystemen 64
1.8.5 Erstellen einer Schnittstelle zum Web für ein Legacysystem 65
1.8.6 Eine Datenbank archivieren 65
1.8.7 Internet-Nutzungsdaten analysieren 65
1.8.8 Importieren und Exportieren mit XML 67
1.9 Schlussbemerkungen 68
Kapitel 2 Erweiterungen bei DTS in SQL Server 2000 69
2.1 Die Top Ten der neuen Merkmale von DTS 70
2.2 Die neuen DTS-Tasks 71
2.2.1 Task "Dynamische Eigenschaften" 71
2.2.2 FTP-Task (File Transfer Protocol) 71
2.2.3 Task "Paket ausführen" 71
2.2.4 Message Queue-Task 72
2.2.5 Paralleler Datapumptask 72
2.2.6 Analysis Services-Aufbereitungstask 73
2.2.7 Datamining-Vorhersageabfragetask 73
2.2.8 Task "Datenbanken übertragen" 74
2.2.9 Task "In 'master' gespeicherte Prozeduren übertragen" 74
2.2.10 Task "Aufträge übertragen" 75
2.2.11 Task "Benutzernamen übertragen" 75
2.2.12 Task "Fehlermeldungen übertragen" 75
2.3 Erweiterungen des Transformationstasks 75
2.3.1 Mehrere Phasen in den Tasks zur Datentransformation 75
2.3.2 Package Object Browser beim Schreiben von Skripts 77
2.4 Die neuen Datentransformationen 77
2.4.1 Parameter in der Quellabfrage verwenden 78
2.4.2 Neue Fehlerdateioptionen 78
2.4.3 Suchabfragen können jetzt Daten modifizieren 78
2.5 Neue Merkmale in anderen Tasks 79
2.5.1 Verwendung von Eingabeparametern im Task "SQL ausführen" 79
2.5.2 Das Ergebnis des Tasks "SQL ausführen" an Parameter zuweisen 80
2.5.3 Das Ergebnis des Tasks "SQL ausführen" an ein
Recordset zuweisen 80
2.5.4 Package Object Browser beim Schreiben von ActiveX-Skripts 81
2.5.5 Automatisches Generieren einer Formatdatei im Masseneinfügungstask 81
2.6 Andere neue Merkmale in DTS 81
2.6.1 Der Assistent zum Kopieren von Datenbanken 81
2.6.2 Speichern in einer Visual Basic-Datei 82
2.6.3 Werte der globalen Paketvariablen mit DTSRun einstellen 82
2.6.4 DTSRunUI - Eine Windows-Oberfläche für DTSRun 82
2.6.5 Paketvorlagen 83
2.6.6 Getrennte Bearbeitung 83
2.6.7 Deklaration für globale Variablen erzwingen 83
2.6.8 Just-In-Time-Debuggen 84
2.6.9 Cache für Pakete aktivieren 84
2.6.10 Einzelne Schritte im Paket-Designer ausführen 85
2.6.11 DTS-Paketprotokolle 85
2.7 Andere neue Merkmale in SQL Server 2000, die Datentransformationen erweitern 86
2.7.1 Integration mit XML 86
2.7.2 Indizierte Sichten 86
2.7.3 Benutzerdefinierte Funktionen 86
2.8 Schlussbemerkungen 86
Kapitel 3 DTS und der Datenfluss im Unternehmen 87
3.1 Unternehmensdatenstruktur und Datenfluss 89
3.2 Der Motor für Transformationen von Unternehmensdaten 90
3.3 Arten der Datennutzung 91
3.3.1 Transaktionsverarbeitung 92
3.3.2 Geschäftsanalyse 92
3.3.3 Verlauf verwalten 97
3.4 Datenquellen 97
3.4.1 Systeme der Online-Transaktionsverarbeitung (OLTP) 97
3.4.2 Internet-Nutzungsdaten 97
3.4.3 Daten von außerhalb der Organisation 98
3.4.4 Das Datawarehouse 98
3.4.5 Ergebnisse von Geschäftsanalysesystemen 98
3.5 Metadaten 99
3.6 Arten der Datenspeicherung 100
3.6.1 Textdateien 101
3.6.2 XML 101
3.6.3 Tabellenblätter 103
3.6.4 Relationale Datenbank-Managementsysteme 103
3.6.5 Mehrdimensionale Datenbank-Managementsysteme (OLAP) 104
3.7 Schlussbemerkungen 106
Kapitel 4 Mit DTS Daten in einen Datamart verschieben 107
4.1 Mehrdimensionale Datenmodellierung 108
4.1.1 Unterschiede zwischen relationaler und mehrdimensionaler Modellierung 110
4.2 Faktentabelle 112
4.2.1 Measures auswählen 113
4.2.2 Die Ebene der Zusammenfassung für die Measures auswählen 114
4.3 Dimensionstabellen 115
4.3.1 Der Primärschlüssel in einer Dimensionstabelle 116
4.3.2 Ebenen der Dimensionshierarchie 116
4.3.3 Attribute der Dimension 117
4.3.4 Die Zeitdimension 118
4.3.5 Untergeordnete Dimensionsschlüssel 118
4.4 Das Sternschema laden 119
4.4.1 Daten in einen Vorbereitungsbereich laden 120
4.4.2 Die Dimensionstabellen laden 121
4.4.3 Die untergeordneten Dimensionsschlüssel aktualisieren 123
4.4.4 Die Faktentabelle laden 123
4.4.5 Die Daten verwenden 125
4.5 Aktualisierungen an Dimensionstabellen vermeiden 125
4.6 Schlussbemerkungen 130
Teil II DTS-Verbindungen und Transformationstasks 131
Kapitel 5 DTS-Verbindungen 133
5.1 DTS-Verbindungen erstellen 135
5.2 Verbindungseigenschaften 136
5.2.1 Eigenschaften, die eine DTS-Verbindung identifizieren 137
5.2.2 Eigenschaften, die den Zugriff auf die Datenquelle bestimmen 140
5.2.3 Andere Eigenschaften 144
5.3 Verbindungen für andere OLE DB-Provider erstellen 146
5.3.1 Der SQL Server OLE DB-Provider 146
5.3.2 Textdateiverbindungen 148
5.3.3 Der OLE DB-Provider für OLAP Services 151
5.3.4 Andere OLE DB-Provider 152
5.4 Datenverbindungen dynamisch modifizieren 154
5.5 Leistungsprobleme bei DTS-Verbindungen 155
5.6 Schlussbemerkungen 156
Kapitel 6 Der Task "Daten transformieren" 157
6.1 Wann man den Task "Daten transformieren" verwendet 158
6.2 Einen neuen Task "Daten transformieren" erstellen 160
6.2.1 Einen Task "Daten transformieren" mit dem
DTS-Designer erstellen 160
6.2.2 Einen Task "Daten transformieren" mit dem
DTS-Import/Export-Assistenten erstellen 161
6.2.3 Einen Task "Daten transformieren" per Code erstellen 161
6.3 Beschreibung und Name des Tasks 162
6.4 Die Quelle eines Tasks "Daten transformieren" 163
6.4.1 Textdateiquelle 164
6.4.2 Tabelle, Sicht oder Abfrage bei einer
relationalen Datenbankquelle 164
6.4.3 MDX-Abfrage bei einem mehrdimensionalen Quellcube 166
6.4.4 XML als Quelle verwenden 167
6.4.5 Parameter in einer Quellabfrage 167
6.4.6 Eigenschaften einer DataPumpTask-Quelle 169
6.5 Das Ziel eines Tasks "Daten transformieren" 169
6.5.1 Eine neue Zieltabelle erstellen 169
6.5.2 Textdateiziel 170
6.5.3 Eigenschaften eines DataPumpTask-Ziels 171
6.6 Quellspalten zu Zielspalten zuordnen 172
6.6.1 Transformationsflags 177
6.6.2 Eine Transformation testen 179
6.6.3 Die Auflistungen, die eine Transformation implementieren 180
6.6.4 Andere Eigenschaften einer Transformation 181
6.7 Die Transformationstypen 181
6.7.1 Datums-/Uhrzeit-Zeichenfolgen-Transformation 181
6.7.2 Zeichenfolgen in Großbuchstaben, Zeichenfolgen
in Kleinbuchstaben und Spalten kopieren 183
6.7.3 Teilzeichenfolge und Zeichenfolge kürzen 184
6.7.4 Datei lesen 184
6.7.5 Datei schreiben 185
6.7.6 ActiveX-Skript 186
6.7.7 Benutzerdefinierte Transformation 187
6.8 Andere Eigenschaften des Tasks "Daten transformieren" 187
6.8.1 Eigenschaften der Fehlerbehandlung 187
6.8.2 Eigenschaften der Datenverschiebung 190
6.8.3 Optionen für die Leistungsverbesserung bei SQL Server-Zielen 191
6.9 Spalteneigenschaften 193
6.10 Einen Task "Daten transformieren" in Visual Basic erzeugen 195
6.11 Transformationen per Code erstellen 199
6.11.1 Einen Transformationstyp per Code wählen 199
6.11.2 Die Transformation und ihre Spalten erzeugen 201
6.11.3 Spalten-Kopieren-, Großbuchstaben- und Kleinbuchstabentransformationen 203
6.11.4 Zeichenfolge-Kürzen- und Teilzeichenfolge-Transformationen 203
6.11.5 Datei-Lesen- und Datei-Schreiben-Transformationen 204
6.11.6 Datums-/Uhrzeit-Zeichenfolgen-Transformationen 205
6.11.7 ActiveX-Transformationen 206
6.11.8 Eine Beispielanwendung mit allen Transformationen 207
6.12 Den Task "Daten transformieren" als freistehendes
Symbol verwenden 207
6.13 Schlussbemerkungen 211
Kapitel 7 ActiveX-Skripts für einen Task "Daten transformieren" 213
7.1 Wann man ActiveX-Skripttransformationen verwendet 215
7.1.1 Ein Task oder mehrere Tasks? 215
7.1.2 Die Vielfalt der Transformationstypen 216
7.2 Grundlagen von ActiveX-Skripttransformationen 216
7.3 Die Entwicklungsumgebung für
ActiveX-Skripttransformationen 218
7.4 Eine Skriptsprache wählen 222
7.5 Transformationsstatus festlegen 222
7.5.1 DTSTransformStat_OK 222
7.5.2 DTSTransformStat_SkipRow 223
7.5.3 DTSTransformStat_SkipFetch 223
7.5.4 DTSTransformStat_SkipInsert 223
7.5.5 DTSTransformStat_DestDataNotSet 224
7.5.6 DTSTransformStat_Info 224
7.5.7 DTSTransformStat_OKInfo 224
7.5.8 DTSTransformStat_SkipRowInfo 224
7.5.9 DTSTransformStat_Error 225
7.5.10 DTSTransformStat_ErrorSkipRow 225
7.5.11 DTSTransformStat_ExceptionRow 225
7.5.12 DTSTransformStat_AbortPump 226
7.5.13 DTSTransformStat_NoMoreRows 226
7.6 Lokale Variablen erzeugen und verwenden 226
7.6.1 Variablentypen 226
7.6.2 Objektvariablen 228
7.6.3 Variablendeklaration erzwingen (Option Explicit) 228
7.7 Globale Variablen 229
7.7.1 Globale Variablen in der Benutzeroberfläche erzeugen 229
7.7.2 Globale Variablen in einem ActiveX-Skript erzeugen 231
7.7.3 Groß-/Kleinschreibung bei globalen Variablen 232
7.7.4 Die Methoden Lock und Unlock des Objekts GlobalVariable2 233
7.8 Suchtabellen 233
7.8.1 Suchtabellen in der Benutzeroberfläche erzeugen 234
7.8.2 Suchtabellenobjekte in einem ActiveX-Skript erzeugen 235
7.8.3 Eine Suchabfrage in einem ActiveX-Skript verwenden 236
7.8.4 Daten mit einer Suchabfrage modifizieren 236
7.9 ActiveX-Skripts verwenden oder Quellabfrage modifizieren 237
7.9.1 Einfache Zuweisung von Spalten 237
7.9.2 Zeichenfolgenmanipulation 238
7.9.3 Unbekannte Werte behandeln 238
7.9.4 Nach einem unbekannten Wert suchen 239
7.9.5 Mit einer äußeren Verknüpfung Datenverlusten vorbeugen 240
7.9.6 Daten aus zwei Quellen durch eine vollständige
äußere Verknüpfung mischen 241
7.9.7 Informationen aus einem Datensatz in mehrere
Datensätze trennen 242
7.9.8 Informationen aus mehreren Datensätzen zu einem
Datensatz kombinieren 246
7.10 Schlussbemerkungen 248
Kapitel 8 Der Task "Datengesteuerte Abfrage" 249
8.1 Wann man den Task "Datengesteuerte Abfrage" verwendet 251
8.2 Einen Task "Datengesteuerte Abfrage" erstellen 252
8.3 Transformationsstatuskonstanten für den Task
"Datengesteuerte Abfrage" 255
8.4 Beispiel für eine datengesteuerte Abfrage 256
8.5 Einen Task "Datengesteuerte Abfrage" in Visual Basic erstellen 259
8.6 Schlussbemerkungen 262
Kapitel 9 Multiphasendatapump 263
9.1 Die Multiphasendatapump aktivieren 264
9.2 Programmfluss mit mehreren Phasen 267
9.3 Die Phasen verwenden 269
9.3.1 Phase "Vor Quelldaten" 272
9.3.2 Phase "Zeilentransformation" 273
9.3.3 Phase "Nach Zeilentransformation" 273
9.3.4 Phase "Bei Transformationsfehler" 274
9.3.5 Phase "Bei Einfügungsfehler" 274
9.3.6 Phase "Bei erfolgreicher Einfügung" 275
9.3.7 Phase "Batch beendet" 276
9.3.8 Phase "Nach Quelldaten" 277
9.3.9 Phase "Pump beendet" 278
9.4 Mit Visual C++ ein COM-Objekt erzeugen,
um die Phasen zu programmieren 279
9.5 Eine Multiphasendatapump per Code erzeugen 279
9.5.1 Die Eigenschaft TransformPhases 279
9.5.2 Die Einstiegsfunktionen einrichten 280
9.6 Schlussbemerkung 281
Kapitel 10 Der parallele Datapumptask 283
10.1 Hierarchische Rowsets 284
10.2 Wann man den parallelen Datapumptask verwendet 287
10.3 Die Auflistungen und Eigenschaften des
parallelen Datapumptasks 288
10.4 Die Transformationsmodi 288
10.4.1 Hierarchischer Modus 289
10.4.2 Vereinfachter Modus 289
10.4.3 Datengesteuerter Abfragemodus 289
10.4.4 Die Eigenschaft TransformationSetOptions 290
10.5 Einen parallelen Datapumptask in Visual Basic erstellen 290
10.6 Eine Benutzeroberfläche für den parallelen Datapumptask 293
10.7 Schlussbemerkungen 299
Teil III Andere Tasks zum Verschieben und
Manipulieren von Daten 301
Kapitel 11 Der Masseneinfügungstask 303
11.1 Wann man den Masseneinfügungstask gegenüber
dem Task "Daten transformieren" bevorzugt 304
11.2 Einen Masseneinfügungstask erzeugen 306
11.3 Das Ziel für einen Masseneinfügungstask 306
11.4 Die Quelle für eine Masseneinfügung 307
11.4.1 Textdateien mit Feldern fester Länge 307
11.4.2 Textdateien mit Trennzeichen 307
11.5 Formatdateien 308
11.5.1 Struktur einer Formatdatei 309
11.5.2 Eine Formatdatei generieren 310
11.6 Unterschiede zwischen Quelle und Ziel beilegen 313
11.6.1 Zusätzliche Felder in der Datenzieltabelle 313
11.6.2 Felder beim Verschieben von der Quelle zum Ziel
neu anordnen 315
11.6.3 Zusätzliche Felder in der Quelltextdatei 316
11.7 Andere Eigenschaften des Masseneinfügungstasks 317
11.7.1 CHECK-Einschränkungen 318
11.7.2 NULL-Werte beibehalten 319
11.7.3 IDENTITY_INSERT aktivieren 320
11.7.4 Tabellensperre 320
11.7.5 Sortierte Daten 321
11.7.6 Codepage 322
11.7.7 Typ der Datendatei 322
11.7.8 Größe für Einfügungsbatch 323
11.7.9 Maximale Fehlerzahl 323
11.7.10 Nur ausgewählte Zeilen kopieren 324
11.8 Einen Masseneinfügungstask in Visual Basic erzeugen 324
11.9 Schlussbemerkungen 327
Kapitel 12 Der Task "SQL ausführen" 329
12.1 Wann man den Task "SQL ausführen" verwendet 330
12.2 Den Task "SQL ausführen" erzeugen 330
12.3 Abfragen für verschiedene Datenbanksysteme schreiben 332
12.4 Eingabeparameter im Task "SQL ausführen" 333
12.5 Ausgabeparameter für Zeilenwerte 335
12.6 Ausgabeparameter für ein Rowset 337
12.7 SQL-Anweisungen dynamisch modifizieren 339
12.8 Mit dem Task "SQL ausführen" ein DTS-Paket von einem Remoteserver ausführen 340
12.9 Einen Task "SQL ausführen" in Visual Basic erstellen 344
12.10 Schlussbemerkungen 347
Kapitel 13 Der Task "SQL Server-Objekte kopieren" 349
13.1 Wann man den Task "SQL Server-Objekte kopieren"
verwendet 350
13.2 Quelle und Ziel 351
13.3 Kopieroptionen 352
13.3.1 Zielobjekte erstellen 352
13.3.2 Daten kopieren 354
13.3.3 Sortierung verwenden 354
13.3.4 Alle Objekte kopieren 355
13.3.5 Standardoptionen verwenden 356
13.3.6 Verzeichnis für Skriptdatei 357
13.4 Andere Eigenschaften des Tasks
"SQL Server-Objekte kopieren" 357
13.5 Objektauswahl mit Methoden manipulieren 358
13.6 Einen Task "SQL Server-Objekte kopieren"
in Visual Basic erstellen 361
13.7 Schlussbemerkungen 363
Kapitel 14 Der FTP-Task (File Transfer Protocol) 365
14.1 Wann man den FTP-Task verwendet 366
14.2 Den Task erstellen und seine Eigenschaften festlegen 366
14.3 Den Task in Visual Basic erstellen 369
14.4 Schlussbemerkungen 371
Kapitel 15 Der Task "Datenbanken übertragen" und andere Tasks
zum Übertragen von Objekten 373
15.1 Wann man die Tasks zum Übertragen verwendet 374
15.2 Die Tasks erstellen und ihre Eigenschaften festlegen 375
15.2.1 Quelle und Ziel für die Tasks 375
15.3 Der Task "Datenbanken übertragen" 375
15.4 Der Task "Benutzernamen übertragen" 377
15.5 Der Task "Aufträge übertragen" 378
15.6 Der Task "In 'master' gespeicherte Prozeduren übertragen" 379
15.7 Der Task "Fehlermeldungen übertragen" 380
15.8 Die Tasks in Visual Basic erzeugen 381
15.9 Schlussbemerkungen 383
Teil IV Tasks zur Steuerung 385
Kapitel 16 Skripts für einen ActiveX-Skripttask schreiben 387
16.1 Wann man einen ActiveX-Skripttask verwendet 388
16.2 Einen ActiveX-Skripttask erstellen 389
16.3 DTS-Eigenschaften dynamisch modifizieren 390
16.3.1 Ein Paket referenzieren 390
16.3.2 Eine Verbindung referenzieren 391
16.3.3 Eine globale Variable referenzieren 391
16.3.4 Schritte, Tasks und benutzerdefinierte Tasks referenzieren 392
16.3.5 Auflistungen und Objekte in einem Task
"Daten transformieren" referenzieren 393
16.3.6 Das DTS-Application-Objekt referenzieren 393
16.3.7 Objekte und Eigenschaften, die man nicht direkt
referenzieren kann 393
16.3.8 Ein Dienstprogramm erstellen, um die Anzahl der
verarbeiteten Zeilen zu beschränken 394
16.4 Eine Schleife in einem DTS-Paket programmieren 395
16.5 ADO-Recordsets verwenden 398
16.6 Dateien und Verzeichnisse manipulieren 399
16.7 Datensätze in das Taskprotokoll schreiben 400
16.8 Visual Basic-Code nach VBScript konvertieren 401
16.8.1 Variablendeklaration 402
16.8.2 CreateObject für Objektvariablen verwenden 402
16.8.3 For-Next-Schleifen 403
16.8.4 Dateizugriff 403
16.8.5 GoTo und Zeilenmarken 403
16.8.6 Fehlerbehandlung 403
16.8.7 API-Aufrufe 404
16.8.8 Code als Einstiegsfunktion verwenden 404
16.8.9 VBScript-Code in Visual Basic verwenden 404
16.9 Einen ActiveX-Skripttask in Visual Basic erstellen 404
16.10 Schlussbemerkungen 406
Kapitel 17 Der Task "Dynamische Eigenschaften" 407
17.1 Wann man den Task "Dynamische Eigenschaften" verwendet 408
17.2 Den Task erstellen und seine Eigenschaften zuweisen 409
17.2.1 Eine neue Zuweisung vornehmen 409
17.2.2 Objekt und Eigenschaft für die Zuweisung auswählen 410
17.2.3 Datenquelle für die Zuweisung auswählen 412
17.3 Einen Task "Dynamische Eigenschaften" in
Visual Basic erstellen 417
17.4 Schlussbemerkungen 418
Kapitel 18 Der Task "Paket ausführen" 419
18.1 Wann man den Task "Paket ausführen" verwendet 420
18.2 Den Task erstellen und seine Eigenschaften festlegen 421
18.3 Werte der globalen Variablen im untergeordneten
Paket festlegen 423
18.4 Die Eigenschaft NestedExecutionLevel des Pakets 426
18.5 Ein DTS-Dienstprogramm erstellen und aufrufen 426
18.6 Den Task in Visual Basic erstellen 430
18.7 Schlussbemerkungen 432
Kapitel 19 Der Message Queue-Task 433
19.1 Wann man den Message Queue-Task verwendet 434
19.2 Den Task erstellen und seine Eigenschaften festlegen 435
19.2.1 Den Warteschlangenpfad festlegen 436
19.2.2 Nachrichten senden 436
19.2.3 Nachrichten empfangen 438
19.3 Den Task in Visual Basic erzeugen 443
19.4 Schlussbemerkungen 445
Kapitel 20 Der Task "Mail senden" 447
20.1 Wann man den Task "Mail senden" verwendet 448
20.2 Den Task erstellen und seine Eigenschaften festlegen 449
20.3 Die Methoden des Tasks "Mail senden" 450
20.4 Den Task in Visual Basic erstellen 450
20.5 Schlussbemerkungen 452
Kapitel 21 Der Analysis Services-Tasks 453
21.1 Wann man die Analysis Services-Tasks verwendet 454
21.2 Den Analysis Services-Aufbereitungstask verwenden 455
21.3 Datamining-Vorhersageabfragetask 460
21.4 Den Analysis Services-Aufbereitungstask in
Visual Basic erzeugen 463
21.5 Den Datamining-Vorhersageabfragetask in
Visual Basic erstellen 464
21.6 Schlussbemerkungen 466
Kapitel 22 Der Task "Prozess ausführen" 467
22.1 Wann man den Task "Prozess ausführen" verwendet 468
22.1.1 Massenkopieren von SQL Server in eine Textdatei 468
22.1.2 Eine Batchdatei ausführen, die osql- und/oder
bcp-Befehle enthält 468
22.1.3 Andere Anwendungen zur Verschiebung oder Änderung
von Daten ausführen 469
22.1.4 DTSRun ausführen 470
22.2 Den Task erzeugen und seine Eigenschaften festlegen 470
22.2.1 Die Eigenschaften des Tasks "Prozess ausführen" 470
22.2.2 Die Methode GetExpandedProcessCommandLine des
Objekts CreateProcess2 471
22.3 Den Task in Visual Basic erstellen 471
22.4 Schlussbemerkungen 473
Teil V DTS-Pakete und Schritte 475
Kapitel 23 Das DTS-Paket und seine Eigenschaften 477
23.1 DTS-Pakete identifizieren 478
23.2 DTS-Pakete speichern 480
23.2.1 DTS-Pakete nach SQL Server speichern 481
23.2.2 DTS-Pakete in Meta Data Services speichern 484
23.2.3 DTS-Pakete im Dateisystem speichern 485
23.2.4 DTS-Pakete als Visual Basic-Dateien speichern 486
23.3 DTS-Pakete verschlüsseln 487
23.4 Informationen über Pakete abrufen 488
23.4.1 In SQL Server gespeicherte Pakete 488
23.4.2 In Meta Data Services gespeicherte Pakete 492
23.4.3 In Dateien gespeicherte Pakete 493
23.5 Paketprotokolle und Fehlerdateien 494
23.5.1 Protokollieren in SQL Server 497
23.6 DTS-Pakete als Datenquelle 503
23.6.1 Der Datenprovider DTSPackageDSO 503
23.6.2 Ein DTS-Paket als Datenquelle einrichten 503
23.6.3 Ein DTS-Paket mit OPENROWSET abfragen 504
23.6.4 Ein DTS-Paket als Verbindungsserver registrieren 506
23.6.5 XML von einem Task "Daten transformieren" über
den Provider DTSPackageDSO zurückgeben 507
23.7 Andere Eigenschaften und Methoden von DTS-Paketobjekten 508
23.7.1 CreationDate, CreatorComputerName und CreatorName 509
23.7.2 PackageType 509
23.7.3 Parent 509
23.7.4 UseOLEDBServiceComponents 510
23.7.5 Die Methode GetDTSVersionInfo 510
23.8 Schlussbemerkungen 510
Kapitel 24 Schritte und Rangfolgeneinschränkungen 511
24.1 Schritte, Tasks und das DTS-Paket 512
24.2 Rangfolgeneinschränkungen 513
24.2.1 Die drei Arten der Rangfolge 514
24.2.2 Rangfolgeneinschränkungen im DTS-Designer erzeugen 515
24.2.3 Rangfolgeneinschränkungen per Programm erzeugen 517
24.3 Der Ausführungsstatus des Schrittes 519
24.4 Threads und Priorität der Ausführung 519
24.4.1 Ausführungsparameter für Threads auf Paketebene 519
24.4.2 Ausführungsparameter für Threads auf Schrittebene 521
24.5 Transaktionen in DTS-Paketen 524
24.5.1 Transaktionseigenschaften auf Paketebene 524
24.5.2 Transaktionseinstellungen für die Schritte 527
24.5.3 Teilnahme an Transaktionen durch Verbindungen und Tasks 529
24.5.4 Eine Transaktion mit nacheinander ausgeführten Schritten 530
24.5.5 Eine Transaktion mit parallel ausgeführten Schritten 533
24.5.6 Transaktionen über mehrere DTS-Pakete 536
24.6 Workflow-ActiveX-Skripts 537
24.6.1 Rückgabewerte von Skripts 539
24.6.2 Skript-Ergebnisse für Schleifenkonstruktionen nutzen 539
24.6.3 Schritteigenschaften für das Workflowskript 540
24.7 Andere Eigenschaften des Step-Objekts 540
24.7.1 StartTime, FinishTime und ExecutionTime 540
24.7.2 Description 541
24.7.3 Parent 541
24.8 Einen Schritt mit Visual Basic erstellen 541
24.9 Schlussbemerkungen 542
Kapitel 25 Schnelle Entwicklung mit dem Assistenten zum Kopieren
von Datenbanken und dem DTS-Import-/Export-Assistenten 543
25.1 Zwei Assistenten mit drei Ebenen der Granularität 544
25.1.1 Datenbanken mit dem Assistenten zum Kopieren
von Datenbanken übertragen 545
25.1.2 SQL Server-Objekte mit dem DTS-Import/Export-Assistenten übertragen 545
25.1.3 Daten mit dem DTS-Import/Export-Assistenten übertragen 546
25.2 Die Assistenten aufrufen 547
25.2.1 Assistenten vom Enterprise Manager aufrufen 547
25.2.2 Assistenten von der Befehlszeile aufrufen 548
25.2.3 Assistenten aus einem Programm aufrufen 549
25.3 Der Assistent zum Kopieren von Datenbanken 551
25.3.1 Quelle und Ziel auswählen 551
25.3.2 Die Datenbanken und Dateistandorte wählen 552
25.3.3 Andere zu übertragende Objekte wählen 554
25.3.4 Das vom Assistenten zum Kopieren von Datenbanken
erzeugte DTS-Paket 554
25.4 Verbindungen mit dem DTS-Import/Export-Assistenten
erstellen 556
25.5 SQL Server-Objekte übertragen 557
25.6 Datentransformationen einrichten 558
25.6.1 Eine Abfrage verwenden, um die zu übertragenden
Daten zu spezifizieren 558
25.6.2 Tabelle(n) und Sicht(en) aus der Quelldatenbank kopieren 560
25.6.3 Die Zieltabellen 561
25.6.4 Die Datentransformationen 563
25.7 Das Paket ausführen, planen, speichern und replizieren 565
25.7.1 Ein DTS-Paket für die Replikation erzeugen 566
25.7.2 Ein DTS-Paket für die spätere Ausführung planen 567
25.7.3 Ein DTS-Paket speichern 568
25.8 Den DTS-Import/Export-Assistenten fertig stellen 568
25.9 Schlussbemerkungen 568
Kapitel 26 Pakete mit Visual Basic und gespeicherten Prozeduren verwalten 571
26.1 Mit DTS-Paketen in Visual Basic arbeiten 572
26.1.1 Installationsvoraussetzungen 572
26.1.2 Ein Paket in Visual Basic speichern 573
26.1.3 Die Entwicklungsumgebung von Visual Basic einrichten 575
26.2 Die Struktur der von Visual Basic generierten
DTS-Codemodule 577
26.2.1 Headerinformationen 577
26.2.2 Deklaration der öffentlichen Variablen 578
26.2.3 Die Funktion Main 578
26.2.4 Funktionen zum Erzeugen der Tasks 582
26.3 Ein Paket aus Visual Basic heraus ausführen 583
26.3.1 Pakete laden und speichern 583
26.3.2 Ereignisse behandeln 584
26.3.3 Fehler behandeln 586
26.3.4 Eigenschaften dynamisch modifizieren 588
26.3.5 Eine Schleife in der Datentransformation implementieren 588
26.4 Ein Paket aus Visual Basic unter Verwendung
von SQL Namespace ausführen 589
26.5 Pakete und gespeicherte Systemprozeduren der OLE-Automatisierung 592
26.5.1 Die Prozeduren sp_OACreate und sp_OADestroy 592
26.5.2 Die Prozedur sp_OAMethod 593
26.5.3 Die Prozeduren sp_OAGetProperty und sp_OASetProperty 594
26.5.4 Die Prozedur sp_OAGetErrorInfo 595
26.6 Ein Paket mit gespeicherten Prozeduren ausführen 596
26.7 Schlussbemerkungen 599
Kapitel 27 Fehler in einem Paket und seinen Transformationen 601
27.1 Inkorrekte Daten behandeln 602
27.1.1 Potenzielle Fehler in den Daten analysieren 602
27.1.2 Fehler auslösen 603
27.1.3 Fehler korrigieren 605
27.1.4 Fehlerinformationen speichern 605
27.1.5 Transaktionskonsistenz aufrecht erhalten 606
27.1.6 Administratoren über Fehler informieren 606
27.2 ActiveX-Skripts debuggen 606
27.2.1 Mit dem Skriptdebugger arbeiten 609
27.2.2 Den Debugger verlassen ohne den Enterprise Manager
zu beenden 609
27.3 Schlussbemerkungen 611
Kapitel 28 Schnelle DTS-Pakete 613
28.1 Ziele der DTS-Transformationen 615
28.1.1 Das Ziel der schnellen Ausführung 616
28.1.2 Schnelle Entwicklung 616
28.1.3 Selbstdokumentierende Datentransformation 616
28.1.4 Code, der sich leicht warten lässt 617
28.2 Leistungsvergleiche von DTS-Tasks 617
28.2.1 Laden aus einer Textdatei in eine SQL Server-Datenbank 617
28.2.2 Laden von SQL Server 2000 nach SQL Server 2000 619
28.3 Leistungsstatistiken für die Transformationstasks 621
28.3.1 Vergleichen verschiedener Transformationen im Task
"Daten übertragen" 622
28.3.2 Separate und kombinierte Transformationen vergleichen 622
28.3.3 Namen oder Ordinalzahlen in Skripttransformationsspalten verwenden 623
28.3.4 Fetchpuffergröße, Tabellensperre und Größe
für Einfügungsbatch 626
28.3.5 Transformationslogik auf die Quellabfrage verschieben 627
28.3.6 Logik in eine benutzerdefinierte Transformation verschieben 630
28.3.7 Leistung der Tasks "Daten transformieren" und
" Datengesteuerte Abfrage" 631
28.4 Eine Skriptsprache wählen 632
28.5 Die Leistung durch Parallelverarbeitung verbessern 632
28.6 Einfluss der Indizierung auf die Leistung 633
28.7 Aus Leistungsgründen andere Tools in Betracht ziehen 634
28.7.1 Mit bcp von SQL Server in Textdateien exportieren 634
28.7.2 Replikation verwenden 634
28.8 Schlussbemerkungen 634
Kapitel 29 DTS und Meta Data Services 635
29.1 Warum man Meta Data Services mit DTS verwenden sollte 636
29.1.1 Metadaten 637
29.1.2 Der Speicherort Meta Data Services 638
29.2 Der DTS-Browser 639
29.2.1 Die Registerkarte "Durchsuchen" 639
29.2.2 Die Registerkarte "Herkunft" 642
29.2.3 Die Registerkarte "Paket" 644
29.3 Der Meta Data-Browser 645
29.3.1 Informationen über DTS-Objekte und Eigenschaften suchen 646
29.3.2 Nach XML exportieren 646
29.4 Andere Tools von Meta Data Services 647
29.4.1 Die Repository-Datenbank 647
29.4.2 Information Models 648
29.4.3 Das Meta Data Services SDK 649
29.4.4 DWGuide von DWSoft - Metadaten-Tool eines Drittherstellers 649
29.5 DTS für Datenherkunft auf Spaltenebene konfigurieren 650
29.5.1 Optionen für das Scannen von Paketen 651
29.5.2 Die Eigenschaft RepositoryMetadataOptions 652
29.6 DTS für Datenherkunft auf Zeilenebene konfigurieren 653
29.6.1 Optionen für Herkunftsvariablen 653
29.6.2 Die Eigenschaft LineageOptions 655
29.6.3 Die Herkunftsvariablen speichern 656
29.7 Programmgesteuert auf Herkunftsinformationen zugreifen 656
29.8 Schlussbemerkungen 659
Teil VI Die Leistung von DTS erweitern 661
Kapitel 30 Programmieren mit dem DTS-Objektmodell 663
30.1 Objekte und erweiterte Objekte 664
30.2 Die Objekthierarchie der DTS-Pakete 665
30.3 Tasks und benutzerdefinierte Tasks verwenden 670
30.3.1 Einen Task und einen benutzerdefinierten Task referenzieren 671
30.3.2 Einen neuen Task erzeugen 671
30.3.3 Objektnamen und Programmbezeichner für die
benutzerdefinierten Tasks 673
30.4 Auflistungen verwenden 675
30.5 Eigenschaften und die Auflistung Properties 676
30.6 Hierarchie des DTS-Objekts Application 676
30.7 Verbindungen in einem DTS-Paket dokumentieren 679
30.8 Schlussbemerkungen 682
Kapitel 31 Einen benutzerdefinierten Task in Visual Basic erstellen 683
31.1 Wann man einen neuen benutzerdefinierten Task
erzeugen sollte 684
31.2 Erste Schritte 685
31.3 Die Schnittstelle für den benutzerdefinierten Task 687
31.3.1 Die Eigenschaft Name 687
31.3.2 Die Eigenschaft Description 689
31.3.3 Die Auflistung Properties 690
31.3.4 Die Methode Execute 691
31.4 Die Benutzeroberfläche für benutzerdefinierten
Task implementieren 695
31.4.1 Die Methode New 696
31.4.2 Die Methode Edit 697
31.4.3 Die Methode Initialize 699
31.4.4 Die Methode Help 699
31.5 Ereignisse, Fehler und Protokolle 700
31.6 Einen benutzerdefinierten Task registrieren 703
31.7 Einen benutzerdefinierten Task in einem DTS-Paket verwenden 704
31.8 Der Task "Find File" 707
31.9 Der Task "Local Cube" 707
31.10 Schlussbemerkungen 708
Kapitel 32 Eine benutzerdefinierte Transformation mit Visual C++ erstellen 709
32.1 Warum man eine benutzerdefinierte Transformation
erzeugen sollte 710
32.2 Die Datapump-Schnittstellen 711
32.3 Die C++-Entwicklungsumgebung für die benutzerdefinierte Transformation vorbereiten 712
32.4 Eine benutzerdefinierte Transformation erzeugen 714
32.4.1 Das Projekt beginnen 715
32.4.2 Eine Eigenschaft in die benutzerdefinierte
Transformation hinzufügen 716
32.4.3 Code für die Methode PreValidateSchema hinzufügen 718
32.4.4 Code für die Methode ValidateSchema hinzufügen 720
32.4.5 Code für die Methode ProcessPhase hinzufügen 722
32.4.6 Die Fehlerdefinitionen des Projekts hinzufügen 726
32.4.7 Die benutzerdefinierte Transformation registrieren 727
32.5 Schlussbemerkungen 727
Stichwortverzeichnis 729
Teil I Einführung in DTS 27
Kapitel 1 Überblick über DTS 29
1.1 Eine Hochleistungs-Datapump - und eine Menge mehr 30
1.2 Komplexe Datentransformationen mit dem
DTS-Designer erstellen 31
1.2.1 Die Struktur eines DTS-Pakets 32
1.2.2 Verbindungen erstellen 35
1.2.3 Tasks erstellen 36
1.2.4 Den Workflow einrichten 37
1.3 DTS-Pakete speichern und abrufen 38
1.3.1 Speicherort Meta Data Services 39
1.3.2 Speicherort SQL Server 40
1.3.3 Strukturierte Speicherdatei 40
1.3.4 Visual Basic-Datei 40
1.3.5 Paketversionen 41
1.4 Ein DTS-Paket ausführen 41
1.4.1 DTS-Pakete vom DTS-Designer ausführen 41
1.4.2 DTS-Pakete von den Assistenten ausführen 42
1.4.3 DTS-Pakete vom Enterprise Manager ausführen 42
1.4.4 DTS-Pakete aus Visual Basic-Code heraus ausführen 43
1.4.5 DTS-Pakete mit den gespeicherten Systemprozeduren
der OLE-Automatisierung ausführen 43
1.4.6 Ein DTS-Paket als Datenprovider 44
1.4.7 Das Befehlszeilendienstprogramm DTSRun 44
1.4.8 Das Dienstprogramm DTSRun für Windows 47
1.4.9 Aus einem anderen DTS-Paket ausführen 49
1.4.10 Ein DTS-Paket planen 50
1.4.11 Der Ausführungskontext für ein DTS-Paket 51
1.5 Das DTS-Objektmodell zur Programmsteuerung 52
1.5.1 Das DTS-Objektmodell 53
1.5.2 Das DTS-Objektmodell mit dem Task
"Dynamische Eigenschaften" 53
1.5.3 Das DTS-Objektmodell mit der Funktion
"Getrennte Bearbeitung" 55
1.5.4 DTS mit VBScript programmieren 57
1.5.5 DTS mit Visual Basic programmieren 57
1.5.6 DTS mit Visual C++ programmieren 57
1.6 DTS-Vorlagen 58
1.6.1 Vorlagen verwenden 58
1.6.2 Vorlagen erstellen 58
1.7 Assistenten für die schnelle Anwendungsentwicklung 59
1.7.1 Der Assistent zum Kopieren von Datenbanken 59
1.7.2 Der DTS-Import/Export-Assistent 61
1.8 DTS in der Praxis 63
1.8.1 Aktualisieren einer Datenbank von
Microsoft Access zu SQL Server 63
1.8.2 Daten aus mehren Quellen konsolidieren 63
1.8.3 Datamart oder Datawarehouse erstmalig und regelmäßig laden 64
1.8.4 Berichte in Transaktionsverarbeitungssystemen 64
1.8.5 Erstellen einer Schnittstelle zum Web für ein Legacysystem 65
1.8.6 Eine Datenbank archivieren 65
1.8.7 Internet-Nutzungsdaten analysieren 65
1.8.8 Importieren und Exportieren mit XML 67
1.9 Schlussbemerkungen 68
Kapitel 2 Erweiterungen bei DTS in SQL Server 2000 69
2.1 Die Top Ten der neuen Merkmale von DTS 70
2.2 Die neuen DTS-Tasks 71
2.2.1 Task "Dynamische Eigenschaften" 71
2.2.2 FTP-Task (File Transfer Protocol) 71
2.2.3 Task "Paket ausführen" 71
2.2.4 Message Queue-Task 72
2.2.5 Paralleler Datapumptask 72
2.2.6 Analysis Services-Aufbereitungstask 73
2.2.7 Datamining-Vorhersageabfragetask 73
2.2.8 Task "Datenbanken übertragen" 74
2.2.9 Task "In 'master' gespeicherte Prozeduren übertragen" 74
2.2.10 Task "Aufträge übertragen" 75
2.2.11 Task "Benutzernamen übertragen" 75
2.2.12 Task "Fehlermeldungen übertragen" 75
2.3 Erweiterungen des Transformationstasks 75
2.3.1 Mehrere Phasen in den Tasks zur Datentransformation 75
2.3.2 Package Object Browser beim Schreiben von Skripts 77
2.4 Die neuen Datentransformationen 77
2.4.1 Parameter in der Quellabfrage verwenden 78
2.4.2 Neue Fehlerdateioptionen 78
2.4.3 Suchabfragen können jetzt Daten modifizieren 78
2.5 Neue Merkmale in anderen Tasks 79
2.5.1 Verwendung von Eingabeparametern im Task "SQL ausführen" 79
2.5.2 Das Ergebnis des Tasks "SQL ausführen" an Parameter zuweisen 80
2.5.3 Das Ergebnis des Tasks "SQL ausführen" an ein
Recordset zuweisen 80
2.5.4 Package Object Browser beim Schreiben von ActiveX-Skripts 81
2.5.5 Automatisches Generieren einer Formatdatei im Masseneinfügungstask 81
2.6 Andere neue Merkmale in DTS 81
2.6.1 Der Assistent zum Kopieren von Datenbanken 81
2.6.2 Speichern in einer Visual Basic-Datei 82
2.6.3 Werte der globalen Paketvariablen mit DTSRun einstellen 82
2.6.4 DTSRunUI - Eine Windows-Oberfläche für DTSRun 82
2.6.5 Paketvorlagen 83
2.6.6 Getrennte Bearbeitung 83
2.6.7 Deklaration für globale Variablen erzwingen 83
2.6.8 Just-In-Time-Debuggen 84
2.6.9 Cache für Pakete aktivieren 84
2.6.10 Einzelne Schritte im Paket-Designer ausführen 85
2.6.11 DTS-Paketprotokolle 85
2.7 Andere neue Merkmale in SQL Server 2000, die Datentransformationen erweitern 86
2.7.1 Integration mit XML 86
2.7.2 Indizierte Sichten 86
2.7.3 Benutzerdefinierte Funktionen 86
2.8 Schlussbemerkungen 86
Kapitel 3 DTS und der Datenfluss im Unternehmen 87
3.1 Unternehmensdatenstruktur und Datenfluss 89
3.2 Der Motor für Transformationen von Unternehmensdaten 90
3.3 Arten der Datennutzung 91
3.3.1 Transaktionsverarbeitung 92
3.3.2 Geschäftsanalyse 92
3.3.3 Verlauf verwalten 97
3.4 Datenquellen 97
3.4.1 Systeme der Online-Transaktionsverarbeitung (OLTP) 97
3.4.2 Internet-Nutzungsdaten 97
3.4.3 Daten von außerhalb der Organisation 98
3.4.4 Das Datawarehouse 98
3.4.5 Ergebnisse von Geschäftsanalysesystemen 98
3.5 Metadaten 99
3.6 Arten der Datenspeicherung 100
3.6.1 Textdateien 101
3.6.2 XML 101
3.6.3 Tabellenblätter 103
3.6.4 Relationale Datenbank-Managementsysteme 103
3.6.5 Mehrdimensionale Datenbank-Managementsysteme (OLAP) 104
3.7 Schlussbemerkungen 106
Kapitel 4 Mit DTS Daten in einen Datamart verschieben 107
4.1 Mehrdimensionale Datenmodellierung 108
4.1.1 Unterschiede zwischen relationaler und mehrdimensionaler Modellierung 110
4.2 Faktentabelle 112
4.2.1 Measures auswählen 113
4.2.2 Die Ebene der Zusammenfassung für die Measures auswählen 114
4.3 Dimensionstabellen 115
4.3.1 Der Primärschlüssel in einer Dimensionstabelle 116
4.3.2 Ebenen der Dimensionshierarchie 116
4.3.3 Attribute der Dimension 117
4.3.4 Die Zeitdimension 118
4.3.5 Untergeordnete Dimensionsschlüssel 118
4.4 Das Sternschema laden 119
4.4.1 Daten in einen Vorbereitungsbereich laden 120
4.4.2 Die Dimensionstabellen laden 121
4.4.3 Die untergeordneten Dimensionsschlüssel aktualisieren 123
4.4.4 Die Faktentabelle laden 123
4.4.5 Die Daten verwenden 125
4.5 Aktualisierungen an Dimensionstabellen vermeiden 125
4.6 Schlussbemerkungen 130
Teil II DTS-Verbindungen und Transformationstasks 131
Kapitel 5 DTS-Verbindungen 133
5.1 DTS-Verbindungen erstellen 135
5.2 Verbindungseigenschaften 136
5.2.1 Eigenschaften, die eine DTS-Verbindung identifizieren 137
5.2.2 Eigenschaften, die den Zugriff auf die Datenquelle bestimmen 140
5.2.3 Andere Eigenschaften 144
5.3 Verbindungen für andere OLE DB-Provider erstellen 146
5.3.1 Der SQL Server OLE DB-Provider 146
5.3.2 Textdateiverbindungen 148
5.3.3 Der OLE DB-Provider für OLAP Services 151
5.3.4 Andere OLE DB-Provider 152
5.4 Datenverbindungen dynamisch modifizieren 154
5.5 Leistungsprobleme bei DTS-Verbindungen 155
5.6 Schlussbemerkungen 156
Kapitel 6 Der Task "Daten transformieren" 157
6.1 Wann man den Task "Daten transformieren" verwendet 158
6.2 Einen neuen Task "Daten transformieren" erstellen 160
6.2.1 Einen Task "Daten transformieren" mit dem
DTS-Designer erstellen 160
6.2.2 Einen Task "Daten transformieren" mit dem
DTS-Import/Export-Assistenten erstellen 161
6.2.3 Einen Task "Daten transformieren" per Code erstellen 161
6.3 Beschreibung und Name des Tasks 162
6.4 Die Quelle eines Tasks "Daten transformieren" 163
6.4.1 Textdateiquelle 164
6.4.2 Tabelle, Sicht oder Abfrage bei einer
relationalen Datenbankquelle 164
6.4.3 MDX-Abfrage bei einem mehrdimensionalen Quellcube 166
6.4.4 XML als Quelle verwenden 167
6.4.5 Parameter in einer Quellabfrage 167
6.4.6 Eigenschaften einer DataPumpTask-Quelle 169
6.5 Das Ziel eines Tasks "Daten transformieren" 169
6.5.1 Eine neue Zieltabelle erstellen 169
6.5.2 Textdateiziel 170
6.5.3 Eigenschaften eines DataPumpTask-Ziels 171
6.6 Quellspalten zu Zielspalten zuordnen 172
6.6.1 Transformationsflags 177
6.6.2 Eine Transformation testen 179
6.6.3 Die Auflistungen, die eine Transformation implementieren 180
6.6.4 Andere Eigenschaften einer Transformation 181
6.7 Die Transformationstypen 181
6.7.1 Datums-/Uhrzeit-Zeichenfolgen-Transformation 181
6.7.2 Zeichenfolgen in Großbuchstaben, Zeichenfolgen
in Kleinbuchstaben und Spalten kopieren 183
6.7.3 Teilzeichenfolge und Zeichenfolge kürzen 184
6.7.4 Datei lesen 184
6.7.5 Datei schreiben 185
6.7.6 ActiveX-Skript 186
6.7.7 Benutzerdefinierte Transformation 187
6.8 Andere Eigenschaften des Tasks "Daten transformieren" 187
6.8.1 Eigenschaften der Fehlerbehandlung 187
6.8.2 Eigenschaften der Datenverschiebung 190
6.8.3 Optionen für die Leistungsverbesserung bei SQL Server-Zielen 191
6.9 Spalteneigenschaften 193
6.10 Einen Task "Daten transformieren" in Visual Basic erzeugen 195
6.11 Transformationen per Code erstellen 199
6.11.1 Einen Transformationstyp per Code wählen 199
6.11.2 Die Transformation und ihre Spalten erzeugen 201
6.11.3 Spalten-Kopieren-, Großbuchstaben- und Kleinbuchstabentransformationen 203
6.11.4 Zeichenfolge-Kürzen- und Teilzeichenfolge-Transformationen 203
6.11.5 Datei-Lesen- und Datei-Schreiben-Transformationen 204
6.11.6 Datums-/Uhrzeit-Zeichenfolgen-Transformationen 205
6.11.7 ActiveX-Transformationen 206
6.11.8 Eine Beispielanwendung mit allen Transformationen 207
6.12 Den Task "Daten transformieren" als freistehendes
Symbol verwenden 207
6.13 Schlussbemerkungen 211
Kapitel 7 ActiveX-Skripts für einen Task "Daten transformieren" 213
7.1 Wann man ActiveX-Skripttransformationen verwendet 215
7.1.1 Ein Task oder mehrere Tasks? 215
7.1.2 Die Vielfalt der Transformationstypen 216
7.2 Grundlagen von ActiveX-Skripttransformationen 216
7.3 Die Entwicklungsumgebung für
ActiveX-Skripttransformationen 218
7.4 Eine Skriptsprache wählen 222
7.5 Transformationsstatus festlegen 222
7.5.1 DTSTransformStat_OK 222
7.5.2 DTSTransformStat_SkipRow 223
7.5.3 DTSTransformStat_SkipFetch 223
7.5.4 DTSTransformStat_SkipInsert 223
7.5.5 DTSTransformStat_DestDataNotSet 224
7.5.6 DTSTransformStat_Info 224
7.5.7 DTSTransformStat_OKInfo 224
7.5.8 DTSTransformStat_SkipRowInfo 224
7.5.9 DTSTransformStat_Error 225
7.5.10 DTSTransformStat_ErrorSkipRow 225
7.5.11 DTSTransformStat_ExceptionRow 225
7.5.12 DTSTransformStat_AbortPump 226
7.5.13 DTSTransformStat_NoMoreRows 226
7.6 Lokale Variablen erzeugen und verwenden 226
7.6.1 Variablentypen 226
7.6.2 Objektvariablen 228
7.6.3 Variablendeklaration erzwingen (Option Explicit) 228
7.7 Globale Variablen 229
7.7.1 Globale Variablen in der Benutzeroberfläche erzeugen 229
7.7.2 Globale Variablen in einem ActiveX-Skript erzeugen 231
7.7.3 Groß-/Kleinschreibung bei globalen Variablen 232
7.7.4 Die Methoden Lock und Unlock des Objekts GlobalVariable2 233
7.8 Suchtabellen 233
7.8.1 Suchtabellen in der Benutzeroberfläche erzeugen 234
7.8.2 Suchtabellenobjekte in einem ActiveX-Skript erzeugen 235
7.8.3 Eine Suchabfrage in einem ActiveX-Skript verwenden 236
7.8.4 Daten mit einer Suchabfrage modifizieren 236
7.9 ActiveX-Skripts verwenden oder Quellabfrage modifizieren 237
7.9.1 Einfache Zuweisung von Spalten 237
7.9.2 Zeichenfolgenmanipulation 238
7.9.3 Unbekannte Werte behandeln 238
7.9.4 Nach einem unbekannten Wert suchen 239
7.9.5 Mit einer äußeren Verknüpfung Datenverlusten vorbeugen 240
7.9.6 Daten aus zwei Quellen durch eine vollständige
äußere Verknüpfung mischen 241
7.9.7 Informationen aus einem Datensatz in mehrere
Datensätze trennen 242
7.9.8 Informationen aus mehreren Datensätzen zu einem
Datensatz kombinieren 246
7.10 Schlussbemerkungen 248
Kapitel 8 Der Task "Datengesteuerte Abfrage" 249
8.1 Wann man den Task "Datengesteuerte Abfrage" verwendet 251
8.2 Einen Task "Datengesteuerte Abfrage" erstellen 252
8.3 Transformationsstatuskonstanten für den Task
"Datengesteuerte Abfrage" 255
8.4 Beispiel für eine datengesteuerte Abfrage 256
8.5 Einen Task "Datengesteuerte Abfrage" in Visual Basic erstellen 259
8.6 Schlussbemerkungen 262
Kapitel 9 Multiphasendatapump 263
9.1 Die Multiphasendatapump aktivieren 264
9.2 Programmfluss mit mehreren Phasen 267
9.3 Die Phasen verwenden 269
9.3.1 Phase "Vor Quelldaten" 272
9.3.2 Phase "Zeilentransformation" 273
9.3.3 Phase "Nach Zeilentransformation" 273
9.3.4 Phase "Bei Transformationsfehler" 274
9.3.5 Phase "Bei Einfügungsfehler" 274
9.3.6 Phase "Bei erfolgreicher Einfügung" 275
9.3.7 Phase "Batch beendet" 276
9.3.8 Phase "Nach Quelldaten" 277
9.3.9 Phase "Pump beendet" 278
9.4 Mit Visual C++ ein COM-Objekt erzeugen,
um die Phasen zu programmieren 279
9.5 Eine Multiphasendatapump per Code erzeugen 279
9.5.1 Die Eigenschaft TransformPhases 279
9.5.2 Die Einstiegsfunktionen einrichten 280
9.6 Schlussbemerkung 281
Kapitel 10 Der parallele Datapumptask 283
10.1 Hierarchische Rowsets 284
10.2 Wann man den parallelen Datapumptask verwendet 287
10.3 Die Auflistungen und Eigenschaften des
parallelen Datapumptasks 288
10.4 Die Transformationsmodi 288
10.4.1 Hierarchischer Modus 289
10.4.2 Vereinfachter Modus 289
10.4.3 Datengesteuerter Abfragemodus 289
10.4.4 Die Eigenschaft TransformationSetOptions 290
10.5 Einen parallelen Datapumptask in Visual Basic erstellen 290
10.6 Eine Benutzeroberfläche für den parallelen Datapumptask 293
10.7 Schlussbemerkungen 299
Teil III Andere Tasks zum Verschieben und
Manipulieren von Daten 301
Kapitel 11 Der Masseneinfügungstask 303
11.1 Wann man den Masseneinfügungstask gegenüber
dem Task "Daten transformieren" bevorzugt 304
11.2 Einen Masseneinfügungstask erzeugen 306
11.3 Das Ziel für einen Masseneinfügungstask 306
11.4 Die Quelle für eine Masseneinfügung 307
11.4.1 Textdateien mit Feldern fester Länge 307
11.4.2 Textdateien mit Trennzeichen 307
11.5 Formatdateien 308
11.5.1 Struktur einer Formatdatei 309
11.5.2 Eine Formatdatei generieren 310
11.6 Unterschiede zwischen Quelle und Ziel beilegen 313
11.6.1 Zusätzliche Felder in der Datenzieltabelle 313
11.6.2 Felder beim Verschieben von der Quelle zum Ziel
neu anordnen 315
11.6.3 Zusätzliche Felder in der Quelltextdatei 316
11.7 Andere Eigenschaften des Masseneinfügungstasks 317
11.7.1 CHECK-Einschränkungen 318
11.7.2 NULL-Werte beibehalten 319
11.7.3 IDENTITY_INSERT aktivieren 320
11.7.4 Tabellensperre 320
11.7.5 Sortierte Daten 321
11.7.6 Codepage 322
11.7.7 Typ der Datendatei 322
11.7.8 Größe für Einfügungsbatch 323
11.7.9 Maximale Fehlerzahl 323
11.7.10 Nur ausgewählte Zeilen kopieren 324
11.8 Einen Masseneinfügungstask in Visual Basic erzeugen 324
11.9 Schlussbemerkungen 327
Kapitel 12 Der Task "SQL ausführen" 329
12.1 Wann man den Task "SQL ausführen" verwendet 330
12.2 Den Task "SQL ausführen" erzeugen 330
12.3 Abfragen für verschiedene Datenbanksysteme schreiben 332
12.4 Eingabeparameter im Task "SQL ausführen" 333
12.5 Ausgabeparameter für Zeilenwerte 335
12.6 Ausgabeparameter für ein Rowset 337
12.7 SQL-Anweisungen dynamisch modifizieren 339
12.8 Mit dem Task "SQL ausführen" ein DTS-Paket von einem Remoteserver ausführen 340
12.9 Einen Task "SQL ausführen" in Visual Basic erstellen 344
12.10 Schlussbemerkungen 347
Kapitel 13 Der Task "SQL Server-Objekte kopieren" 349
13.1 Wann man den Task "SQL Server-Objekte kopieren"
verwendet 350
13.2 Quelle und Ziel 351
13.3 Kopieroptionen 352
13.3.1 Zielobjekte erstellen 352
13.3.2 Daten kopieren 354
13.3.3 Sortierung verwenden 354
13.3.4 Alle Objekte kopieren 355
13.3.5 Standardoptionen verwenden 356
13.3.6 Verzeichnis für Skriptdatei 357
13.4 Andere Eigenschaften des Tasks
"SQL Server-Objekte kopieren" 357
13.5 Objektauswahl mit Methoden manipulieren 358
13.6 Einen Task "SQL Server-Objekte kopieren"
in Visual Basic erstellen 361
13.7 Schlussbemerkungen 363
Kapitel 14 Der FTP-Task (File Transfer Protocol) 365
14.1 Wann man den FTP-Task verwendet 366
14.2 Den Task erstellen und seine Eigenschaften festlegen 366
14.3 Den Task in Visual Basic erstellen 369
14.4 Schlussbemerkungen 371
Kapitel 15 Der Task "Datenbanken übertragen" und andere Tasks
zum Übertragen von Objekten 373
15.1 Wann man die Tasks zum Übertragen verwendet 374
15.2 Die Tasks erstellen und ihre Eigenschaften festlegen 375
15.2.1 Quelle und Ziel für die Tasks 375
15.3 Der Task "Datenbanken übertragen" 375
15.4 Der Task "Benutzernamen übertragen" 377
15.5 Der Task "Aufträge übertragen" 378
15.6 Der Task "In 'master' gespeicherte Prozeduren übertragen" 379
15.7 Der Task "Fehlermeldungen übertragen" 380
15.8 Die Tasks in Visual Basic erzeugen 381
15.9 Schlussbemerkungen 383
Teil IV Tasks zur Steuerung 385
Kapitel 16 Skripts für einen ActiveX-Skripttask schreiben 387
16.1 Wann man einen ActiveX-Skripttask verwendet 388
16.2 Einen ActiveX-Skripttask erstellen 389
16.3 DTS-Eigenschaften dynamisch modifizieren 390
16.3.1 Ein Paket referenzieren 390
16.3.2 Eine Verbindung referenzieren 391
16.3.3 Eine globale Variable referenzieren 391
16.3.4 Schritte, Tasks und benutzerdefinierte Tasks referenzieren 392
16.3.5 Auflistungen und Objekte in einem Task
"Daten transformieren" referenzieren 393
16.3.6 Das DTS-Application-Objekt referenzieren 393
16.3.7 Objekte und Eigenschaften, die man nicht direkt
referenzieren kann 393
16.3.8 Ein Dienstprogramm erstellen, um die Anzahl der
verarbeiteten Zeilen zu beschränken 394
16.4 Eine Schleife in einem DTS-Paket programmieren 395
16.5 ADO-Recordsets verwenden 398
16.6 Dateien und Verzeichnisse manipulieren 399
16.7 Datensätze in das Taskprotokoll schreiben 400
16.8 Visual Basic-Code nach VBScript konvertieren 401
16.8.1 Variablendeklaration 402
16.8.2 CreateObject für Objektvariablen verwenden 402
16.8.3 For-Next-Schleifen 403
16.8.4 Dateizugriff 403
16.8.5 GoTo und Zeilenmarken 403
16.8.6 Fehlerbehandlung 403
16.8.7 API-Aufrufe 404
16.8.8 Code als Einstiegsfunktion verwenden 404
16.8.9 VBScript-Code in Visual Basic verwenden 404
16.9 Einen ActiveX-Skripttask in Visual Basic erstellen 404
16.10 Schlussbemerkungen 406
Kapitel 17 Der Task "Dynamische Eigenschaften" 407
17.1 Wann man den Task "Dynamische Eigenschaften" verwendet 408
17.2 Den Task erstellen und seine Eigenschaften zuweisen 409
17.2.1 Eine neue Zuweisung vornehmen 409
17.2.2 Objekt und Eigenschaft für die Zuweisung auswählen 410
17.2.3 Datenquelle für die Zuweisung auswählen 412
17.3 Einen Task "Dynamische Eigenschaften" in
Visual Basic erstellen 417
17.4 Schlussbemerkungen 418
Kapitel 18 Der Task "Paket ausführen" 419
18.1 Wann man den Task "Paket ausführen" verwendet 420
18.2 Den Task erstellen und seine Eigenschaften festlegen 421
18.3 Werte der globalen Variablen im untergeordneten
Paket festlegen 423
18.4 Die Eigenschaft NestedExecutionLevel des Pakets 426
18.5 Ein DTS-Dienstprogramm erstellen und aufrufen 426
18.6 Den Task in Visual Basic erstellen 430
18.7 Schlussbemerkungen 432
Kapitel 19 Der Message Queue-Task 433
19.1 Wann man den Message Queue-Task verwendet 434
19.2 Den Task erstellen und seine Eigenschaften festlegen 435
19.2.1 Den Warteschlangenpfad festlegen 436
19.2.2 Nachrichten senden 436
19.2.3 Nachrichten empfangen 438
19.3 Den Task in Visual Basic erzeugen 443
19.4 Schlussbemerkungen 445
Kapitel 20 Der Task "Mail senden" 447
20.1 Wann man den Task "Mail senden" verwendet 448
20.2 Den Task erstellen und seine Eigenschaften festlegen 449
20.3 Die Methoden des Tasks "Mail senden" 450
20.4 Den Task in Visual Basic erstellen 450
20.5 Schlussbemerkungen 452
Kapitel 21 Der Analysis Services-Tasks 453
21.1 Wann man die Analysis Services-Tasks verwendet 454
21.2 Den Analysis Services-Aufbereitungstask verwenden 455
21.3 Datamining-Vorhersageabfragetask 460
21.4 Den Analysis Services-Aufbereitungstask in
Visual Basic erzeugen 463
21.5 Den Datamining-Vorhersageabfragetask in
Visual Basic erstellen 464
21.6 Schlussbemerkungen 466
Kapitel 22 Der Task "Prozess ausführen" 467
22.1 Wann man den Task "Prozess ausführen" verwendet 468
22.1.1 Massenkopieren von SQL Server in eine Textdatei 468
22.1.2 Eine Batchdatei ausführen, die osql- und/oder
bcp-Befehle enthält 468
22.1.3 Andere Anwendungen zur Verschiebung oder Änderung
von Daten ausführen 469
22.1.4 DTSRun ausführen 470
22.2 Den Task erzeugen und seine Eigenschaften festlegen 470
22.2.1 Die Eigenschaften des Tasks "Prozess ausführen" 470
22.2.2 Die Methode GetExpandedProcessCommandLine des
Objekts CreateProcess2 471
22.3 Den Task in Visual Basic erstellen 471
22.4 Schlussbemerkungen 473
Teil V DTS-Pakete und Schritte 475
Kapitel 23 Das DTS-Paket und seine Eigenschaften 477
23.1 DTS-Pakete identifizieren 478
23.2 DTS-Pakete speichern 480
23.2.1 DTS-Pakete nach SQL Server speichern 481
23.2.2 DTS-Pakete in Meta Data Services speichern 484
23.2.3 DTS-Pakete im Dateisystem speichern 485
23.2.4 DTS-Pakete als Visual Basic-Dateien speichern 486
23.3 DTS-Pakete verschlüsseln 487
23.4 Informationen über Pakete abrufen 488
23.4.1 In SQL Server gespeicherte Pakete 488
23.4.2 In Meta Data Services gespeicherte Pakete 492
23.4.3 In Dateien gespeicherte Pakete 493
23.5 Paketprotokolle und Fehlerdateien 494
23.5.1 Protokollieren in SQL Server 497
23.6 DTS-Pakete als Datenquelle 503
23.6.1 Der Datenprovider DTSPackageDSO 503
23.6.2 Ein DTS-Paket als Datenquelle einrichten 503
23.6.3 Ein DTS-Paket mit OPENROWSET abfragen 504
23.6.4 Ein DTS-Paket als Verbindungsserver registrieren 506
23.6.5 XML von einem Task "Daten transformieren" über
den Provider DTSPackageDSO zurückgeben 507
23.7 Andere Eigenschaften und Methoden von DTS-Paketobjekten 508
23.7.1 CreationDate, CreatorComputerName und CreatorName 509
23.7.2 PackageType 509
23.7.3 Parent 509
23.7.4 UseOLEDBServiceComponents 510
23.7.5 Die Methode GetDTSVersionInfo 510
23.8 Schlussbemerkungen 510
Kapitel 24 Schritte und Rangfolgeneinschränkungen 511
24.1 Schritte, Tasks und das DTS-Paket 512
24.2 Rangfolgeneinschränkungen 513
24.2.1 Die drei Arten der Rangfolge 514
24.2.2 Rangfolgeneinschränkungen im DTS-Designer erzeugen 515
24.2.3 Rangfolgeneinschränkungen per Programm erzeugen 517
24.3 Der Ausführungsstatus des Schrittes 519
24.4 Threads und Priorität der Ausführung 519
24.4.1 Ausführungsparameter für Threads auf Paketebene 519
24.4.2 Ausführungsparameter für Threads auf Schrittebene 521
24.5 Transaktionen in DTS-Paketen 524
24.5.1 Transaktionseigenschaften auf Paketebene 524
24.5.2 Transaktionseinstellungen für die Schritte 527
24.5.3 Teilnahme an Transaktionen durch Verbindungen und Tasks 529
24.5.4 Eine Transaktion mit nacheinander ausgeführten Schritten 530
24.5.5 Eine Transaktion mit parallel ausgeführten Schritten 533
24.5.6 Transaktionen über mehrere DTS-Pakete 536
24.6 Workflow-ActiveX-Skripts 537
24.6.1 Rückgabewerte von Skripts 539
24.6.2 Skript-Ergebnisse für Schleifenkonstruktionen nutzen 539
24.6.3 Schritteigenschaften für das Workflowskript 540
24.7 Andere Eigenschaften des Step-Objekts 540
24.7.1 StartTime, FinishTime und ExecutionTime 540
24.7.2 Description 541
24.7.3 Parent 541
24.8 Einen Schritt mit Visual Basic erstellen 541
24.9 Schlussbemerkungen 542
Kapitel 25 Schnelle Entwicklung mit dem Assistenten zum Kopieren
von Datenbanken und dem DTS-Import-/Export-Assistenten 543
25.1 Zwei Assistenten mit drei Ebenen der Granularität 544
25.1.1 Datenbanken mit dem Assistenten zum Kopieren
von Datenbanken übertragen 545
25.1.2 SQL Server-Objekte mit dem DTS-Import/Export-Assistenten übertragen 545
25.1.3 Daten mit dem DTS-Import/Export-Assistenten übertragen 546
25.2 Die Assistenten aufrufen 547
25.2.1 Assistenten vom Enterprise Manager aufrufen 547
25.2.2 Assistenten von der Befehlszeile aufrufen 548
25.2.3 Assistenten aus einem Programm aufrufen 549
25.3 Der Assistent zum Kopieren von Datenbanken 551
25.3.1 Quelle und Ziel auswählen 551
25.3.2 Die Datenbanken und Dateistandorte wählen 552
25.3.3 Andere zu übertragende Objekte wählen 554
25.3.4 Das vom Assistenten zum Kopieren von Datenbanken
erzeugte DTS-Paket 554
25.4 Verbindungen mit dem DTS-Import/Export-Assistenten
erstellen 556
25.5 SQL Server-Objekte übertragen 557
25.6 Datentransformationen einrichten 558
25.6.1 Eine Abfrage verwenden, um die zu übertragenden
Daten zu spezifizieren 558
25.6.2 Tabelle(n) und Sicht(en) aus der Quelldatenbank kopieren 560
25.6.3 Die Zieltabellen 561
25.6.4 Die Datentransformationen 563
25.7 Das Paket ausführen, planen, speichern und replizieren 565
25.7.1 Ein DTS-Paket für die Replikation erzeugen 566
25.7.2 Ein DTS-Paket für die spätere Ausführung planen 567
25.7.3 Ein DTS-Paket speichern 568
25.8 Den DTS-Import/Export-Assistenten fertig stellen 568
25.9 Schlussbemerkungen 568
Kapitel 26 Pakete mit Visual Basic und gespeicherten Prozeduren verwalten 571
26.1 Mit DTS-Paketen in Visual Basic arbeiten 572
26.1.1 Installationsvoraussetzungen 572
26.1.2 Ein Paket in Visual Basic speichern 573
26.1.3 Die Entwicklungsumgebung von Visual Basic einrichten 575
26.2 Die Struktur der von Visual Basic generierten
DTS-Codemodule 577
26.2.1 Headerinformationen 577
26.2.2 Deklaration der öffentlichen Variablen 578
26.2.3 Die Funktion Main 578
26.2.4 Funktionen zum Erzeugen der Tasks 582
26.3 Ein Paket aus Visual Basic heraus ausführen 583
26.3.1 Pakete laden und speichern 583
26.3.2 Ereignisse behandeln 584
26.3.3 Fehler behandeln 586
26.3.4 Eigenschaften dynamisch modifizieren 588
26.3.5 Eine Schleife in der Datentransformation implementieren 588
26.4 Ein Paket aus Visual Basic unter Verwendung
von SQL Namespace ausführen 589
26.5 Pakete und gespeicherte Systemprozeduren der OLE-Automatisierung 592
26.5.1 Die Prozeduren sp_OACreate und sp_OADestroy 592
26.5.2 Die Prozedur sp_OAMethod 593
26.5.3 Die Prozeduren sp_OAGetProperty und sp_OASetProperty 594
26.5.4 Die Prozedur sp_OAGetErrorInfo 595
26.6 Ein Paket mit gespeicherten Prozeduren ausführen 596
26.7 Schlussbemerkungen 599
Kapitel 27 Fehler in einem Paket und seinen Transformationen 601
27.1 Inkorrekte Daten behandeln 602
27.1.1 Potenzielle Fehler in den Daten analysieren 602
27.1.2 Fehler auslösen 603
27.1.3 Fehler korrigieren 605
27.1.4 Fehlerinformationen speichern 605
27.1.5 Transaktionskonsistenz aufrecht erhalten 606
27.1.6 Administratoren über Fehler informieren 606
27.2 ActiveX-Skripts debuggen 606
27.2.1 Mit dem Skriptdebugger arbeiten 609
27.2.2 Den Debugger verlassen ohne den Enterprise Manager
zu beenden 609
27.3 Schlussbemerkungen 611
Kapitel 28 Schnelle DTS-Pakete 613
28.1 Ziele der DTS-Transformationen 615
28.1.1 Das Ziel der schnellen Ausführung 616
28.1.2 Schnelle Entwicklung 616
28.1.3 Selbstdokumentierende Datentransformation 616
28.1.4 Code, der sich leicht warten lässt 617
28.2 Leistungsvergleiche von DTS-Tasks 617
28.2.1 Laden aus einer Textdatei in eine SQL Server-Datenbank 617
28.2.2 Laden von SQL Server 2000 nach SQL Server 2000 619
28.3 Leistungsstatistiken für die Transformationstasks 621
28.3.1 Vergleichen verschiedener Transformationen im Task
"Daten übertragen" 622
28.3.2 Separate und kombinierte Transformationen vergleichen 622
28.3.3 Namen oder Ordinalzahlen in Skripttransformationsspalten verwenden 623
28.3.4 Fetchpuffergröße, Tabellensperre und Größe
für Einfügungsbatch 626
28.3.5 Transformationslogik auf die Quellabfrage verschieben 627
28.3.6 Logik in eine benutzerdefinierte Transformation verschieben 630
28.3.7 Leistung der Tasks "Daten transformieren" und
" Datengesteuerte Abfrage" 631
28.4 Eine Skriptsprache wählen 632
28.5 Die Leistung durch Parallelverarbeitung verbessern 632
28.6 Einfluss der Indizierung auf die Leistung 633
28.7 Aus Leistungsgründen andere Tools in Betracht ziehen 634
28.7.1 Mit bcp von SQL Server in Textdateien exportieren 634
28.7.2 Replikation verwenden 634
28.8 Schlussbemerkungen 634
Kapitel 29 DTS und Meta Data Services 635
29.1 Warum man Meta Data Services mit DTS verwenden sollte 636
29.1.1 Metadaten 637
29.1.2 Der Speicherort Meta Data Services 638
29.2 Der DTS-Browser 639
29.2.1 Die Registerkarte "Durchsuchen" 639
29.2.2 Die Registerkarte "Herkunft" 642
29.2.3 Die Registerkarte "Paket" 644
29.3 Der Meta Data-Browser 645
29.3.1 Informationen über DTS-Objekte und Eigenschaften suchen 646
29.3.2 Nach XML exportieren 646
29.4 Andere Tools von Meta Data Services 647
29.4.1 Die Repository-Datenbank 647
29.4.2 Information Models 648
29.4.3 Das Meta Data Services SDK 649
29.4.4 DWGuide von DWSoft - Metadaten-Tool eines Drittherstellers 649
29.5 DTS für Datenherkunft auf Spaltenebene konfigurieren 650
29.5.1 Optionen für das Scannen von Paketen 651
29.5.2 Die Eigenschaft RepositoryMetadataOptions 652
29.6 DTS für Datenherkunft auf Zeilenebene konfigurieren 653
29.6.1 Optionen für Herkunftsvariablen 653
29.6.2 Die Eigenschaft LineageOptions 655
29.6.3 Die Herkunftsvariablen speichern 656
29.7 Programmgesteuert auf Herkunftsinformationen zugreifen 656
29.8 Schlussbemerkungen 659
Teil VI Die Leistung von DTS erweitern 661
Kapitel 30 Programmieren mit dem DTS-Objektmodell 663
30.1 Objekte und erweiterte Objekte 664
30.2 Die Objekthierarchie der DTS-Pakete 665
30.3 Tasks und benutzerdefinierte Tasks verwenden 670
30.3.1 Einen Task und einen benutzerdefinierten Task referenzieren 671
30.3.2 Einen neuen Task erzeugen 671
30.3.3 Objektnamen und Programmbezeichner für die
benutzerdefinierten Tasks 673
30.4 Auflistungen verwenden 675
30.5 Eigenschaften und die Auflistung Properties 676
30.6 Hierarchie des DTS-Objekts Application 676
30.7 Verbindungen in einem DTS-Paket dokumentieren 679
30.8 Schlussbemerkungen 682
Kapitel 31 Einen benutzerdefinierten Task in Visual Basic erstellen 683
31.1 Wann man einen neuen benutzerdefinierten Task
erzeugen sollte 684
31.2 Erste Schritte 685
31.3 Die Schnittstelle für den benutzerdefinierten Task 687
31.3.1 Die Eigenschaft Name 687
31.3.2 Die Eigenschaft Description 689
31.3.3 Die Auflistung Properties 690
31.3.4 Die Methode Execute 691
31.4 Die Benutzeroberfläche für benutzerdefinierten
Task implementieren 695
31.4.1 Die Methode New 696
31.4.2 Die Methode Edit 697
31.4.3 Die Methode Initialize 699
31.4.4 Die Methode Help 699
31.5 Ereignisse, Fehler und Protokolle 700
31.6 Einen benutzerdefinierten Task registrieren 703
31.7 Einen benutzerdefinierten Task in einem DTS-Paket verwenden 704
31.8 Der Task "Find File" 707
31.9 Der Task "Local Cube" 707
31.10 Schlussbemerkungen 708
Kapitel 32 Eine benutzerdefinierte Transformation mit Visual C++ erstellen 709
32.1 Warum man eine benutzerdefinierte Transformation
erzeugen sollte 710
32.2 Die Datapump-Schnittstellen 711
32.3 Die C++-Entwicklungsumgebung für die benutzerdefinierte Transformation vorbereiten 712
32.4 Eine benutzerdefinierte Transformation erzeugen 714
32.4.1 Das Projekt beginnen 715
32.4.2 Eine Eigenschaft in die benutzerdefinierte
Transformation hinzufügen 716
32.4.3 Code für die Methode PreValidateSchema hinzufügen 718
32.4.4 Code für die Methode ValidateSchema hinzufügen 720
32.4.5 Code für die Methode ProcessPhase hinzufügen 722
32.4.6 Die Fehlerdefinitionen des Projekts hinzufügen 726
32.4.7 Die benutzerdefinierte Transformation registrieren 727
32.5 Schlussbemerkungen 727
Stichwortverzeichnis 729
Einleitung 25
Teil I Einführung in DTS 27
Kapitel 1 Überblick über DTS 29
1.1 Eine Hochleistungs-Datapump - und eine Menge mehr 30
1.2 Komplexe Datentransformationen mit dem
DTS-Designer erstellen 31
1.2.1 Die Struktur eines DTS-Pakets 32
1.2.2 Verbindungen erstellen 35
1.2.3 Tasks erstellen 36
1.2.4 Den Workflow einrichten 37
1.3 DTS-Pakete speichern und abrufen 38
1.3.1 Speicherort Meta Data Services 39
1.3.2 Speicherort SQL Server 40
1.3.3 Strukturierte Speicherdatei 40
1.3.4 Visual Basic-Datei 40
1.3.5 Paketversionen 41
1.4 Ein DTS-Paket ausführen 41
1.4.1 DTS-Pakete vom DTS-Designer ausführen 41
1.4.2 DTS-Pakete von den Assistenten ausführen 42
1.4.3 DTS-Pakete vom Enterprise Manager ausführen 42
1.4.4 DTS-Pakete aus Visual Basic-Code heraus ausführen 43
1.4.5 DTS-Pakete mit den gespeicherten Systemprozeduren
der OLE-Automatisierung ausführen 43
1.4.6 Ein DTS-Paket als Datenprovider 44
1.4.7 Das Befehlszeilendienstprogramm DTSRun 44
1.4.8 Das Dienstprogramm DTSRun für Windows 47
1.4.9 Aus einem anderen DTS-Paket ausführen 49
1.4.10 Ein DTS-Paket planen 50
1.4.11 Der Ausführungskontext für ein DTS-Paket 51
1.5 Das DTS-Objektmodell zur Programmsteuerung 52
1.5.1 Das DTS-Objektmodell 53
1.5.2 Das DTS-Objektmodell mit dem Task
"Dynamische Eigenschaften" 53
1.5.3 Das DTS-Objektmodell mit der Funktion
"Getrennte Bearbeitung" 55
1.5.4 DTS mit VBScript programmieren 57
1.5.5 DTS mit Visual Basic programmieren 57
1.5.6 DTS mit Visual C++ programmieren 57
1.6 DTS-Vorlagen 58
1.6.1 Vorlagen verwenden 58
1.6.2 Vorlagen erstellen 58
1.7 Assistenten für die schnelle Anwendungsentwicklung 59
1.7.1 Der Assistent zum Kopieren von Datenbanken 59
1.7.2 Der DTS-Import/Export-Assistent 61
1.8 DTS in der Praxis 63
1.8.1 Aktualisieren einer Datenbank von
Microsoft Access zu SQL Server 63
1.8.2 Daten aus mehren Quellen konsolidieren 63
1.8.3 Datamart oder Datawarehouse erstmalig und regelmäßig laden 64
1.8.4 Berichte in Transaktionsverarbeitungssystemen 64
1.8.5 Erstellen einer Schnittstelle zum Web für ein Legacysystem 65
1.8.6 Eine Datenbank archivieren 65
1.8.7 Internet-Nutzungsdaten analysieren 65
1.8.8 Importieren und Exportieren mit XML 67
1.9 Schlussbemerkungen 68
Kapitel 2 Erweiterungen bei DTS in SQL Server 2000 69
2.1 Die Top Ten der neuen Merkmale von DTS 70
2.2 Die neuen DTS-Tasks 71
2.2.1 Task "Dynamische Eigenschaften" 71
2.2.2 FTP-Task (File Transfer Protocol) 71
2.2.3 Task "Paket ausführen" 71
2.2.4 Message Queue-Task 72
2.2.5 Paralleler Datapumptask 72
2.2.6 Analysis Services-Aufbereitungstask 73
2.2.7 Datamining-Vorhersageabfragetask 73
2.2.8 Task "Datenbanken übertragen" 74
2.2.9 Task "In 'master' gespeicherte Prozeduren übertragen" 74
2.2.10 Task "Aufträge übertragen" 75
2.2.11 Task "Benutzernamen übertragen" 75
2.2.12 Task "Fehlermeldungen übertragen" 75
2.3 Erweiterungen des Transformationstasks 75
2.3.1 Mehrere Phasen in den Tasks zur Datentransformation 75
2.3.2 Package Object Browser beim Schreiben von Skripts 77
2.4 Die neuen Datentransformationen 77
2.4.1 Parameter in der Quellabfrage verwenden 78
2.4.2 Neue Fehlerdateioptionen 78
2.4.3 Suchabfragen können jetzt Daten modifizieren 78
2.5 Neue Merkmale in anderen Tasks 79
2.5.1 Verwendung von Eingabeparametern im Task "SQL ausführen" 79
2.5.2 Das Ergebnis des Tasks "SQL ausführen" an Parameter zuweisen 80
2.5.3 Das Ergebnis des Tasks "SQL ausführen" an ein
Recordset zuweisen 80
2.5.4 Package Object Browser beim Schreiben von ActiveX-Skripts 81
2.5.5 Automatisches Generieren einer Formatdatei im Masseneinfügungstask 81
2.6 Andere neue Merkmale in DTS 81
2.6.1 Der Assistent zum Kopieren von Datenbanken 81
2.6.2 Speichern in einer Visual Basic-Datei 82
2.6.3 Werte der globalen Paketvariablen mit DTSRun einstellen 82
2.6.4 DTSRunUI - Eine Windows-Oberfläche für DTSRun 82
2.6.5 Paketvorlagen 83
2.6.6 Getrennte Bearbeitung 83
2.6.7 Deklaration für globale Variablen erzwingen 83
2.6.8 Just-In-Time-Debuggen 84
2.6.9 Cache für Pakete aktivieren 84
2.6.10 Einzelne Schritte im Paket-Designer ausführen 85
2.6.11 DTS-Paketprotokolle 85
2.7 Andere neue Merkmale in SQL Server 2000, die Datentransformationen erweitern 86
2.7.1 Integration mit XML 86
2.7.2 Indizierte Sichten 86
2.7.3 Benutzerdefinierte Funktionen 86
2.8 Schlussbemerkungen 86
Kapitel 3 DTS und der Datenfluss im Unternehmen 87
3.1 Unternehmensdatenstruktur und Datenfluss 89
3.2 Der Motor für Transformationen von Unternehmensdaten 90
3.3 Arten der Datennutzung 91
3.3.1 Transaktionsverarbeitung 92
3.3.2 Geschäftsanalyse 92
3.3.3 Verlauf verwalten 97
3.4 Datenquellen 97
3.4.1 Systeme der Online-Transaktionsverarbeitung (OLTP) 97
3.4.2 Internet-Nutzungsdaten 97
3.4.3 Daten von außerhalb der Organisation 98
3.4.4 Das Datawarehouse 98
3.4.5 Ergebnisse von Geschäftsanalysesystemen 98
3.5 Metadaten 99
3.6 Arten der Datenspeicherung 100
3.6.1 Textdateien 101
3.6.2 XML 101
3.6.3 Tabellenblätter 103
3.6.4 Relationale Datenbank-Managementsysteme 103
3.6.5 Mehrdimensionale Datenbank-Managementsysteme (OLAP) 104
3.7 Schlussbemerkungen 106
Kapitel 4 Mit DTS Daten in einen Datamart verschieben 107
4.1 Mehrdimensionale Datenmodellierung 108
4.1.1 Unterschiede zwischen relationaler und mehrdimensionaler Modellierung 110
4.2 Faktentabelle 112
4.2.1 Measures auswählen 113
4.2.2 Die Ebene der Zusammenfassung für die Measures auswählen 114
4.3 Dimensionstabellen 115
4.3.1 Der Primärschlüssel in einer Dimensionstabelle 116
4.3.2 Ebenen der Dimensionshierarchie 116
4.3.3 Attribute der Dimension 117
4.3.4 Die Zeitdimension 118
4.3.5 Untergeordnete Dimensionsschlüssel 118
4.4 Das Sternschema laden 119
4.4.1 Daten in einen Vorbereitungsbereich laden 120
4.4.2 Die Dimensionstabellen laden 121
4.4.3 Die untergeordneten Dimensionsschlüssel aktualisieren 123
4.4.4 Die Faktentabelle laden 123
4.4.5 Die Daten verwenden 125
4.5 Aktualisierungen an Dimensionstabellen vermeiden 125
4.6 Schlussbemerkungen 130
Teil II DTS-Verbindungen und Transformationstasks 131
Kapitel 5 DTS-Verbindungen 133
5.1 DTS-Verbindungen erstellen 135
5.2 Verbindungseigenschaften 136
5.2.1 Eigenschaften, die eine DTS-Verbindung identifizieren 137
5.2.2 Eigenschaften, die den Zugriff auf die Datenquelle bestimmen 140
5.2.3 Andere Eigenschaften 144
5.3 Verbindungen für andere OLE DB-Provider erstellen 146
5.3.1 Der SQL Server OLE DB-Provider 146
5.3.2 Textdateiverbindungen 148
5.3.3 Der OLE DB-Provider für OLAP Services 151
5.3.4 Andere OLE DB-Provider 152
5.4 Datenverbindungen dynamisch modifizieren 154
5.5 Leistungsprobleme bei DTS-Verbindungen 155
5.6 Schlussbemerkungen 156
Kapitel 6 Der Task "Daten transformieren" 157
6.1 Wann man den Task "Daten transformieren" verwendet 158
6.2 Einen neuen Task "Daten transformieren" erstellen 160
6.2.1 Einen Task "Daten transformieren" mit dem
DTS-Designer erstellen 160
6.2.2 Einen Task "Daten transformieren" mit dem
DTS-Import/Export-Assistenten erstellen 161
6.2.3 Einen Task "Daten transformieren" per Code erstellen 161
6.3 Beschreibung und Name des Tasks 162
6.4 Die Quelle eines Tasks "Daten transformieren" 163
6.4.1 Textdateiquelle 164
6.4.2 Tabelle, Sicht oder Abfrage bei einer
relationalen Datenbankquelle 164
6.4.3 MDX-Abfrage bei einem mehrdimensionalen Quellcube 166
6.4.4 XML als Quelle verwenden 167
6.4.5 Parameter in einer Quellabfrage 167
6.4.6 Eigenschaften einer DataPumpTask-Quelle 169
6.5 Das Ziel eines Tasks "Daten transformieren" 169
6.5.1 Eine neue Zieltabelle erstellen 169
6.5.2 Textdateiziel 170
6.5.3 Eigenschaften eines DataPumpTask-Ziels 171
6.6 Quellspalten zu Zielspalten zuordnen 172
6.6.1 Transformationsflags 177
6.6.2 Eine Transformation testen 179
6.6.3 Die Auflistungen, die eine Transformation implementieren 180
6.6.4 Andere Eigenschaften einer Transformation 181
6.7 Die Transformationstypen 181
6.7.1 Datums-/Uhrzeit-Zeichenfolgen-Transformation 181
6.7.2 Zeichenfolgen in Großbuchstaben, Zeichenfolgen
in Kleinbuchstaben und Spalten kopieren 183
6.7.3 Teilzeichenfolge und Zeichenfolge kürzen 184
6.7.4 Datei lesen 184
6.7.5 Datei schreiben 185
6.7.6 ActiveX-Skript 186
6.7.7 Benutzerdefinierte Transformation 187
6.8 Andere Eigenschaften des Tasks "Daten transformieren" 187
6.8.1 Eigenschaften der Fehlerbehandlung 187
6.8.2 Eigenschaften der Datenverschiebung 190
6.8.3 Optionen für die Leistungsverbesserung bei SQL Server-Zielen 191
6.9 Spalteneigenschaften 193
6.10 Einen Task "Daten transformieren" in Visual Basic erzeugen 195
6.11 Transformationen per Code erstellen 199
6.11.1 Einen Transformationstyp per Code wählen 199
6.11.2 Die Transformation und ihre Spalten erzeugen 201
6.11.3 Spalten-Kopieren-, Großbuchstaben- und Kleinbuchstabentransformationen 203
6.11.4 Zeichenfolge-Kürzen- und Teilzeichenfolge-Transformationen 203
6.11.5 Datei-Lesen- und Datei-Schreiben-Transformationen 204
6.11.6 Datums-/Uhrzeit-Zeichenfolgen-Transformationen 205
6.11.7 ActiveX-Transformationen 206
6.11.8 Eine Beispielanwendung mit allen Transformationen 207
6.12 Den Task "Daten transformieren" als freistehendes
Symbol verwenden 207
6.13 Schlussbemerkungen 211
Kapitel 7 ActiveX-Skripts für einen Task "Daten transformieren" 213
7.1 Wann man ActiveX-Skripttransformationen verwendet 215
7.1.1 Ein Task oder mehrere Tasks? 215
7.1.2 Die Vielfalt der Transformationstypen 216
7.2 Grundlagen von ActiveX-Skripttransformationen 216
7.3 Die Entwicklungsumgebung für
ActiveX-Skripttransformationen 218
7.4 Eine Skriptsprache wählen 222
7.5 Transformationsstatus festlegen 222
7.5.1 DTSTransformStat_OK 222
7.5.2 DTSTransformStat_SkipRow 223
7.5.3 DTSTransformStat_SkipFetch 223
7.5.4 DTSTransformStat_SkipInsert 223
7.5.5 DTSTransformStat_DestDataNotSet 224
7.5.6 DTSTransformStat_Info 224
7.5.7 DTSTransformStat_OKInfo 224
7.5.8 DTSTransformStat_SkipRowInfo 224
7.5.9 DTSTransformStat_Error 225
7.5.10 DTSTransformStat_ErrorSkipRow 225
7.5.11 DTSTransformStat_ExceptionRow 225
7.5.12 DTSTransformStat_AbortPump 226
7.5.13 DTSTransformStat_NoMoreRows 226
7.6 Lokale Variablen erzeugen und verwenden 226
7.6.1 Variablentypen 226
7.6.2 Objektvariablen 228
7.6.3 Variablendeklaration erzwingen (Option Explicit) 228
7.7 Globale Variablen 229
7.7.1 Globale Variablen in der Benutzeroberfläche erzeugen 229
7.7.2 Globale Variablen in einem ActiveX-Skript erzeugen 231
7.7.3 Groß-/Kleinschreibung bei globalen Variablen 232
7.7.4 Die Methoden Lock und Unlock des Objekts GlobalVariable2 233
7.8 Suchtabellen 233
7.8.1 Suchtabellen in der Benutzeroberfläche erzeugen 234
7.8.2 Suchtabellenobjekte in einem ActiveX-Skript erzeugen 235
7.8.3 Eine Suchabfrage in einem ActiveX-Skript verwenden 236
7.8.4 Daten mit einer Suchabfrage modifizieren 236
7.9 ActiveX-Skripts verwenden oder Quellabfrage modifizieren 237
7.9.1 Einfache Zuweisung von Spalten 237
7.9.2 Zeichenfolgenmanipulation 238
7.9.3 Unbekannte Werte behandeln 238
7.9.4 Nach einem unbekannten Wert suchen 239
7.9.5 Mit einer äußeren Verknüpfung Datenverlusten vorbeugen 240
7.9.6 Daten aus zwei Quellen durch eine vollständige
äußere Verknüpfung mischen 241
7.9.7 Informationen aus einem Datensatz in mehrere
Datensätze trennen 242
7.9.8 Informationen aus mehreren Datensätzen zu einem
Datensatz kombinieren 246
7.10 Schlussbemerkungen 248
Kapitel 8 Der Task "Datengesteuerte Abfrage" 249
8.1 Wann man den Task "Datengesteuerte Abfrage" verwendet 251
8.2 Einen Task "Datengesteuerte Abfrage" erstellen 252
8.3 Transformationsstatuskonstanten für den Task
"Datengesteuerte Abfrage" 255
8.4 Beispiel für eine datengesteuerte Abfrage 256
8.5 Einen Task "Datengesteuerte Abfrage" in Visual Basic erstellen 259
8.6 Schlussbemerkungen 262
Kapitel 9 Multiphasendatapump 263
9.1 Die Multiphasendatapump aktivieren 264
9.2 Programmfluss mit mehreren Phasen 267
9.3 Die Phasen verwenden 269
9.3.1 Phase "Vor Quelldaten" 272
9.3.2 Phase "Zeilentransformation" 273
9.3.3 Phase "Nach Zeilentransformation" 273
9.3.4 Phase "Bei Transformationsfehler" 274
9.3.5 Phase "Bei Einfügungsfehler" 274
9.3.6 Phase "Bei erfolgreicher Einfügung" 275
9.3.7 Phase "Batch beendet" 276
9.3.8 Phase "Nach Quelldaten" 277
9.3.9 Phase "Pump beendet" 278
9.4 Mit Visual C++ ein COM-Objekt erzeugen,
um die Phasen zu programmieren 279
9.5 Eine Multiphasendatapump per Code erzeugen 279
9.5.1 Die Eigenschaft TransformPhases 279
9.5.2 Die Einstiegsfunktionen einrichten 280
9.6 Schlussbemerkung 281
Kapitel 10 Der parallele Datapumptask 283
10.1 Hierarchische Rowsets 284
10.2 Wann man den parallelen Datapumptask verwendet 287
10.3 Die Auflistungen und Eigenschaften des
parallelen Datapumptasks 288
10.4 Die Transformationsmodi 288
10.4.1 Hierarchischer Modus 289
10.4.2 Vereinfachter Modus 289
10.4.3 Datengesteuerter Abfragemodus 289
10.4.4 Die Eigenschaft TransformationSetOptions 290
10.5 Einen parallelen Datapumptask in Visual Basic erstellen 290
10.6 Eine Benutzeroberfläche für den parallelen Datapumptask 293
10.7 Schlussbemerkungen 299
Teil III Andere Tasks zum Verschieben und
Manipulieren von Daten 301
Kapitel 11 Der Masseneinfügungstask 303
11.1 Wann man den Masseneinfügungstask gegenüber
dem Task "Daten transformieren" bevorzugt 304
11.2 Einen Masseneinfügungstask erzeugen 306
11.3 Das Ziel für einen Masseneinfügungstask 306
11.4 Die Quelle für eine Masseneinfügung 307
11.4.1 Textdateien mit Feldern fester Länge 307
11.4.2 Textdateien mit Trennzeichen 307
11.5 Formatdateien 308
11.5.1 Struktur einer Formatdatei 309
11.5.2 Eine Formatdatei generieren 310
11.6 Unterschiede zwischen Quelle und Ziel beilegen 313
11.6.1 Zusätzliche Felder in der Datenzieltabelle 313
11.6.2 Felder beim Verschieben von der Quelle zum Ziel
neu anordnen 315
11.6.3 Zusätzliche Felder in der Quelltextdatei 316
11.7 Andere Eigenschaften des Masseneinfügungstasks 317
11.7.1 CHECK-Einschränkungen 318
11.7.2 NULL-Werte beibehalten 319
11.7.3 IDENTITY_INSERT aktivieren 320
11.7.4 Tabellensperre 320
11.7.5 Sortierte Daten 321
11.7.6 Codepage 322
11.7.7 Typ der Datendatei 322
11.7.8 Größe für Einfügungsbatch 323
11.7.9 Maximale Fehlerzahl 323
11.7.10 Nur ausgewählte Zeilen kopieren 324
11.8 Einen Masseneinfügungstask in Visual Basic erzeugen 324
11.9 Schlussbemerkungen 327
Kapitel 12 Der Task "SQL ausführen" 329
12.1 Wann man den Task "SQL ausführen" verwendet 330
12.2 Den Task "SQL ausführen" erzeugen 330
12.3 Abfragen für verschiedene Datenbanksysteme schreiben 332
12.4 Eingabeparameter im Task "SQL ausführen" 333
12.5 Ausgabeparameter für Zeilenwerte 335
12.6 Ausgabeparameter für ein Rowset 337
12.7 SQL-Anweisungen dynamisch modifizieren 339
12.8 Mit dem Task "SQL ausführen" ein DTS-Paket von einem Remoteserver ausführen 340
12.9 Einen Task "SQL ausführen" in Visual Basic erstellen 344
12.10 Schlussbemerkungen 347
Kapitel 13 Der Task "SQL Server-Objekte kopieren" 349
13.1 Wann man den Task "SQL Server-Objekte kopieren"
verwendet 350
13.2 Quelle und Ziel 351
13.3 Kopieroptionen 352
13.3.1 Zielobjekte erstellen 352
13.3.2 Daten kopieren 354
13.3.3 Sortierung verwenden 354
13.3.4 Alle Objekte kopieren 355
13.3.5 Standardoptionen verwenden 356
13.3.6 Verzeichnis für Skriptdatei 357
13.4 Andere Eigenschaften des Tasks
"SQL Server-Objekte kopieren" 357
13.5 Objektauswahl mit Methoden manipulieren 358
13.6 Einen Task "SQL Server-Objekte kopieren"
in Visual Basic erstellen 361
13.7 Schlussbemerkungen 363
Kapitel 14 Der FTP-Task (File Transfer Protocol) 365
14.1 Wann man den FTP-Task verwendet 366
14.2 Den Task erstellen und seine Eigenschaften festlegen 366
14.3 Den Task in Visual Basic erstellen 369
14.4 Schlussbemerkungen 371
Kapitel 15 Der Task "Datenbanken übertragen" und andere Tasks
zum Übertragen von Objekten 373
15.1 Wann man die Tasks zum Übertragen verwendet 374
15.2 Die Tasks erstellen und ihre Eigenschaften festlegen 375
15.2.1 Quelle und Ziel für die Tasks 375
15.3 Der Task "Datenbanken übertragen" 375
15.4 Der Task "Benutzernamen übertragen" 377
15.5 Der Task "Aufträge übertragen" 378
15.6 Der Task "In 'master' gespeicherte Prozeduren übertragen" 379
15.7 Der Task "Fehlermeldungen übertragen" 380
15.8 Die Tasks in Visual Basic erzeugen 381
15.9 Schlussbemerkungen 383
Teil IV Tasks zur Steuerung 385
Kapitel 16 Skripts für einen ActiveX-Skripttask schreiben 387
16.1 Wann man einen ActiveX-Skripttask verwendet 388
16.2 Einen ActiveX-Skripttask erstellen 389
16.3 DTS-Eigenschaften dynamisch modifizieren 390
16.3.1 Ein Paket referenzieren 390
16.3.2 Eine Verbindung referenzieren 391
16.3.3 Eine globale Variable referenzieren 391
16.3.4 Schritte, Tasks und benutzerdefinierte Tasks referenzieren 392
16.3.5 Auflistungen und Objekte in einem Task
"Daten transformieren" referenzieren 393
16.3.6 Das DTS-Application-Objekt referenzieren 393
16.3.7 Objekte und Eigenschaften, die man nicht direkt
referenzieren kann 393
16.3.8 Ein Dienstprogramm erstellen, um die Anzahl der
verarbeiteten Zeilen zu beschränken 394
16.4 Eine Schleife in einem DTS-Paket programmieren 395
16.5 ADO-Recordsets verwenden 398
16.6 Dateien und Verzeichnisse manipulieren 399
16.7 Datensätze in das Taskprotokoll schreiben 400
16.8 Visual Basic-Code nach VBScript konvertieren 401
16.8.1 Variablendeklaration 402
16.8.2 CreateObject für Objektvariablen verwenden 402
16.8.3 For-Next-Schleifen 403
16.8.4 Dateizugriff 403
16.8.5 GoTo und Zeilenmarken 403
16.8.6 Fehlerbehandlung 403
16.8.7 API-Aufrufe 404
16.8.8 Code als Einstiegsfunktion verwenden 404
16.8.9 VBScript-Code in Visual Basic verwenden 404
16.9 Einen ActiveX-Skripttask in Visual Basic erstellen 404
16.10 Schlussbemerkungen 406
Kapitel 17 Der Task "Dynamische Eigenschaften" 407
17.1 Wann man den Task "Dynamische Eigenschaften" verwendet 408
17.2 Den Task erstellen und seine Eigenschaften zuweisen 409
17.2.1 Eine neue Zuweisung vornehmen 409
17.2.2 Objekt und Eigenschaft für die Zuweisung auswählen 410
17.2.3 Datenquelle für die Zuweisung auswählen 412
17.3 Einen Task "Dynamische Eigenschaften" in
Visual Basic erstellen 417
17.4 Schlussbemerkungen 418
Kapitel 18 Der Task "Paket ausführen" 419
18.1 Wann man den Task "Paket ausführen" verwendet 420
18.2 Den Task erstellen und seine Eigenschaften festlegen 421
18.3 Werte der globalen Variablen im untergeordneten
Paket festlegen 423
18.4 Die Eigenschaft NestedExecutionLevel des Pakets 426
18.5 Ein DTS-Dienstprogramm erstellen und aufrufen 426
18.6 Den Task in Visual Basic erstellen 430
18.7 Schlussbemerkungen 432
Kapitel 19 Der Message Queue-Task 433
19.1 Wann man den Message Queue-Task verwendet 434
19.2 Den Task erstellen und seine Eigenschaften festlegen 435
19.2.1 Den Warteschlangenpfad festlegen 436
19.2.2 Nachrichten senden 436
19.2.3 Nachrichten empfangen 438
19.3 Den Task in Visual Basic erzeugen 443
19.4 Schlussbemerkungen 445
Kapitel 20 Der Task "Mail senden" 447
20.1 Wann man den Task "Mail senden" verwendet 448
20.2 Den Task erstellen und seine Eigenschaften festlegen 449
20.3 Die Methoden des Tasks "Mail senden" 450
20.4 Den Task in Visual Basic erstellen 450
20.5 Schlussbemerkungen 452
Kapitel 21 Der Analysis Services-Tasks 453
21.1 Wann man die Analysis Services-Tasks verwendet 454
21.2 Den Analysis Services-Aufbereitungstask verwenden 455
21.3 Datamining-Vorhersageabfragetask 460
21.4 Den Analysis Services-Aufbereitungstask in
Visual Basic erzeugen 463
21.5 Den Datamining-Vorhersageabfragetask in
Visual Basic erstellen 464
21.6 Schlussbemerkungen 466
Kapitel 22 Der Task "Prozess ausführen" 467
22.1 Wann man den Task "Prozess ausführen" verwendet 468
22.1.1 Massenkopieren von SQL Server in eine Textdatei 468
22.1.2 Eine Batchdatei ausführen, die osql- und/oder
bcp-Befehle enthält 468
22.1.3 Andere Anwendungen zur Verschiebung oder Änderung
von Daten ausführen 469
22.1.4 DTSRun ausführen 470
22.2 Den Task erzeugen und seine Eigenschaften festlegen 470
22.2.1 Die Eigenschaften des Tasks "Prozess ausführen" 470
22.2.2 Die Methode GetExpandedProcessCommandLine des
Objekts CreateProcess2 471
22.3 Den Task in Visual Basic erstellen 471
22.4 Schlussbemerkungen 473
Teil V DTS-Pakete und Schritte 475
Kapitel 23 Das DTS-Paket und seine Eigenschaften 477
23.1 DTS-Pakete identifizieren 478
23.2 DTS-Pakete speichern 480
23.2.1 DTS-Pakete nach SQL Server speichern 481
23.2.2 DTS-Pakete in Meta Data Services speichern 484
23.2.3 DTS-Pakete im Dateisystem speichern 485
23.2.4 DTS-Pakete als Visual Basic-Dateien speichern 486
23.3 DTS-Pakete verschlüsseln 487
23.4 Informationen über Pakete abrufen 488
23.4.1 In SQL Server gespeicherte Pakete 488
23.4.2 In Meta Data Services gespeicherte Pakete 492
23.4.3 In Dateien gespeicherte Pakete 493
23.5 Paketprotokolle und Fehlerdateien 494
23.5.1 Protokollieren in SQL Server 497
23.6 DTS-Pakete als Datenquelle 503
23.6.1 Der Datenprovider DTSPackageDSO 503
23.6.2 Ein DTS-Paket als Datenquelle einrichten 503
23.6.3 Ein DTS-Paket mit OPENROWSET abfragen 504
23.6.4 Ein DTS-Paket als Verbindungsserver registrieren 506
23.6.5 XML von einem Task "Daten transformieren" über
den Provider DTSPackageDSO zurückgeben 507
23.7 Andere Eigenschaften und Methoden von DTS-Paketobjekten 508
23.7.1 CreationDate, CreatorComputerName und CreatorName 509
23.7.2 PackageType 509
23.7.3 Parent 509
23.7.4 UseOLEDBServiceComponents 510
23.7.5 Die Methode GetDTSVersionInfo 510
23.8 Schlussbemerkungen 510
Kapitel 24 Schritte und Rangfolgeneinschränkungen 511
24.1 Schritte, Tasks und das DTS-Paket 512
24.2 Rangfolgeneinschränkungen 513
24.2.1 Die drei Arten der Rangfolge 514
24.2.2 Rangfolgeneinschränkungen im DTS-Designer erzeugen 515
24.2.3 Rangfolgeneinschränkungen per Programm erzeugen 517
24.3 Der Ausführungsstatus des Schrittes 519
24.4 Threads und Priorität der Ausführung 519
24.4.1 Ausführungsparameter für Threads auf Paketebene 519
24.4.2 Ausführungsparameter für Threads auf Schrittebene 521
24.5 Transaktionen in DTS-Paketen 524
24.5.1 Transaktionseigenschaften auf Paketebene 524
24.5.2 Transaktionseinstellungen für die Schritte 527
24.5.3 Teilnahme an Transaktionen durch Verbindungen und Tasks 529
24.5.4 Eine Transaktion mit nacheinander ausgeführten Schritten 530
24.5.5 Eine Transaktion mit parallel ausgeführten Schritten 533
24.5.6 Transaktionen über mehrere DTS-Pakete 536
24.6 Workflow-ActiveX-Skripts 537
24.6.1 Rückgabewerte von Skripts 539
24.6.2 Skript-Ergebnisse für Schleifenkonstruktionen nutzen 539
24.6.3 Schritteigenschaften für das Workflowskript 540
24.7 Andere Eigenschaften des Step-Objekts 540
24.7.1 StartTime, FinishTime und ExecutionTime 540
24.7.2 Description 541
24.7.3 Parent 541
24.8 Einen Schritt mit Visual Basic erstellen 541
24.9 Schlussbemerkungen 542
Kapitel 25 Schnelle Entwicklung mit dem Assistenten zum Kopieren
von Datenbanken und dem DTS-Import-/Export-Assistenten 543
25.1 Zwei Assistenten mit drei Ebenen der Granularität 544
25.1.1 Datenbanken mit dem Assistenten zum Kopieren
von Datenbanken übertragen 545
25.1.2 SQL Server-Objekte mit dem DTS-Import/Export-Assistenten übertragen 545
25.1.3 Daten mit dem DTS-Import/Export-Assistenten übertragen 546
25.2 Die Assistenten aufrufen 547
25.2.1 Assistenten vom Enterprise Manager aufrufen 547
25.2.2 Assistenten von der Befehlszeile aufrufen 548
25.2.3 Assistenten aus einem Programm aufrufen 549
25.3 Der Assistent zum Kopieren von Datenbanken 551
25.3.1 Quelle und Ziel auswählen 551
25.3.2 Die Datenbanken und Dateistandorte wählen 552
25.3.3 Andere zu übertragende Objekte wählen 554
25.3.4 Das vom Assistenten zum Kopieren von Datenbanken
erzeugte DTS-Paket 554
25.4 Verbindungen mit dem DTS-Import/Export-Assistenten
erstellen 556
25.5 SQL Server-Objekte übertragen 557
25.6 Datentransformationen einrichten 558
25.6.1 Eine Abfrage verwenden, um die zu übertragenden
Daten zu spezifizieren 558
25.6.2 Tabelle(n) und Sicht(en) aus der Quelldatenbank kopieren 560
25.6.3 Die Zieltabellen 561
25.6.4 Die Datentransformationen 563
25.7 Das Paket ausführen, planen, speichern und replizieren 565
25.7.1 Ein DTS-Paket für die Replikation erzeugen 566
25.7.2 Ein DTS-Paket für die spätere Ausführung planen 567
25.7.3 Ein DTS-Paket speichern 568
25.8 Den DTS-Import/Export-Assistenten fertig stellen 568
25.9 Schlussbemerkungen 568
Kapitel 26 Pakete mit Visual Basic und gespeicherten Prozeduren verwalten 571
26.1 Mit DTS-Paketen in Visual Basic arbeiten 572
26.1.1 Installationsvoraussetzungen 572
26.1.2 Ein Paket in Visual Basic speichern 573
26.1.3 Die Entwicklungsumgebung von Visual Basic einrichten 575
26.2 Die Struktur der von Visual Basic generierten
DTS-Codemodule 577
26.2.1 Headerinformationen 577
26.2.2 Deklaration der öffentlichen Variablen 578
26.2.3 Die Funktion Main 578
26.2.4 Funktionen zum Erzeugen der Tasks 582
26.3 Ein Paket aus Visual Basic heraus ausführen 583
26.3.1 Pakete laden und speichern 583
26.3.2 Ereignisse behandeln 584
26.3.3 Fehler behandeln 586
26.3.4 Eigenschaften dynamisch modifizieren 588
26.3.5 Eine Schleife in der Datentransformation implementieren 588
26.4 Ein Paket aus Visual Basic unter Verwendung
von SQL Namespace ausführen 589
26.5 Pakete und gespeicherte Systemprozeduren der OLE-Automatisierung 592
26.5.1 Die Prozeduren sp_OACreate und sp_OADestroy 592
26.5.2 Die Prozedur sp_OAMethod 593
26.5.3 Die Prozeduren sp_OAGetProperty und sp_OASetProperty 594
26.5.4 Die Prozedur sp_OAGetErrorInfo 595
26.6 Ein Paket mit gespeicherten Prozeduren ausführen 596
26.7 Schlussbemerkungen 599
Kapitel 27 Fehler in einem Paket und seinen Transformationen 601
27.1 Inkorrekte Daten behandeln 602
27.1.1 Potenzielle Fehler in den Daten analysieren 602
27.1.2 Fehler auslösen 603
27.1.3 Fehler korrigieren 605
27.1.4 Fehlerinformationen speichern 605
27.1.5 Transaktionskonsistenz aufrecht erhalten 606
27.1.6 Administratoren über Fehler informieren 606
27.2 ActiveX-Skripts debuggen 606
27.2.1 Mit dem Skriptdebugger arbeiten 609
27.2.2 Den Debugger verlassen ohne den Enterprise Manager
zu beenden 609
27.3 Schlussbemerkungen 611
Kapitel 28 Schnelle DTS-Pakete 613
28.1 Ziele der DTS-Transformationen 615
28.1.1 Das Ziel der schnellen Ausführung 616
28.1.2 Schnelle Entwicklung 616
28.1.3 Selbstdokumentierende Datentransformation 616
28.1.4 Code, der sich leicht warten lässt 617
28.2 Leistungsvergleiche von DTS-Tasks 617
28.2.1 Laden aus einer Textdatei in eine SQL Server-Datenbank 617
28.2.2 Laden von SQL Server 2000 nach SQL Server 2000 619
28.3 Leistungsstatistiken für die Transformationstasks 621
28.3.1 Vergleichen verschiedener Transformationen im Task
"Daten übertragen" 622
28.3.2 Separate und kombinierte Transformationen vergleichen 622
28.3.3 Namen oder Ordinalzahlen in Skripttransformationsspalten verwenden 623
28.3.4 Fetchpuffergröße, Tabellensperre und Größe
für Einfügungsbatch 626
28.3.5 Transformationslogik auf die Quellabfrage verschieben 627
28.3.6 Logik in eine benutzerdefinierte Transformation verschieben 630
28.3.7 Leistung der Tasks "Daten transformieren" und
" Datengesteuerte Abfrage" 631
28.4 Eine Skriptsprache wählen 632
28.5 Die Leistung durch Parallelverarbeitung verbessern 632
28.6 Einfluss der Indizierung auf die Leistung 633
28.7 Aus Leistungsgründen andere Tools in Betracht ziehen 634
28.7.1 Mit bcp von SQL Server in Textdateien exportieren 634
28.7.2 Replikation verwenden 634
28.8 Schlussbemerkungen 634
Kapitel 29 DTS und Meta Data Services 635
29.1 Warum man Meta Data Services mit DTS verwenden sollte 636
29.1.1 Metadaten 637
29.1.2 Der Speicherort Meta Data Services 638
29.2 Der DTS-Browser 639
29.2.1 Die Registerkarte "Durchsuchen" 639
29.2.2 Die Registerkarte "Herkunft" 642
29.2.3 Die Registerkarte "Paket" 644
29.3 Der Meta Data-Browser 645
29.3.1 Informationen über DTS-Objekte und Eigenschaften suchen 646
29.3.2 Nach XML exportieren 646
29.4 Andere Tools von Meta Data Services 647
29.4.1 Die Repository-Datenbank 647
29.4.2 Information Models 648
29.4.3 Das Meta Data Services SDK 649
29.4.4 DWGuide von DWSoft - Metadaten-Tool eines Drittherstellers 649
29.5 DTS für Datenherkunft auf Spaltenebene konfigurieren 650
29.5.1 Optionen für das Scannen von Paketen 651
29.5.2 Die Eigenschaft RepositoryMetadataOptions 652
29.6 DTS für Datenherkunft auf Zeilenebene konfigurieren 653
29.6.1 Optionen für Herkunftsvariablen 653
29.6.2 Die Eigenschaft LineageOptions 655
29.6.3 Die Herkunftsvariablen speichern 656
29.7 Programmgesteuert auf Herkunftsinformationen zugreifen 656
29.8 Schlussbemerkungen 659
Teil VI Die Leistung von DTS erweitern 661
Kapitel 30 Programmieren mit dem DTS-Objektmodell 663
30.1 Objekte und erweiterte Objekte 664
30.2 Die Objekthierarchie der DTS-Pakete 665
30.3 Tasks und benutzerdefinierte Tasks verwenden 670
30.3.1 Einen Task und einen benutzerdefinierten Task referenzieren 671
30.3.2 Einen neuen Task erzeugen 671
30.3.3 Objektnamen und Programmbezeichner für die
benutzerdefinierten Tasks 673
30.4 Auflistungen verwenden 675
30.5 Eigenschaften und die Auflistung Properties 676
30.6 Hierarchie des DTS-Objekts Application 676
30.7 Verbindungen in einem DTS-Paket dokumentieren 679
30.8 Schlussbemerkungen 682
Kapitel 31 Einen benutzerdefinierten Task in Visual Basic erstellen 683
31.1 Wann man einen neuen benutzerdefinierten Task
erzeugen sollte 684
31.2 Erste Schritte 685
31.3 Die Schnittstelle für den benutzerdefinierten Task 687
31.3.1 Die Eigenschaft Name 687
31.3.2 Die Eigenschaft Description 689
31.3.3 Die Auflistung Properties 690
31.3.4 Die Methode Execute 691
31.4 Die Benutzeroberfläche für benutzerdefinierten
Task implementieren 695
31.4.1 Die Methode New 696
31.4.2 Die Methode Edit 697
31.4.3 Die Methode Initialize 699
31.4.4 Die Methode Help 699
31.5 Ereignisse, Fehler und Protokolle 700
31.6 Einen benutzerdefinierten Task registrieren 703
31.7 Einen benutzerdefinierten Task in einem DTS-Paket verwenden 704
31.8 Der Task "Find File" 707
31.9 Der Task "Local Cube" 707
31.10 Schlussbemerkungen 708
Kapitel 32 Eine benutzerdefinierte Transformation mit Visual C++ erstellen 709
32.1 Warum man eine benutzerdefinierte Transformation
erzeugen sollte 710
32.2 Die Datapump-Schnittstellen 711
32.3 Die C++-Entwicklungsumgebung für die benutzerdefinierte Transformation vorbereiten 712
32.4 Eine benutzerdefinierte Transformation erzeugen 714
32.4.1 Das Projekt beginnen 715
32.4.2 Eine Eigenschaft in die benutzerdefinierte
Transformation hinzufügen 716
32.4.3 Code für die Methode PreValidateSchema hinzufügen 718
32.4.4 Code für die Methode ValidateSchema hinzufügen 720
32.4.5 Code für die Methode ProcessPhase hinzufügen 722
32.4.6 Die Fehlerdefinitionen des Projekts hinzufügen 726
32.4.7 Die benutzerdefinierte Transformation registrieren 727
32.5 Schlussbemerkungen 727
Stichwortverzeichnis 729
Teil I Einführung in DTS 27
Kapitel 1 Überblick über DTS 29
1.1 Eine Hochleistungs-Datapump - und eine Menge mehr 30
1.2 Komplexe Datentransformationen mit dem
DTS-Designer erstellen 31
1.2.1 Die Struktur eines DTS-Pakets 32
1.2.2 Verbindungen erstellen 35
1.2.3 Tasks erstellen 36
1.2.4 Den Workflow einrichten 37
1.3 DTS-Pakete speichern und abrufen 38
1.3.1 Speicherort Meta Data Services 39
1.3.2 Speicherort SQL Server 40
1.3.3 Strukturierte Speicherdatei 40
1.3.4 Visual Basic-Datei 40
1.3.5 Paketversionen 41
1.4 Ein DTS-Paket ausführen 41
1.4.1 DTS-Pakete vom DTS-Designer ausführen 41
1.4.2 DTS-Pakete von den Assistenten ausführen 42
1.4.3 DTS-Pakete vom Enterprise Manager ausführen 42
1.4.4 DTS-Pakete aus Visual Basic-Code heraus ausführen 43
1.4.5 DTS-Pakete mit den gespeicherten Systemprozeduren
der OLE-Automatisierung ausführen 43
1.4.6 Ein DTS-Paket als Datenprovider 44
1.4.7 Das Befehlszeilendienstprogramm DTSRun 44
1.4.8 Das Dienstprogramm DTSRun für Windows 47
1.4.9 Aus einem anderen DTS-Paket ausführen 49
1.4.10 Ein DTS-Paket planen 50
1.4.11 Der Ausführungskontext für ein DTS-Paket 51
1.5 Das DTS-Objektmodell zur Programmsteuerung 52
1.5.1 Das DTS-Objektmodell 53
1.5.2 Das DTS-Objektmodell mit dem Task
"Dynamische Eigenschaften" 53
1.5.3 Das DTS-Objektmodell mit der Funktion
"Getrennte Bearbeitung" 55
1.5.4 DTS mit VBScript programmieren 57
1.5.5 DTS mit Visual Basic programmieren 57
1.5.6 DTS mit Visual C++ programmieren 57
1.6 DTS-Vorlagen 58
1.6.1 Vorlagen verwenden 58
1.6.2 Vorlagen erstellen 58
1.7 Assistenten für die schnelle Anwendungsentwicklung 59
1.7.1 Der Assistent zum Kopieren von Datenbanken 59
1.7.2 Der DTS-Import/Export-Assistent 61
1.8 DTS in der Praxis 63
1.8.1 Aktualisieren einer Datenbank von
Microsoft Access zu SQL Server 63
1.8.2 Daten aus mehren Quellen konsolidieren 63
1.8.3 Datamart oder Datawarehouse erstmalig und regelmäßig laden 64
1.8.4 Berichte in Transaktionsverarbeitungssystemen 64
1.8.5 Erstellen einer Schnittstelle zum Web für ein Legacysystem 65
1.8.6 Eine Datenbank archivieren 65
1.8.7 Internet-Nutzungsdaten analysieren 65
1.8.8 Importieren und Exportieren mit XML 67
1.9 Schlussbemerkungen 68
Kapitel 2 Erweiterungen bei DTS in SQL Server 2000 69
2.1 Die Top Ten der neuen Merkmale von DTS 70
2.2 Die neuen DTS-Tasks 71
2.2.1 Task "Dynamische Eigenschaften" 71
2.2.2 FTP-Task (File Transfer Protocol) 71
2.2.3 Task "Paket ausführen" 71
2.2.4 Message Queue-Task 72
2.2.5 Paralleler Datapumptask 72
2.2.6 Analysis Services-Aufbereitungstask 73
2.2.7 Datamining-Vorhersageabfragetask 73
2.2.8 Task "Datenbanken übertragen" 74
2.2.9 Task "In 'master' gespeicherte Prozeduren übertragen" 74
2.2.10 Task "Aufträge übertragen" 75
2.2.11 Task "Benutzernamen übertragen" 75
2.2.12 Task "Fehlermeldungen übertragen" 75
2.3 Erweiterungen des Transformationstasks 75
2.3.1 Mehrere Phasen in den Tasks zur Datentransformation 75
2.3.2 Package Object Browser beim Schreiben von Skripts 77
2.4 Die neuen Datentransformationen 77
2.4.1 Parameter in der Quellabfrage verwenden 78
2.4.2 Neue Fehlerdateioptionen 78
2.4.3 Suchabfragen können jetzt Daten modifizieren 78
2.5 Neue Merkmale in anderen Tasks 79
2.5.1 Verwendung von Eingabeparametern im Task "SQL ausführen" 79
2.5.2 Das Ergebnis des Tasks "SQL ausführen" an Parameter zuweisen 80
2.5.3 Das Ergebnis des Tasks "SQL ausführen" an ein
Recordset zuweisen 80
2.5.4 Package Object Browser beim Schreiben von ActiveX-Skripts 81
2.5.5 Automatisches Generieren einer Formatdatei im Masseneinfügungstask 81
2.6 Andere neue Merkmale in DTS 81
2.6.1 Der Assistent zum Kopieren von Datenbanken 81
2.6.2 Speichern in einer Visual Basic-Datei 82
2.6.3 Werte der globalen Paketvariablen mit DTSRun einstellen 82
2.6.4 DTSRunUI - Eine Windows-Oberfläche für DTSRun 82
2.6.5 Paketvorlagen 83
2.6.6 Getrennte Bearbeitung 83
2.6.7 Deklaration für globale Variablen erzwingen 83
2.6.8 Just-In-Time-Debuggen 84
2.6.9 Cache für Pakete aktivieren 84
2.6.10 Einzelne Schritte im Paket-Designer ausführen 85
2.6.11 DTS-Paketprotokolle 85
2.7 Andere neue Merkmale in SQL Server 2000, die Datentransformationen erweitern 86
2.7.1 Integration mit XML 86
2.7.2 Indizierte Sichten 86
2.7.3 Benutzerdefinierte Funktionen 86
2.8 Schlussbemerkungen 86
Kapitel 3 DTS und der Datenfluss im Unternehmen 87
3.1 Unternehmensdatenstruktur und Datenfluss 89
3.2 Der Motor für Transformationen von Unternehmensdaten 90
3.3 Arten der Datennutzung 91
3.3.1 Transaktionsverarbeitung 92
3.3.2 Geschäftsanalyse 92
3.3.3 Verlauf verwalten 97
3.4 Datenquellen 97
3.4.1 Systeme der Online-Transaktionsverarbeitung (OLTP) 97
3.4.2 Internet-Nutzungsdaten 97
3.4.3 Daten von außerhalb der Organisation 98
3.4.4 Das Datawarehouse 98
3.4.5 Ergebnisse von Geschäftsanalysesystemen 98
3.5 Metadaten 99
3.6 Arten der Datenspeicherung 100
3.6.1 Textdateien 101
3.6.2 XML 101
3.6.3 Tabellenblätter 103
3.6.4 Relationale Datenbank-Managementsysteme 103
3.6.5 Mehrdimensionale Datenbank-Managementsysteme (OLAP) 104
3.7 Schlussbemerkungen 106
Kapitel 4 Mit DTS Daten in einen Datamart verschieben 107
4.1 Mehrdimensionale Datenmodellierung 108
4.1.1 Unterschiede zwischen relationaler und mehrdimensionaler Modellierung 110
4.2 Faktentabelle 112
4.2.1 Measures auswählen 113
4.2.2 Die Ebene der Zusammenfassung für die Measures auswählen 114
4.3 Dimensionstabellen 115
4.3.1 Der Primärschlüssel in einer Dimensionstabelle 116
4.3.2 Ebenen der Dimensionshierarchie 116
4.3.3 Attribute der Dimension 117
4.3.4 Die Zeitdimension 118
4.3.5 Untergeordnete Dimensionsschlüssel 118
4.4 Das Sternschema laden 119
4.4.1 Daten in einen Vorbereitungsbereich laden 120
4.4.2 Die Dimensionstabellen laden 121
4.4.3 Die untergeordneten Dimensionsschlüssel aktualisieren 123
4.4.4 Die Faktentabelle laden 123
4.4.5 Die Daten verwenden 125
4.5 Aktualisierungen an Dimensionstabellen vermeiden 125
4.6 Schlussbemerkungen 130
Teil II DTS-Verbindungen und Transformationstasks 131
Kapitel 5 DTS-Verbindungen 133
5.1 DTS-Verbindungen erstellen 135
5.2 Verbindungseigenschaften 136
5.2.1 Eigenschaften, die eine DTS-Verbindung identifizieren 137
5.2.2 Eigenschaften, die den Zugriff auf die Datenquelle bestimmen 140
5.2.3 Andere Eigenschaften 144
5.3 Verbindungen für andere OLE DB-Provider erstellen 146
5.3.1 Der SQL Server OLE DB-Provider 146
5.3.2 Textdateiverbindungen 148
5.3.3 Der OLE DB-Provider für OLAP Services 151
5.3.4 Andere OLE DB-Provider 152
5.4 Datenverbindungen dynamisch modifizieren 154
5.5 Leistungsprobleme bei DTS-Verbindungen 155
5.6 Schlussbemerkungen 156
Kapitel 6 Der Task "Daten transformieren" 157
6.1 Wann man den Task "Daten transformieren" verwendet 158
6.2 Einen neuen Task "Daten transformieren" erstellen 160
6.2.1 Einen Task "Daten transformieren" mit dem
DTS-Designer erstellen 160
6.2.2 Einen Task "Daten transformieren" mit dem
DTS-Import/Export-Assistenten erstellen 161
6.2.3 Einen Task "Daten transformieren" per Code erstellen 161
6.3 Beschreibung und Name des Tasks 162
6.4 Die Quelle eines Tasks "Daten transformieren" 163
6.4.1 Textdateiquelle 164
6.4.2 Tabelle, Sicht oder Abfrage bei einer
relationalen Datenbankquelle 164
6.4.3 MDX-Abfrage bei einem mehrdimensionalen Quellcube 166
6.4.4 XML als Quelle verwenden 167
6.4.5 Parameter in einer Quellabfrage 167
6.4.6 Eigenschaften einer DataPumpTask-Quelle 169
6.5 Das Ziel eines Tasks "Daten transformieren" 169
6.5.1 Eine neue Zieltabelle erstellen 169
6.5.2 Textdateiziel 170
6.5.3 Eigenschaften eines DataPumpTask-Ziels 171
6.6 Quellspalten zu Zielspalten zuordnen 172
6.6.1 Transformationsflags 177
6.6.2 Eine Transformation testen 179
6.6.3 Die Auflistungen, die eine Transformation implementieren 180
6.6.4 Andere Eigenschaften einer Transformation 181
6.7 Die Transformationstypen 181
6.7.1 Datums-/Uhrzeit-Zeichenfolgen-Transformation 181
6.7.2 Zeichenfolgen in Großbuchstaben, Zeichenfolgen
in Kleinbuchstaben und Spalten kopieren 183
6.7.3 Teilzeichenfolge und Zeichenfolge kürzen 184
6.7.4 Datei lesen 184
6.7.5 Datei schreiben 185
6.7.6 ActiveX-Skript 186
6.7.7 Benutzerdefinierte Transformation 187
6.8 Andere Eigenschaften des Tasks "Daten transformieren" 187
6.8.1 Eigenschaften der Fehlerbehandlung 187
6.8.2 Eigenschaften der Datenverschiebung 190
6.8.3 Optionen für die Leistungsverbesserung bei SQL Server-Zielen 191
6.9 Spalteneigenschaften 193
6.10 Einen Task "Daten transformieren" in Visual Basic erzeugen 195
6.11 Transformationen per Code erstellen 199
6.11.1 Einen Transformationstyp per Code wählen 199
6.11.2 Die Transformation und ihre Spalten erzeugen 201
6.11.3 Spalten-Kopieren-, Großbuchstaben- und Kleinbuchstabentransformationen 203
6.11.4 Zeichenfolge-Kürzen- und Teilzeichenfolge-Transformationen 203
6.11.5 Datei-Lesen- und Datei-Schreiben-Transformationen 204
6.11.6 Datums-/Uhrzeit-Zeichenfolgen-Transformationen 205
6.11.7 ActiveX-Transformationen 206
6.11.8 Eine Beispielanwendung mit allen Transformationen 207
6.12 Den Task "Daten transformieren" als freistehendes
Symbol verwenden 207
6.13 Schlussbemerkungen 211
Kapitel 7 ActiveX-Skripts für einen Task "Daten transformieren" 213
7.1 Wann man ActiveX-Skripttransformationen verwendet 215
7.1.1 Ein Task oder mehrere Tasks? 215
7.1.2 Die Vielfalt der Transformationstypen 216
7.2 Grundlagen von ActiveX-Skripttransformationen 216
7.3 Die Entwicklungsumgebung für
ActiveX-Skripttransformationen 218
7.4 Eine Skriptsprache wählen 222
7.5 Transformationsstatus festlegen 222
7.5.1 DTSTransformStat_OK 222
7.5.2 DTSTransformStat_SkipRow 223
7.5.3 DTSTransformStat_SkipFetch 223
7.5.4 DTSTransformStat_SkipInsert 223
7.5.5 DTSTransformStat_DestDataNotSet 224
7.5.6 DTSTransformStat_Info 224
7.5.7 DTSTransformStat_OKInfo 224
7.5.8 DTSTransformStat_SkipRowInfo 224
7.5.9 DTSTransformStat_Error 225
7.5.10 DTSTransformStat_ErrorSkipRow 225
7.5.11 DTSTransformStat_ExceptionRow 225
7.5.12 DTSTransformStat_AbortPump 226
7.5.13 DTSTransformStat_NoMoreRows 226
7.6 Lokale Variablen erzeugen und verwenden 226
7.6.1 Variablentypen 226
7.6.2 Objektvariablen 228
7.6.3 Variablendeklaration erzwingen (Option Explicit) 228
7.7 Globale Variablen 229
7.7.1 Globale Variablen in der Benutzeroberfläche erzeugen 229
7.7.2 Globale Variablen in einem ActiveX-Skript erzeugen 231
7.7.3 Groß-/Kleinschreibung bei globalen Variablen 232
7.7.4 Die Methoden Lock und Unlock des Objekts GlobalVariable2 233
7.8 Suchtabellen 233
7.8.1 Suchtabellen in der Benutzeroberfläche erzeugen 234
7.8.2 Suchtabellenobjekte in einem ActiveX-Skript erzeugen 235
7.8.3 Eine Suchabfrage in einem ActiveX-Skript verwenden 236
7.8.4 Daten mit einer Suchabfrage modifizieren 236
7.9 ActiveX-Skripts verwenden oder Quellabfrage modifizieren 237
7.9.1 Einfache Zuweisung von Spalten 237
7.9.2 Zeichenfolgenmanipulation 238
7.9.3 Unbekannte Werte behandeln 238
7.9.4 Nach einem unbekannten Wert suchen 239
7.9.5 Mit einer äußeren Verknüpfung Datenverlusten vorbeugen 240
7.9.6 Daten aus zwei Quellen durch eine vollständige
äußere Verknüpfung mischen 241
7.9.7 Informationen aus einem Datensatz in mehrere
Datensätze trennen 242
7.9.8 Informationen aus mehreren Datensätzen zu einem
Datensatz kombinieren 246
7.10 Schlussbemerkungen 248
Kapitel 8 Der Task "Datengesteuerte Abfrage" 249
8.1 Wann man den Task "Datengesteuerte Abfrage" verwendet 251
8.2 Einen Task "Datengesteuerte Abfrage" erstellen 252
8.3 Transformationsstatuskonstanten für den Task
"Datengesteuerte Abfrage" 255
8.4 Beispiel für eine datengesteuerte Abfrage 256
8.5 Einen Task "Datengesteuerte Abfrage" in Visual Basic erstellen 259
8.6 Schlussbemerkungen 262
Kapitel 9 Multiphasendatapump 263
9.1 Die Multiphasendatapump aktivieren 264
9.2 Programmfluss mit mehreren Phasen 267
9.3 Die Phasen verwenden 269
9.3.1 Phase "Vor Quelldaten" 272
9.3.2 Phase "Zeilentransformation" 273
9.3.3 Phase "Nach Zeilentransformation" 273
9.3.4 Phase "Bei Transformationsfehler" 274
9.3.5 Phase "Bei Einfügungsfehler" 274
9.3.6 Phase "Bei erfolgreicher Einfügung" 275
9.3.7 Phase "Batch beendet" 276
9.3.8 Phase "Nach Quelldaten" 277
9.3.9 Phase "Pump beendet" 278
9.4 Mit Visual C++ ein COM-Objekt erzeugen,
um die Phasen zu programmieren 279
9.5 Eine Multiphasendatapump per Code erzeugen 279
9.5.1 Die Eigenschaft TransformPhases 279
9.5.2 Die Einstiegsfunktionen einrichten 280
9.6 Schlussbemerkung 281
Kapitel 10 Der parallele Datapumptask 283
10.1 Hierarchische Rowsets 284
10.2 Wann man den parallelen Datapumptask verwendet 287
10.3 Die Auflistungen und Eigenschaften des
parallelen Datapumptasks 288
10.4 Die Transformationsmodi 288
10.4.1 Hierarchischer Modus 289
10.4.2 Vereinfachter Modus 289
10.4.3 Datengesteuerter Abfragemodus 289
10.4.4 Die Eigenschaft TransformationSetOptions 290
10.5 Einen parallelen Datapumptask in Visual Basic erstellen 290
10.6 Eine Benutzeroberfläche für den parallelen Datapumptask 293
10.7 Schlussbemerkungen 299
Teil III Andere Tasks zum Verschieben und
Manipulieren von Daten 301
Kapitel 11 Der Masseneinfügungstask 303
11.1 Wann man den Masseneinfügungstask gegenüber
dem Task "Daten transformieren" bevorzugt 304
11.2 Einen Masseneinfügungstask erzeugen 306
11.3 Das Ziel für einen Masseneinfügungstask 306
11.4 Die Quelle für eine Masseneinfügung 307
11.4.1 Textdateien mit Feldern fester Länge 307
11.4.2 Textdateien mit Trennzeichen 307
11.5 Formatdateien 308
11.5.1 Struktur einer Formatdatei 309
11.5.2 Eine Formatdatei generieren 310
11.6 Unterschiede zwischen Quelle und Ziel beilegen 313
11.6.1 Zusätzliche Felder in der Datenzieltabelle 313
11.6.2 Felder beim Verschieben von der Quelle zum Ziel
neu anordnen 315
11.6.3 Zusätzliche Felder in der Quelltextdatei 316
11.7 Andere Eigenschaften des Masseneinfügungstasks 317
11.7.1 CHECK-Einschränkungen 318
11.7.2 NULL-Werte beibehalten 319
11.7.3 IDENTITY_INSERT aktivieren 320
11.7.4 Tabellensperre 320
11.7.5 Sortierte Daten 321
11.7.6 Codepage 322
11.7.7 Typ der Datendatei 322
11.7.8 Größe für Einfügungsbatch 323
11.7.9 Maximale Fehlerzahl 323
11.7.10 Nur ausgewählte Zeilen kopieren 324
11.8 Einen Masseneinfügungstask in Visual Basic erzeugen 324
11.9 Schlussbemerkungen 327
Kapitel 12 Der Task "SQL ausführen" 329
12.1 Wann man den Task "SQL ausführen" verwendet 330
12.2 Den Task "SQL ausführen" erzeugen 330
12.3 Abfragen für verschiedene Datenbanksysteme schreiben 332
12.4 Eingabeparameter im Task "SQL ausführen" 333
12.5 Ausgabeparameter für Zeilenwerte 335
12.6 Ausgabeparameter für ein Rowset 337
12.7 SQL-Anweisungen dynamisch modifizieren 339
12.8 Mit dem Task "SQL ausführen" ein DTS-Paket von einem Remoteserver ausführen 340
12.9 Einen Task "SQL ausführen" in Visual Basic erstellen 344
12.10 Schlussbemerkungen 347
Kapitel 13 Der Task "SQL Server-Objekte kopieren" 349
13.1 Wann man den Task "SQL Server-Objekte kopieren"
verwendet 350
13.2 Quelle und Ziel 351
13.3 Kopieroptionen 352
13.3.1 Zielobjekte erstellen 352
13.3.2 Daten kopieren 354
13.3.3 Sortierung verwenden 354
13.3.4 Alle Objekte kopieren 355
13.3.5 Standardoptionen verwenden 356
13.3.6 Verzeichnis für Skriptdatei 357
13.4 Andere Eigenschaften des Tasks
"SQL Server-Objekte kopieren" 357
13.5 Objektauswahl mit Methoden manipulieren 358
13.6 Einen Task "SQL Server-Objekte kopieren"
in Visual Basic erstellen 361
13.7 Schlussbemerkungen 363
Kapitel 14 Der FTP-Task (File Transfer Protocol) 365
14.1 Wann man den FTP-Task verwendet 366
14.2 Den Task erstellen und seine Eigenschaften festlegen 366
14.3 Den Task in Visual Basic erstellen 369
14.4 Schlussbemerkungen 371
Kapitel 15 Der Task "Datenbanken übertragen" und andere Tasks
zum Übertragen von Objekten 373
15.1 Wann man die Tasks zum Übertragen verwendet 374
15.2 Die Tasks erstellen und ihre Eigenschaften festlegen 375
15.2.1 Quelle und Ziel für die Tasks 375
15.3 Der Task "Datenbanken übertragen" 375
15.4 Der Task "Benutzernamen übertragen" 377
15.5 Der Task "Aufträge übertragen" 378
15.6 Der Task "In 'master' gespeicherte Prozeduren übertragen" 379
15.7 Der Task "Fehlermeldungen übertragen" 380
15.8 Die Tasks in Visual Basic erzeugen 381
15.9 Schlussbemerkungen 383
Teil IV Tasks zur Steuerung 385
Kapitel 16 Skripts für einen ActiveX-Skripttask schreiben 387
16.1 Wann man einen ActiveX-Skripttask verwendet 388
16.2 Einen ActiveX-Skripttask erstellen 389
16.3 DTS-Eigenschaften dynamisch modifizieren 390
16.3.1 Ein Paket referenzieren 390
16.3.2 Eine Verbindung referenzieren 391
16.3.3 Eine globale Variable referenzieren 391
16.3.4 Schritte, Tasks und benutzerdefinierte Tasks referenzieren 392
16.3.5 Auflistungen und Objekte in einem Task
"Daten transformieren" referenzieren 393
16.3.6 Das DTS-Application-Objekt referenzieren 393
16.3.7 Objekte und Eigenschaften, die man nicht direkt
referenzieren kann 393
16.3.8 Ein Dienstprogramm erstellen, um die Anzahl der
verarbeiteten Zeilen zu beschränken 394
16.4 Eine Schleife in einem DTS-Paket programmieren 395
16.5 ADO-Recordsets verwenden 398
16.6 Dateien und Verzeichnisse manipulieren 399
16.7 Datensätze in das Taskprotokoll schreiben 400
16.8 Visual Basic-Code nach VBScript konvertieren 401
16.8.1 Variablendeklaration 402
16.8.2 CreateObject für Objektvariablen verwenden 402
16.8.3 For-Next-Schleifen 403
16.8.4 Dateizugriff 403
16.8.5 GoTo und Zeilenmarken 403
16.8.6 Fehlerbehandlung 403
16.8.7 API-Aufrufe 404
16.8.8 Code als Einstiegsfunktion verwenden 404
16.8.9 VBScript-Code in Visual Basic verwenden 404
16.9 Einen ActiveX-Skripttask in Visual Basic erstellen 404
16.10 Schlussbemerkungen 406
Kapitel 17 Der Task "Dynamische Eigenschaften" 407
17.1 Wann man den Task "Dynamische Eigenschaften" verwendet 408
17.2 Den Task erstellen und seine Eigenschaften zuweisen 409
17.2.1 Eine neue Zuweisung vornehmen 409
17.2.2 Objekt und Eigenschaft für die Zuweisung auswählen 410
17.2.3 Datenquelle für die Zuweisung auswählen 412
17.3 Einen Task "Dynamische Eigenschaften" in
Visual Basic erstellen 417
17.4 Schlussbemerkungen 418
Kapitel 18 Der Task "Paket ausführen" 419
18.1 Wann man den Task "Paket ausführen" verwendet 420
18.2 Den Task erstellen und seine Eigenschaften festlegen 421
18.3 Werte der globalen Variablen im untergeordneten
Paket festlegen 423
18.4 Die Eigenschaft NestedExecutionLevel des Pakets 426
18.5 Ein DTS-Dienstprogramm erstellen und aufrufen 426
18.6 Den Task in Visual Basic erstellen 430
18.7 Schlussbemerkungen 432
Kapitel 19 Der Message Queue-Task 433
19.1 Wann man den Message Queue-Task verwendet 434
19.2 Den Task erstellen und seine Eigenschaften festlegen 435
19.2.1 Den Warteschlangenpfad festlegen 436
19.2.2 Nachrichten senden 436
19.2.3 Nachrichten empfangen 438
19.3 Den Task in Visual Basic erzeugen 443
19.4 Schlussbemerkungen 445
Kapitel 20 Der Task "Mail senden" 447
20.1 Wann man den Task "Mail senden" verwendet 448
20.2 Den Task erstellen und seine Eigenschaften festlegen 449
20.3 Die Methoden des Tasks "Mail senden" 450
20.4 Den Task in Visual Basic erstellen 450
20.5 Schlussbemerkungen 452
Kapitel 21 Der Analysis Services-Tasks 453
21.1 Wann man die Analysis Services-Tasks verwendet 454
21.2 Den Analysis Services-Aufbereitungstask verwenden 455
21.3 Datamining-Vorhersageabfragetask 460
21.4 Den Analysis Services-Aufbereitungstask in
Visual Basic erzeugen 463
21.5 Den Datamining-Vorhersageabfragetask in
Visual Basic erstellen 464
21.6 Schlussbemerkungen 466
Kapitel 22 Der Task "Prozess ausführen" 467
22.1 Wann man den Task "Prozess ausführen" verwendet 468
22.1.1 Massenkopieren von SQL Server in eine Textdatei 468
22.1.2 Eine Batchdatei ausführen, die osql- und/oder
bcp-Befehle enthält 468
22.1.3 Andere Anwendungen zur Verschiebung oder Änderung
von Daten ausführen 469
22.1.4 DTSRun ausführen 470
22.2 Den Task erzeugen und seine Eigenschaften festlegen 470
22.2.1 Die Eigenschaften des Tasks "Prozess ausführen" 470
22.2.2 Die Methode GetExpandedProcessCommandLine des
Objekts CreateProcess2 471
22.3 Den Task in Visual Basic erstellen 471
22.4 Schlussbemerkungen 473
Teil V DTS-Pakete und Schritte 475
Kapitel 23 Das DTS-Paket und seine Eigenschaften 477
23.1 DTS-Pakete identifizieren 478
23.2 DTS-Pakete speichern 480
23.2.1 DTS-Pakete nach SQL Server speichern 481
23.2.2 DTS-Pakete in Meta Data Services speichern 484
23.2.3 DTS-Pakete im Dateisystem speichern 485
23.2.4 DTS-Pakete als Visual Basic-Dateien speichern 486
23.3 DTS-Pakete verschlüsseln 487
23.4 Informationen über Pakete abrufen 488
23.4.1 In SQL Server gespeicherte Pakete 488
23.4.2 In Meta Data Services gespeicherte Pakete 492
23.4.3 In Dateien gespeicherte Pakete 493
23.5 Paketprotokolle und Fehlerdateien 494
23.5.1 Protokollieren in SQL Server 497
23.6 DTS-Pakete als Datenquelle 503
23.6.1 Der Datenprovider DTSPackageDSO 503
23.6.2 Ein DTS-Paket als Datenquelle einrichten 503
23.6.3 Ein DTS-Paket mit OPENROWSET abfragen 504
23.6.4 Ein DTS-Paket als Verbindungsserver registrieren 506
23.6.5 XML von einem Task "Daten transformieren" über
den Provider DTSPackageDSO zurückgeben 507
23.7 Andere Eigenschaften und Methoden von DTS-Paketobjekten 508
23.7.1 CreationDate, CreatorComputerName und CreatorName 509
23.7.2 PackageType 509
23.7.3 Parent 509
23.7.4 UseOLEDBServiceComponents 510
23.7.5 Die Methode GetDTSVersionInfo 510
23.8 Schlussbemerkungen 510
Kapitel 24 Schritte und Rangfolgeneinschränkungen 511
24.1 Schritte, Tasks und das DTS-Paket 512
24.2 Rangfolgeneinschränkungen 513
24.2.1 Die drei Arten der Rangfolge 514
24.2.2 Rangfolgeneinschränkungen im DTS-Designer erzeugen 515
24.2.3 Rangfolgeneinschränkungen per Programm erzeugen 517
24.3 Der Ausführungsstatus des Schrittes 519
24.4 Threads und Priorität der Ausführung 519
24.4.1 Ausführungsparameter für Threads auf Paketebene 519
24.4.2 Ausführungsparameter für Threads auf Schrittebene 521
24.5 Transaktionen in DTS-Paketen 524
24.5.1 Transaktionseigenschaften auf Paketebene 524
24.5.2 Transaktionseinstellungen für die Schritte 527
24.5.3 Teilnahme an Transaktionen durch Verbindungen und Tasks 529
24.5.4 Eine Transaktion mit nacheinander ausgeführten Schritten 530
24.5.5 Eine Transaktion mit parallel ausgeführten Schritten 533
24.5.6 Transaktionen über mehrere DTS-Pakete 536
24.6 Workflow-ActiveX-Skripts 537
24.6.1 Rückgabewerte von Skripts 539
24.6.2 Skript-Ergebnisse für Schleifenkonstruktionen nutzen 539
24.6.3 Schritteigenschaften für das Workflowskript 540
24.7 Andere Eigenschaften des Step-Objekts 540
24.7.1 StartTime, FinishTime und ExecutionTime 540
24.7.2 Description 541
24.7.3 Parent 541
24.8 Einen Schritt mit Visual Basic erstellen 541
24.9 Schlussbemerkungen 542
Kapitel 25 Schnelle Entwicklung mit dem Assistenten zum Kopieren
von Datenbanken und dem DTS-Import-/Export-Assistenten 543
25.1 Zwei Assistenten mit drei Ebenen der Granularität 544
25.1.1 Datenbanken mit dem Assistenten zum Kopieren
von Datenbanken übertragen 545
25.1.2 SQL Server-Objekte mit dem DTS-Import/Export-Assistenten übertragen 545
25.1.3 Daten mit dem DTS-Import/Export-Assistenten übertragen 546
25.2 Die Assistenten aufrufen 547
25.2.1 Assistenten vom Enterprise Manager aufrufen 547
25.2.2 Assistenten von der Befehlszeile aufrufen 548
25.2.3 Assistenten aus einem Programm aufrufen 549
25.3 Der Assistent zum Kopieren von Datenbanken 551
25.3.1 Quelle und Ziel auswählen 551
25.3.2 Die Datenbanken und Dateistandorte wählen 552
25.3.3 Andere zu übertragende Objekte wählen 554
25.3.4 Das vom Assistenten zum Kopieren von Datenbanken
erzeugte DTS-Paket 554
25.4 Verbindungen mit dem DTS-Import/Export-Assistenten
erstellen 556
25.5 SQL Server-Objekte übertragen 557
25.6 Datentransformationen einrichten 558
25.6.1 Eine Abfrage verwenden, um die zu übertragenden
Daten zu spezifizieren 558
25.6.2 Tabelle(n) und Sicht(en) aus der Quelldatenbank kopieren 560
25.6.3 Die Zieltabellen 561
25.6.4 Die Datentransformationen 563
25.7 Das Paket ausführen, planen, speichern und replizieren 565
25.7.1 Ein DTS-Paket für die Replikation erzeugen 566
25.7.2 Ein DTS-Paket für die spätere Ausführung planen 567
25.7.3 Ein DTS-Paket speichern 568
25.8 Den DTS-Import/Export-Assistenten fertig stellen 568
25.9 Schlussbemerkungen 568
Kapitel 26 Pakete mit Visual Basic und gespeicherten Prozeduren verwalten 571
26.1 Mit DTS-Paketen in Visual Basic arbeiten 572
26.1.1 Installationsvoraussetzungen 572
26.1.2 Ein Paket in Visual Basic speichern 573
26.1.3 Die Entwicklungsumgebung von Visual Basic einrichten 575
26.2 Die Struktur der von Visual Basic generierten
DTS-Codemodule 577
26.2.1 Headerinformationen 577
26.2.2 Deklaration der öffentlichen Variablen 578
26.2.3 Die Funktion Main 578
26.2.4 Funktionen zum Erzeugen der Tasks 582
26.3 Ein Paket aus Visual Basic heraus ausführen 583
26.3.1 Pakete laden und speichern 583
26.3.2 Ereignisse behandeln 584
26.3.3 Fehler behandeln 586
26.3.4 Eigenschaften dynamisch modifizieren 588
26.3.5 Eine Schleife in der Datentransformation implementieren 588
26.4 Ein Paket aus Visual Basic unter Verwendung
von SQL Namespace ausführen 589
26.5 Pakete und gespeicherte Systemprozeduren der OLE-Automatisierung 592
26.5.1 Die Prozeduren sp_OACreate und sp_OADestroy 592
26.5.2 Die Prozedur sp_OAMethod 593
26.5.3 Die Prozeduren sp_OAGetProperty und sp_OASetProperty 594
26.5.4 Die Prozedur sp_OAGetErrorInfo 595
26.6 Ein Paket mit gespeicherten Prozeduren ausführen 596
26.7 Schlussbemerkungen 599
Kapitel 27 Fehler in einem Paket und seinen Transformationen 601
27.1 Inkorrekte Daten behandeln 602
27.1.1 Potenzielle Fehler in den Daten analysieren 602
27.1.2 Fehler auslösen 603
27.1.3 Fehler korrigieren 605
27.1.4 Fehlerinformationen speichern 605
27.1.5 Transaktionskonsistenz aufrecht erhalten 606
27.1.6 Administratoren über Fehler informieren 606
27.2 ActiveX-Skripts debuggen 606
27.2.1 Mit dem Skriptdebugger arbeiten 609
27.2.2 Den Debugger verlassen ohne den Enterprise Manager
zu beenden 609
27.3 Schlussbemerkungen 611
Kapitel 28 Schnelle DTS-Pakete 613
28.1 Ziele der DTS-Transformationen 615
28.1.1 Das Ziel der schnellen Ausführung 616
28.1.2 Schnelle Entwicklung 616
28.1.3 Selbstdokumentierende Datentransformation 616
28.1.4 Code, der sich leicht warten lässt 617
28.2 Leistungsvergleiche von DTS-Tasks 617
28.2.1 Laden aus einer Textdatei in eine SQL Server-Datenbank 617
28.2.2 Laden von SQL Server 2000 nach SQL Server 2000 619
28.3 Leistungsstatistiken für die Transformationstasks 621
28.3.1 Vergleichen verschiedener Transformationen im Task
"Daten übertragen" 622
28.3.2 Separate und kombinierte Transformationen vergleichen 622
28.3.3 Namen oder Ordinalzahlen in Skripttransformationsspalten verwenden 623
28.3.4 Fetchpuffergröße, Tabellensperre und Größe
für Einfügungsbatch 626
28.3.5 Transformationslogik auf die Quellabfrage verschieben 627
28.3.6 Logik in eine benutzerdefinierte Transformation verschieben 630
28.3.7 Leistung der Tasks "Daten transformieren" und
" Datengesteuerte Abfrage" 631
28.4 Eine Skriptsprache wählen 632
28.5 Die Leistung durch Parallelverarbeitung verbessern 632
28.6 Einfluss der Indizierung auf die Leistung 633
28.7 Aus Leistungsgründen andere Tools in Betracht ziehen 634
28.7.1 Mit bcp von SQL Server in Textdateien exportieren 634
28.7.2 Replikation verwenden 634
28.8 Schlussbemerkungen 634
Kapitel 29 DTS und Meta Data Services 635
29.1 Warum man Meta Data Services mit DTS verwenden sollte 636
29.1.1 Metadaten 637
29.1.2 Der Speicherort Meta Data Services 638
29.2 Der DTS-Browser 639
29.2.1 Die Registerkarte "Durchsuchen" 639
29.2.2 Die Registerkarte "Herkunft" 642
29.2.3 Die Registerkarte "Paket" 644
29.3 Der Meta Data-Browser 645
29.3.1 Informationen über DTS-Objekte und Eigenschaften suchen 646
29.3.2 Nach XML exportieren 646
29.4 Andere Tools von Meta Data Services 647
29.4.1 Die Repository-Datenbank 647
29.4.2 Information Models 648
29.4.3 Das Meta Data Services SDK 649
29.4.4 DWGuide von DWSoft - Metadaten-Tool eines Drittherstellers 649
29.5 DTS für Datenherkunft auf Spaltenebene konfigurieren 650
29.5.1 Optionen für das Scannen von Paketen 651
29.5.2 Die Eigenschaft RepositoryMetadataOptions 652
29.6 DTS für Datenherkunft auf Zeilenebene konfigurieren 653
29.6.1 Optionen für Herkunftsvariablen 653
29.6.2 Die Eigenschaft LineageOptions 655
29.6.3 Die Herkunftsvariablen speichern 656
29.7 Programmgesteuert auf Herkunftsinformationen zugreifen 656
29.8 Schlussbemerkungen 659
Teil VI Die Leistung von DTS erweitern 661
Kapitel 30 Programmieren mit dem DTS-Objektmodell 663
30.1 Objekte und erweiterte Objekte 664
30.2 Die Objekthierarchie der DTS-Pakete 665
30.3 Tasks und benutzerdefinierte Tasks verwenden 670
30.3.1 Einen Task und einen benutzerdefinierten Task referenzieren 671
30.3.2 Einen neuen Task erzeugen 671
30.3.3 Objektnamen und Programmbezeichner für die
benutzerdefinierten Tasks 673
30.4 Auflistungen verwenden 675
30.5 Eigenschaften und die Auflistung Properties 676
30.6 Hierarchie des DTS-Objekts Application 676
30.7 Verbindungen in einem DTS-Paket dokumentieren 679
30.8 Schlussbemerkungen 682
Kapitel 31 Einen benutzerdefinierten Task in Visual Basic erstellen 683
31.1 Wann man einen neuen benutzerdefinierten Task
erzeugen sollte 684
31.2 Erste Schritte 685
31.3 Die Schnittstelle für den benutzerdefinierten Task 687
31.3.1 Die Eigenschaft Name 687
31.3.2 Die Eigenschaft Description 689
31.3.3 Die Auflistung Properties 690
31.3.4 Die Methode Execute 691
31.4 Die Benutzeroberfläche für benutzerdefinierten
Task implementieren 695
31.4.1 Die Methode New 696
31.4.2 Die Methode Edit 697
31.4.3 Die Methode Initialize 699
31.4.4 Die Methode Help 699
31.5 Ereignisse, Fehler und Protokolle 700
31.6 Einen benutzerdefinierten Task registrieren 703
31.7 Einen benutzerdefinierten Task in einem DTS-Paket verwenden 704
31.8 Der Task "Find File" 707
31.9 Der Task "Local Cube" 707
31.10 Schlussbemerkungen 708
Kapitel 32 Eine benutzerdefinierte Transformation mit Visual C++ erstellen 709
32.1 Warum man eine benutzerdefinierte Transformation
erzeugen sollte 710
32.2 Die Datapump-Schnittstellen 711
32.3 Die C++-Entwicklungsumgebung für die benutzerdefinierte Transformation vorbereiten 712
32.4 Eine benutzerdefinierte Transformation erzeugen 714
32.4.1 Das Projekt beginnen 715
32.4.2 Eine Eigenschaft in die benutzerdefinierte
Transformation hinzufügen 716
32.4.3 Code für die Methode PreValidateSchema hinzufügen 718
32.4.4 Code für die Methode ValidateSchema hinzufügen 720
32.4.5 Code für die Methode ProcessPhase hinzufügen 722
32.4.6 Die Fehlerdefinitionen des Projekts hinzufügen 726
32.4.7 Die benutzerdefinierte Transformation registrieren 727
32.5 Schlussbemerkungen 727
Stichwortverzeichnis 729