SQL Server Integration Services Adattárházak betöltése és más adatmozgatások Hangyál Zoltán zoltan.hangyal@netacademia.net Oktató NetAcademia
SQL Server Integration Services (SSIS) SQL Server komponens Data Transformation Services (DTS) utódja Arra használható, hogy adatokat mozgassunk vagy transzformáljunk fájlok, illetve adatbázisok között Fejlesztési környezete a Business Intelligence Development Studio (BIDS)
Hol találkozhatunk SSIS-el SQL Server Management Studio varázslói Import data Export data Copy Database Maintenance Plans Business Intelligence Development Studio Integration Services Project
SSIS Project Visual Studio-ba beépülő bővítmény Business Intelligence Development Studio néven A project tartalmazhat egy vagy több SSIS csomagot (package) Minden csomag önálló futtatási, telepítési egység, amit varázslóval összekattintgathatunk, grafikusan megtervezhetünk, de akár programozottan is létrehozhatunk
SSIS csomagok tárolása A forráskód xml-ben Könyvtárstruktúrába szervezhető Tárolási lehetőségek Fájlrendszeren belül akárhol SQL Server Package Store SQL Server msdb adatbázis
Terméktörzs betöltésével kapcsolatos követelmények Az adatok egy text fájlban vannak Az adatokat nem kell transzformálni csak betölteni őket Az SQL táblát minden betöltés előtt ki kell üríteni
Terméktörzs betöltése Betöltés varázsló segítségével szövegfájlból
SSIS csomagok elemei Control Flow: a betöltő csomag folyamatábrája Data Flow: adattranszformáció Connection Managers: adatforrások és célok Variables: paraméterezési lehetőségek Package Explorer: betöltő csomag tartalma
Control Flow Feladatok egymás utáni vagy párhuzamos végrehajtása (workflow) Task: valamilyen feladat végrehajtási egysége Container: csoportosítás lehetősége, tartalmathat több task-ot vagy további Precedence Constraint: A feladatok végrehajtási sorrendjét szabályozza. A megelőző feladat futásának és/vagy feltételeknek megfelelően
Data Flow Task Control flow feladat, adatáttöltés egysége Data Source: adatok forrása Transformation: adattranszformációk Data Destination: adatok célja Data Viewer: adatok nyomkövetési lehetősége Data és Error Path: hibakezelési lehetőség
Data Flow Task (2) Data Flow Task az adatáttöltésekre Extract Transform Load
Data Flow Sources Forrás adatok kinyerése Relációs táblákból és nézetekből Fájlokból Analysis Services adatbázisok Nincs bemenetük, csak kimenetük
Data Flow Destinations Adatok betöltése Relációs táblákba és nézetekbe Fájlokba Analysis Services adatbázisokba DataReaderekbe vagy Recordsetekbe Nincs kimenetük, csak bemenetük
Data Flow Transformations A forrásokat kötik össze a célokkal Általában 1 be és 1 kimenettel rendelkeznek Az adataink tetszőleges átalakítására alklamazzuk őket A nyilak az adatáramlás irányát mutatják A zöld nyíl a hiba nélküli, a piros a hibás adatfolyam
Transzformációk Több bemenet vagy több kimenet Egysoros transzformációk Többsoros transzformációk Több bemenet vagy több kimenet
Connection Managers Bármilyen adatforrásra mutathatunk velük (MS SQL, Oracle, DB2) Segítségükkel könnyen lehet a tesztkörnyezetből az éles környezetre váltani, ahol más a szerver neve, más a fájlok elérési útja Csomagon belül tárolódik, nem lehet megosztani csomagok között
Variables Rendszer vagy felhasználói A csomag futása során tárolhatunk le bennük adatokat Segítségükkel dinamikussá tehetjük a csomagok futását Hatókörrel rendelkeznek!
Vevőtörzs betöltésével kapcsolatos követelmények Az adatok forrása Excel 2007-es fájl A betöltött adatokról tudni kell ki, mikor, honnan töltötte be őket A cél helyen a vevő neve 1 oszlopban legyen Az betöltés során keletkezett üres sorokat ki kell szűrni Az adatok két külön helyről jönnek ugyanolyan struktúrában A vevő adatai változhatnak Csak akkor induljon el a betöltés, ha a fájlok rendelkezésre állnak
Vevőtörzs betöltése Betöltés kézzel varázsolva Excel fájlból
Tipikus adat betöltési problémák Szövegfájl Kódlap / Unicode Formátum Delimited / Fixed width Szöveghatároló jel Sorvége jel Tizedesvessző Excel Nincs adattípusa, az első néhány sor után dönti el az SSIS az adattípust, ha nem egyezik az adattípus, akkor NULL érték jelenik meg a táblában Az utoljára használt sorig importál
Paraméterezési lehetőségek Változók segítségével (Variables) Kifejezések segítségével (Expressions) Csomag konfigurálás (Package Configurations) BIDS Helper segít láthatóvá tenni hogy melyik komponensnek van paraméterezett része
Értékesítési adatok betöltésével kapcsolatos követelmények Az adatok forrása Excel 2007-es fájl A vevők és a termékek neve szerepel a forrás fájlban, amit át kell fordítani vevő és termékkódra Az adatok havonta új fájlban vannak, a fájl neve utal az évre és a hónapra Esetenként előfordulhat, hogy a vevő nevét elírják, ebben az esetben meg kell próbálni a hasonló nevű vevők közül beazonosítani a vevőt
Internetes értékesítek betöltése Betöltés több fájlból
SSIS csomagok kezelése Létrehozás, szerkesztés és nyomkövetés SQL Server Business Intelligence Development Studio SQL Serverben tárolt csomagok futtatása, jogosultságkezelés, jelenleg futó csomagok SQL Server Management Studio Parancssor Futtatás Dtexecui (32, 64 bites változat) Dtexec (32, 64 bites változat) Import-export dtutil (csak 32 bites változat)
Ütemezett futtatás Időzítés SQL Server Agenttel Nem kell az Agentet futtató felhasználónak mindenre jogosultságot adni, helyette Proxy-t kell használni (SISS Package Execution) Credential: Windowsos felhasználó, az SQL-en kívüli adatok eléréséhez, felhasználónév és jelszó szükséges
Futtatás Futtatás parancssorból és időzítetten SQL Server Agenttel
SSIS-sel megoldható feladatok Adatok importálása-exportálása Több különböző adatforrásból származó adatok egységesítése Adattárházak feltöltése Adattisztítás és adatkonverzió Rendszergazdai feladatok (karbantartási tervek) végrehajtása
Hasznos oldalak https://www.netacademia.net/tudastar http://msdn.microsoft.com/hu-hu/sqlserver/cc511477(en-us).aspx http://msdn.microsoft.com/en-us/library/cc645993.aspx http://www.sqldts.com http://www.sqlis.com http://wiki.sqlis.com/default.aspx http://www.codeplex.com/MSFTISProdSamples http://www.codeplex.com/bidshelper http://blogs.msdn.com/mattm/default.aspx http://blogs.conchango.com/jamiethomson/default.aspx http://blogs.msdn.com/michen/default.aspx http://agilebi.com/cs/blogs/jwelch/default.aspx http://ssisblog.replicationanswers.com http://bi-polar23.blogspot.com/search/label/SSIS http://rafael-salas.blogspot.com/feeds/posts/default http://www.ssistalk.com http://msdn2.microsoft.com/en-us/library/ms169917.aspx