Tema: MSSQL Skriptu generavimas programiskai
Autorius: Jornada Del Muerto
Data: 2011-11-20 14:41:42
Sveiki,

    Susidurus su MSSQL 2008 ( codename Katmai ) ir MSSQL 2008R2 (  codename Kilimanjaro ) backupu nesuderinamumu  - ta prasme R2 backupo neina restorint ant paprasto 2008 MSSQL.. Kilo ideja parasyt DB klonavimo programele. Tiesiog dirbant tenka kartais klonuoti kazkokia DB, o vargas su versijoms visiskai nedomina, transaction logai jokie neaktualus, nes tokios db arba deploymentui arba testavimui - o tada vien skriptu neuztenka reik ir duomenu (kaip pvz. dabar taisau vieno programerio bugus vienoj sistemoj kur bugas ivyksta tik esant daug duomenu, bet va negaliu susdet pas save backupo)... 

    Del to pamasciau padaryt simple softa kuris generuotu klonavimo faila ir pagal ji kurtu visai nauja db ir kad nebutu jam skirtumo ar tai MSSQL 7 ar MSSQL 2012 jei nieko sustro budingo naujai versijai nenaudota - kas buna daugeliu atveju.

    Vat reik metodo kaip programiskai kuo universaliau kas del skirtingu mssql versiju isgeneruoti skriptus, praktiskai net indeksai siuo atveju antraeilis dalykas, svarbiausiai (prioriteto tvarka nuo svarbesnio pradedant):

    1. db tables struktura;
    2. views;
    3. procedures/functions;
    4. Object level permissions (grant'ai);
    5. Triggers;
    6. na ir user defined data types, nors to pats nenaudoju :)

    Tai va gal kas gali patarti per kuria puse kapstyti kaip sugeneruoti juos ? 

    1. Gal per koki SQL DMO? 
    2. Ar geriau per kokius nors system table'us eiti? 
    3. O gal per OleDb subsistema aka OleDbConnection::GetOleDbSchemaTable?

    Jei per tables gali but bedos su skirtingom versijom speju ? Beje  3 variantui turiu susikures visa sistema, bet nelabai naudojau po to, teko tik rodos su MS Accesu ar Excel dirbant kazkada siek tiek naudoti.



P.S. Bet tai xytras microsoftas, iki siol visu db backupai susiderindavo, o dabar padare tycia taip kad uzraukti visas senesnes DB, juk developeris pas save nekish MSSQL 7.00 vien tam kad galetu laisvai deployint kur nori savo db... o desis koki nors MSSQL 2008 o gal net 2012 (maciau jau snekta yra apie toki). http://sqlserverbuilds.blogspot.com/ o tokiu budu apmazins M$ visokiu senu versiju Express/MSDE naudojima, toki softeli parasius jam geras antausis butu ;)