Az oldal megtekintéséhez kérjük, engedélyezze a JavaScriptet.

sERPa súgó

FIGYELEM! Ennek a lehetőségnek a használata NEM része a terméktámogatott programrészeknek, mindössze segítséget szeretnénk nyújtani vele az egyedi megoldások egyszerűbb megvalósításához.

A Microsoft SQL Server Management Studio (SSMS) lehetőséget nyújt arra, hogy egyszerűen lehessen táblákat és adatokat felvenni egy adatbázisba, majd ezt később akár módosítani is. Ennek használatát inkább haladó felhasználóknak javasoljuk, akik már rendelkeznek alapvető SQL ismeretekkel és megfelelő jogosultsággal az adatbázishoz. Azt, hogy mire lehet alkalmas ez a lehetőség, egy egyszerű példán keresztül mutatjuk be. A használat során rendkívül  fontos, hogy az alábbi leírásban taglalt, külön kiemelt szabályok be legyenek tartva, ezért kérjük, hogy elejétől a végéig olvassák el az alábbi leírást!

A példa:
A képzelt cég az ügynökei számára értékesítési terv adatokat határoz meg és szeretné ezek teljesülését, azaz a tény adatokat ezzel összehasonlítani. Ezeknek a terv adatoknak a sERPa-ban történő rögzítésére jelenleg nincs lehetőség (de ha lenne sem biztos, hogy pont olyan struktúrában lehetne megtenni, ahogyan ez a cég szeretné), a tény adatok viszont ott vannak a sERPa adatbázisban. Tehát a legfontosabb tennivaló az, hogy ezeket a terv adatokat valahogy bevigyük az adatbázisba és ehhez nyújt segítséget ez a most bemutatásra kerülő SSMS importálási lehetőség.

Első lépés: A tábla elkészítése és rekordokkal való feltöltése
Először is szükségünk lesz egy Excelben összeállított adathalmazra, mely a terv adatainkat tartalmazza. Az Excellel kapcsolatosan támasztott követelmények:
- Ki kell gondolni, mik a szükséges adatok, tehát meg kell tervezni mit kell tartalmazzon az Excel,
- Az első sorban a leendő tábla mezőneveit kell szerepeltetni, kerülve az ékezetes karaktereket és az elválasztó jeleket,
- A rekordokat tartalmazó mezőket az adattípusnak megfelelőre kell formázni,
Mindez az alábbi példában szemléltetve: (a példa arról szól, hogy negyedéves viszonylatban, termékkategóriánként és ügynökönként határozunk meg értékesítési terv számokat)
- A DatumTol és a DatumIg mezők dátum formátumúak kell legyenek,
- A TKategoria (termékkategória név alapján fogjuk később elemezni a forgalmakat) és Ugynok mezők általánosra formázva is megfelelnek (az SSMS fel fogja ismerni hogy szöveg) de szövegre formázva még biztosabb az eredmény,
- A TervForgalom pedig számra kell legyen formázva,
- A füzetlap neve hasznos, ha a leendő tábla nevével egyezik, mert később nem kell ezt külön beállítani / megadni.

 

 

Az Excel tartalmának importálása az adatbázisba:
Az SSMS-ban - azon az adatbázison állva, amelybe az adatokat szeretnénk beimportálni - jobb egérgombbal feljön egy menü, ahol Tasks > Import Data pontot kell választani:
 

 

Az így elinduló varázsló számtalan lehetőséget nyújt, de nem célunk itt, hogy mindet taglaljuk, csak a fenti példa végigvezetésére koncentrálunk:
 

 

A Next gomb megnyomása után kiválasztjuk, hogy Excel táblából fogjuk az adatokat felolvasni és a mezők nevei az Excel első sorában találhatók:
 

Ezt követően a legfrissebb Native Client -t kiválasztva (jelenleg ez a 11) meg kell adni az adatbázis hozzáférést és az adatbázist. Ha a varázslót onnan indítottuk, ahova importálni kell, akkor ezt a program be is ajánlja.

 

 

A továbblépés után ki kell jelölni az adatok bemásolását:

 

 

