Integration Services 2008 Evolution statt Revolution Willfried Färber MVP SQL Server
Integration Services 2008
Evolution statt Revolution
Willfried FärberMVP SQL Server
AGENDA
SSIS 2008: Alles wird besserDer erste Schritt: „Import und Export Assistent“Eine neue Möglichkeit in der Script TaskFür Profis: Die neue Architektur des DatenflussesDatenprofilingÄnderungen beim LookupSCD für Fortgeschrittene
AGENDA
Erfassung von DatenänderungenDump für alle FälleFragen und Antworten
Vorbemerkungen
Das sollte kein Neuland sein …Sie wissen was ETL istSie kennen bereits SSIS aus dem SQL Server 2005Sie wissen warum SSIS ein wichtiges Werkzeug ist
Ich zeige Ihnen Betacode
Wahrscheinlich reicht die Zeit nicht …..Sie bekommen die Folien zum Nachlesen
Zusätzliche neue Funktionalitäten
Noch nicht offiziell angekündigt
Zum Beispiel: Enumeratoren
ForEach Database EnumeratorBenutzt OLEDB als VerbindungsmanagerServer der durchlaufen werden soll kann konfiguriert werden
Sehr interessantes Benutzerinterface
Nicht jede Innovation setzt sich durch
DB Enumeration Types
DBENUM_CUSTOM = 0DBENUM_SYSTEMONLY = 1DBENUM_USERONLY = 2DBENUM_ALL = 3
Neues Datenziel
Die „DataReader“ Datenquelle verschwindet
Heißt jetzt „ADO.Net“ DatenquelleEs gibt jetzt auch ein ADO.Net Datenziel
Kein Scriptkode für ODBC Datenquellen mehr notwendig
ADO.Datenquelle / Ziel ist komfortabelAllerdings 5 bis 10 Prozent langsamer als OLE.DBBestimme Tasks brauchen explizit die ADO.Net Datenquelle
AD
O.N
et S
ou
rce A
dap
ter
AD
O.N
et S
ou
rce A
dap
ter
AD
O.N
et D
estin
atio
n A
dapte
r für
OD
BC
AD
O.N
et D
estin
atio
n A
dapte
r für
OD
BC
Der neue „Import und Export Assistent“
Für einfache Import- und Exportvorgänge das Richtige
Alle Datenquellen und Ziele aus SSIS werden unterstütztKomplett Assistenten gesteuertAuch beim Kopieren von vielen Tabellen effektivGanz geringe Eingriffsmöglichkeiten für eine Transformation
DTS Wizard
Demo
Die neue Script Umgebung
Die VSA Umgebung wird durch die VSTA Umgebung ersetzt.
Jetzt ist es wirklich Visual StudioUnterstützte Sprachen
Visual BasicC#
Referenzen zu allen .Net Assemblies einfach möglichFür Webservices kann einfach eine Proxie Klasse erzeugt werdenCodesnippets auch in SSIS möglich
VSTA ersetzt VSA
Die neue Scriptumgebung
Demo
C#
Scrip
Transfo
rm A
ufru
f ein
es W
ebse
rvice
sC
# S
crip Tra
nsfo
rm A
ufru
f ein
es W
ebse
rvice
s
Die neue Architektur des Datenflusses
JetztNeue Implementierung des Thread Schedulers
Verbesserte Parallelisierung der Verarbeitung im DatenflussDeutliche Verbesserung bei der Performance und bei der Ausnutzung vorhandener Prozessoren
Je nach Design des Datenflusses um bis zu 50 % LeistungssteigerungWeniger Zeitaufwand für manuelles TuningDer Datenfluss „funktioniert“ einfach ….
Komplexer Datenfluss
Ausführungsplan Datenfluss
Ausnutzung der CPUsSSIS 2005
SSIS 2008
Bis zu 80% schneller* * Dieser Wert kann natürlich variieren
Datenprofiling
Wie sehen die Daten wirklich ausGenaues kennen der Daten ist im ETL Prozess sehr wichtig
Bisher durch Abfragen auf die DatenDatenquellensicht konnte für einfache Fälle verwendet werden
Jetzt gibt es eine eigene „Data Profiling“ Task
Erfordert eine ADO.Net DatenquelleFunktioniert nur mit dem SQL Server
Die Data Profiling Task
Demo
Date
n P
rofilin
g Ta
sk O
berfl
äch
eD
ate
n P
rofilin
g Ta
sk O
berfl
äch
e
Optio
n: Q
uick P
rofile
Optio
n: Q
uick P
rofile
Verte
ilun
g d
er W
erte
in
ein
er S
palte
Verte
ilun
g d
er W
erte
in
ein
er S
palte
Wie
lvie
l Werte
in e
iner
Spalte
sind
NU
LLW
ielv
iel W
erte
in e
iner
Spalte
sind
NU
LL
Colu
mn
Patte
rn P
rofile
Colu
mn
Patte
rn P
rofile
Die Suche Transformation
Die Referenzdaten können von jeder beliebigen Datenquelle geladen werdenDer Cache für die Suche-Transformation kann explizit gespeichert werdenDer Cache kann zu jedem beliebigen Zeitpunkt geladen werden.
Kann sehr schnell gelesen und geschrieben werden (Rohdatenformat mit Ergänzungen)
Es gibt einen eigenen „Nicht gefunden“ Datenpfad
SSIS Suche TransformationErster Schritt
Der Cache wird von einer beliebigen Datenquelle gefüllt und gespeichert
Weitere VerarbeitungDer Cache wird von der Platte geladen
customer .csv
Ablegen des Caches auf der Platte oder im Speicher
Fact Sales
Einlesen des Caches von der Platte oder Nutzung im Speicher
Der Cache bleibt bestehen und
kann mehrfach genutzt werden
Die verbesserte Suche Transformation
Demo
SCD für Fortgeschrittene
Der „Langsam veränderliche Dimension“ Assistent hat einen schlechten Ruf
Kann durch geschickte Ausnutzung der Möglichkeiten auch mit großen Datenmengen umgehen
Allerdings ist dafür Handarbeit notwendig
Der „Merge“ Befehl des SQL Servers 2008 kann für SCD Typ 1 und SCD Typ2 verwendet werden.
Aufruf des TSQL Befehls in der Ablaufsteuerung
„Ausführen SQL“ Task
Der Mergebefehl
Steht in jeder Version des SQL Servers 2008 zur Verfügung
Kann natürlich auch außerhalb von SSIS verwendet werden
Führt Update, Insert oder Delete innerhalb eines Befehls aus
Da nur ein Durchlauf durch die Zieltabelle notwendig ist, meistens deutlich effektiver als getrennte Befehle
Kann bei größeren Datenmengen die SCD Transformation ersetzen
MERGE Syntax[ WITH <common_table_expression> [ ,…n ] ]MERGE
[ TOP (expression) [ PERCENT ] ][ INTO ] <target_table> [ [ AS ] table_alias ] [ WITH( <merge_hint> ) ]USING <table_source>ON <search_condition><merge_clause> [ …n ][ OUTPUT <dml_select_list> ][ OPTION ( <query_hint> [ ,…n ] ) ]
;
<merge_clause>:={
WHEN MATCHED [ AND <search_condition> ] THEN { UPDATE SET <set_clause> | DELETE }
| WHEN [ TARGET ] NOT MATCHED [ AND <search_condition> ]THEN INSERT [ (column_list) ]
{ VALUES (values_list) | DEFAULT VALUES }| WHEN SOURCE NOT MATCHED [ AND <search_condition> ]
THEN { UPDATE SET <set_clause> | DELETE }}
■ SQL Standard MERGE Extensions ■ Proprietary Syntax Extensions
Example: Daten SynchronisierungCREATE TABLE Original (o_pk INT PRIMARY KEY, o_name VARCHAR(10), o_number INT);CREATE TABLE Replica (r_pk INT PRIMARY KEY, r_name VARCHAR(10), r_number INT);
CREATE PROCEDURE usp_SyncReplica ASMERGE Replica
USING Original ON o_pk = r_pkWHEN MATCHED
AND (o_name != r_name OR o_number != r_number) THEN
-- Row exists but data differsUPDATE SET r_name = o_name, r_number =
o_numberWHEN SOURCE NOT MATCHED THEN
-- Row exists in Replica but not OriginalDELETE
WHEN NOT MATCHED THEN -- Row exists in Original but not Replica INSERT VALUES (o_pk, o_name, o_number)
OUTPUT $action, inserted.r_pk, deleted.r_pk;
Example: UPSERT – SQL 2005CREATE TABLE MyTable(pk INT PRIMARY KEY, name VARCHAR(10), number INT);
CREATE PROCEDURE Legacy_Upsert_1 @pk INT, @name VARCHAR(10), @number INT
ASUPDATE MyTable SET name = @name, number = @number WHERE pk = @pk-- Row is updated even if all the values are correct
IF (@@ROWCOUNT = 0)INSERT MyTable VALUES(@pk, @name, @number)-- If row did not exist, a second statement execution is required
CREATE PROCEDURE Legacy_Upsert_2 @pk INT, @name VARCHAR(10), @number INT
AS-- Updating only if any column needs to be changed requires an extra statementIF EXISTS (SELECT 1 FROM MyTable WHERE pk = @pk)
UPDATE MyTable SET name = @name, number = @numberWHERE pk = @pk AND (name <> @name OR number <>
@number)ELSE
INSERT MyTable VALUES(@pk, @name, @number)
Example: Merge mit SQL Server 2008CREATE PROCEDURE Merge_Upsert
@pk INT, @name VARCHAR(10), @number INTAS
MERGE MyTable tUSING (SELECT @pk AS pk, @name AS name,
@number AS number) sON t.pk = s.pkWHEN MATCHEDAND (t.name <> s.name OR t.number <>
s.number) THENUPDATE SET name = s.name, number =
s.numberWHEN NOT MATCHED THEN
INSERT VALUES (pk, name, number);
Beispiel: Aktienhandel CREATE TABLE Stock (Stock VARCHAR(10) PRIMARY KEY, Qty INT CHECK (Qty > 0));CREATE TABLE Trades (Stock VARCHAR(10) PRIMARY KEY, Delta INT CHECK (Delta <> 0));
INSERT Stock VALUES('MSFT', 10), ('BOEING', 5);INSERT Trades VALUES('MSFT', 5), ('BOEING', -5), ('GE', 3);
MERGE Stock as SUSING Trades as TON S.Stock = T.StockWHEN MATCHED AND (S.Qty + T.Delta = 0) THEN
DELETE -- delete stock if entirely soldWHEN MATCHED THEN
-- delete takes precedence on updateUPDATE SET S.Qty += T.Delta
WHEN NOT MATCHED THENINSERT VALUES (Stock, Delta);
-- BOEING is deleted, GE inserted, MSFT updated
Inkrementelle Verarbeitung
Das Schlüsselwort heißt Change Data Capture
Nur geänderte Datensätze werden verarbeitetSteht im SQL Server 2008 zur Verfügung
Kann natürlich auch für SSIS genutzt werden
Dumpfiles innerhalb von SSIS
Schalter bei DTExec und DTExecUI/Dump
Erzeugt immer einen Dump bei einem Fehler
/DumpOnErrorErzeugt nur einen Dump bei einem oder mehreren bestimmten Fehlern
Eintrag in der RegistryDump wird in zwei Formaten erzeugt
*.mdmp – binäres File für den Microsoft Support*.tmp – textbasierter Dump
Dumpfiles innerhalb von SSIS
Gleiche Technik wie Dr. WatsonDer Microsoft Support kann jetzt wirklich schnell helfen
Für schwierige FälleBeim ResourcenverbrauchBei logischen ProblemenBei hartnäckigen Problemen mit der Laufzeitumgebung
Das Dumpfile legt Ihre Geheimnisse auf den Tisch
Dumpfile in SSIS
Dumpfile wird unter %ProgramFiles%\Microsoft SQL Server\100\Shared\ErrorDumps abgelegt
*.tmp Format ist Text*.mdmp für den Microsoft Support
Informationen überEnvironmentDynamic-Link LibrariesLetzten Meldungen aus einem Ringpuffer
Zusammenfassung
Es hat sich mehr getan, als man glaubt
SSIS profitiert von Erweiterungen in der Relationalen Datenbank
Change Data CaptureMerge
Jede Menge „unsichtbare“ Verbesserungen
Optimierter DatenflussDumpfile
Sichtbare ÄnderungenVerbesserungen bei der Suche TransformationNeue Scriptumgebung…..
Sie sind nicht alle …
SQLPass e.V Deutschland
http://www.sqlpass.de
Ask the ExpertsWir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.
Mehr Informationen
Microsoft BIwww.microsoft.com/bi
SQL Server Integration Services http://www.microsoft.com/sql/technologies/integration/default.mspx
Guided Tours for SSIS http://www.microsoft.com/sql/technologies/integration/tours.mspx
Technical Portal for SSIS http://www.microsoft.com/technet/prodtechnol/sql/2005/technologies/ssisvcs.mspx
Developer Portal for SSIS http://msdn2.microsoft.com/en-us/sql/aa336312.aspx
ResourcesTechnical Communities, Webcasts, Blogs, Chats & User Groupshttp://www.microsoft.com/communities/default.mspx
Microsoft Developer Network (MSDN) & TechNet http://microsoft.com/msdn http://microsoft.com/technet
Trial Software and Virtual Labshttp://www.microsoft.com/technet/downloads/trials/default.mspx
Microsoft Learning and Certificationhttp://www.microsoft.com/learning/default.mspx
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.