A következő lépésben a varázsló felolvassa az Excelt és az alapértelmezett dbo sémát kínálja fel a táblához, de ezt TILOS HASZNÁLNI! Ez a sERPa tábláinak alap sémája, ezért ezt használva súlyos problémák adódhatnak. Ez helyett azt kérjük, hogy ennek a lehetőségnek a használata során egységesen az SQLImp sémát adják meg, ezt a sémát a program fejlesztése során garantáltan nem fogjuk használni, így kizárható a program tábláival való ütközés.

Ebben az ablakban a lenyíló mezőbe kattintva a dbo sémát kötelezően át kell írni SQLImp -re. A tábla neveként az Excel munkafüzetlap nevét ajánlja fel a program és a végére egy $ jelet tesz. A táblanév szabadon módosítható.

Az ablakban a program által felajánlott állapot így néz ki:

 

 

 Átírás után látható a használandó séma és a $ jel törlésre került a táblanév végéről:

 

 

 Az Edit Mappings gombbal megtekinthető milyen mezők milyen adattípussal kerülnek majd a táblába: ***

 

 

A Next gomb megnyomása után futtatandó a fentebb összeállított és ellenőrzött tábla létrehozás:

 

 

A következő ablakban egy összefoglalót kapunk:

 

 

Ez után lefut a tábla generálása, majd annak az Excelben megadott adatokkal való feltöltése:

 

 

A megszületett eredmény szükség esetén egy egyszerű SELECT -el ellenőrizhető:

 

 

Ezzel elértük azt, hogy a terv adataink bekerültek a sERPa adatbázisába. Ahhoz, hogy ezt a tény adatokkal össze tudjuk hasonlítani, az Eredményhalmaz funkciót használhatjuk. Ahhoz azonban, hogy eredményhalmazban a fentiek során megadott terv adatokkal dolgozni lehessen szükséges, hogy ebből a táblából (a példában SQLImp.UgynokTerv) SQL adatforrást készítsünk. Ennek folyamata:
A funkciót elindítva, felvétel üzemmódban elkészítjük a tábla adatforrást. A Név és a Szülő szabadon választott megadásán kívül a képen látható értékeket kell beállítani, a táblanév a kérdőjelre kattintva könnyen kiválasztható.
A képen pirossal kiemelt rész egy újabb kifejezett kérés a sERPa fejlesztés részéről, hogy probléma esetén azonnal látható legyen, hogy NEM a Progen által fejlesztett táblával van dolgunk..A leírás részben tehát feltétlenül legyen ez feltüntetve, például a "SSMS adat importtal készült tábla." szöveg tökéletesen megfelel erre.

 

 

 Az Általános fül kitöltése után az Eredmény fülre kattintva az Eredmény mező kitöltése művelettel könnyedén feltölthető a táblázat:

 

 

 Jelen esetben látható, hogy a program két mező esetén nem ismerte fel az adattípust, ezeket ilyenkor meg kell még adni.
 Ha az Edit Mappings gombot nem nyomtuk meg a folyamat során, vagy nem emlékszünk arra, hogy milyen típust adott az SSMS a mezőnek, akkor SSMS-ben a táblát beírva, azt kijelölve az ALT+F1 gombokkal ez kikereshető:

 

 

 Ez alapján kitöltve az adattípust, már csak le kell menteni az elkészített egyéni SQL adatforrást.

 

 

 Többek közt a megfelelő adattípus kiválasztására is értettük azt, hogy ennek a funkcionalitásnak a használatához alapvető SQL ismeretek szükségesek, mert ennek a leírásnak nem célja ezt taglalni.

 

Immár elkészíthető a terv tény adatokat összehasonlító Eredményhalmaz, melynek leírása szintén nem célja ennek a topiknak, de tanács és kérés is van velük kapcsolatban.
Ahogy az Adatforrásnál Itt is kérés, hogy a leírásban szerepeljen, hogy NEM a Progen által fejlesztett táblával (is) van dolga az eredményhalmaznak. Ezen felül egy rövid leírásra is szükség van, hogy mit csinál az eredményhalmaz, ez sokat segíthet támogatáskor, fejlesztői hibakereséskor.

 

Második lépés - amennyiben szükséges: ***

Amikor a tábla már létezik, de módosítani kell a tartalmát, akkor az új adatokat tartalmazó Excelt úgy kell beimportálni, hogy a séma (SQLImp) és a táblanév beállítása után az Edit Mappings gombot követően megjelenő alábbi ablakban ki kell pipálni ezt a mezőt:
 (látható az is, hogy a program észreveszi hogy létezik a tábla és a Create már nem is választható)

 
 

 Ilyenkor a táblában meglévő sorok törlésre kerülnek, majd feltöltődnek az Excelben aktuálisan szereplő új adatokkal.
 Természetesen elvárás, hogy az Excel fejléce (mezők) és a mezőkben szereplő értékek adattípusai ugyan azok legyenek, amivel a táblát korábban létrehoztuk.

 Az ellenőrző SELECT eredménye megmutatja, hogy most már a második félévi terv adatok is bekerültek a táblába:

 

 

A jelen példával kapcsolatban érdemes észrevenni, hogy a termékkategóriát és az ügynököt is csak névvel vettük fel ebbe a terv táblába. Ez egyrészt azért érdekes, mert ilyenkor az erre támaszkodó eredményhalmazban is név egyezést kell beállítani az adatforrás kapcsolatoknál. Ez a név egyezés vizsgálat a teszteléseink során nem mutatott érdemi sebességromlást, de nagyobb adathalmazon mindenképpen érdemes ID-ket (is) a táblákba tenni és az eredményhalmazban az ID-k összekapcsolását használni a név helyett.

 

Harmadik lépés - amennyiben szükséges:
Lehetőség van annak beállítására is, hogy a szerver időszakosan, automatikusan felolvassa az Excelt és frissítse a tábla rekordjait. Ezt egy speciális Job-al lehet elérni. A tapasztalataink azt mutatták, hogy roppant érzékeny az aktuális szoftveres és jogosultsági körülményekre. Ezek számossága akkora, hogy szinte lehetetlen ezek mindegyikét szimulálni, így ez nem is volt célunk. Abban tudunk segítséget nyújtani, hogy milyen feltételek mellett működik és milyen működést gátló tényezőket sikerült feltárnunk.
Az első és legfontosabb, hogy az Excelnek olyan helyen kell lennie, amit a Job futtatása során a szerver elér és a szerveren kell legyen Excel. Természetesen a korábban elkészített táblával egyező mezőket és azokon belüli adattípusokat kell tartalmazzon.

A Job beállításhoz szükségünk lesz egy, az SSMS-ből mentett (dtsx) fájlra. Ennek a fájlnak tartalmaznia kell a pontos teendőt, ezért akkor kell elkészíteni, amikor a tábla már létezik és az adat importálás során a *** bekezdésben taglalt szakaszba juthatunk, azaz a tábla rekordjainak törlése és újratöltése a folyamat. A fájl mentéséhez ebben az ablakban a két pirossal jelölt mezőt is be kell állítani:

 

 

Fontos, hogy ezt a dtsx fájlt is olyan helyre tegyük, ahol a szerver hozzáfér: (javasoljuk, hogy a C:\ -be egy külön mappába kerüljön)

 

 

A Job beállítása: (csak a lényegi részt mutatjuk be)
A Steps -ben egy ilyen új lépést kell felvenni: (fontos a típus és dtsx fájl kitallózása)
 
 

 

Jellemzően előforduló hibák:
- Az Excel mezőinek adattípusa helytelen, vagy oszlopon belül nem homogén. Például ha a rekordok egy része szám, másik része szöveg, akkor az Excel ezeket eltérő adattípusként fogja formázni, fontos tehát, hogy ilyen esetben mindenképpen közös cellaformátumot kell rájuk beállítani,
- Frissítéskor (amikor a Job fut) nem lehet nyitva az Excel,
- Az SQL szerver és az Excel eltérő, az egyik 64, a másik 32 bites. A tesztelés során az SQL szerver 64 bites volt és az Office-t is 64 bitesre kellett frissíteni annak érdekében, hogy a Job hiba nélkül lefusson,
- Az Excel és a dtsx fájt az SSMS nem találta meg, vagy jogosultság miatt nem tudta felolvasni például az asztalról, illetve a C:\Program Files\Microsoft SQL Server mappából sem. A C:\ -be felvett új, tetszőlegesen elnevezett mappából már rendben működött.