SQL backup dátum formázással parancssorból

Szervert frissítettünk és úgy határoztunk, hogy nem csak a webszervert cseréljük le IIS7-re, hanem az adatbázis kiszolgálót is SQL Server 2008. Ezek után nem volt mit tenni, a backup szkripteket is illett migrálni, hiszen az osql.exe már egy ideje feketelistán van.

Korábban az osql.exe segítségével futtattuk a backup szkripteket, ami bár működik SQL Server 2008-on, csakhogy már egy ideje ez szerepel róla a Books Online-ban:

This feature will be removed in a future version of SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use the feature. Use sqlcmd instead. For more information, see sqlcmd Utility.

A jó hír az, hogy a két eszközt szinte ugyanúgy kell paraméterezni, legalábbis a nálunk használt –S, –d, –E és –Q paraméterek egyeztek, tehát éppen csak az .exe nevét kellett átírni.

Mivel a backup fájl nevébe a dátumot is szeretjük beleírni, ezért használtunk egy külső .vbs fájlt, ami a mai dátumot fájlnév-barát módon előállítja. Most kis szerencsével sikerült meglelni azt a megoldást, amivel ezt közvetlenül .cmd fájlból megtehetjük. Az alábbi példában a :generate-timestamp címke utáni rész a %timestamp% változóba beleírja a mai dátumot ebben a formában: 20081020_1623. Mivel valójában sztring parszolásról van szó, érdemes rá odafigyelni, hogy ez csak akkor fog jól működni, ha a szerveren magyar területi beállítások vannak.

    @echo off

    call :generate-timestamp
    echo Timestamp: %timestamp%
    pause
    goto :EOF

    :generate-timestamp
    set now_date=%date%
    set now_time=%time%
    set now_Year=%now_date:~0,4%
    set now_Month=%now_date:~5,2%
    set now_Day=%now_date:~8,2%
    set now_Hour=%now_time:~0,2%
    set now_Min=%now_time:~3,2%
    if "%now_Hour:~0,1%"==" " set now_Hour=0%now_Hour:~1,1%
    set timestamp=%now_year%%now_month%%now_day%_%now_hour%%now_min%
    goto :EOF

    :EOF

Aki substring, index vagy hasonló függvényekre számított, az velem együtt csalódott egy kicsit, de azért örüljünk, hogy meg lehet csinálni. Csak egy kicsit Perl-szerű érzés akarmi.Substring(0,4) helyett %akarmi:~0,4%-et írni  :)


Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2008.10.20. 18:20:20 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • Letölthető lesz a .NET Framework forráskódja

    Balássy György (MS RD, ASP.NET MVP, MCTS) Nagyon kellemes érzés tud lenni, amikor az ember mások előtt kap meg információkat, de ugyanakkor nagyon bosszantó is tud lenni, hogy az NDA miatt nem mondhatja el senkinek :( Az szintén bosszantó, ha arra kell várni, hogy valaki más hivatalosan lelője a poént, mint ahogy történt most is Scott Guthrie blogjában :( Tovább »
  • Unknown error 0x80072f78

    Balássy György (MS RD, ASP.NET MVP, MCTS) Az eszem megáll, hogy 2008-ban még mindig vannak ilyen hibaüzenetek! Semmi leírás, csak egy HRESULT, aztán kezdj vele, amit akarsz. Ez éppen Windows Mobile 6.1-en jött elő, amikor megpróbáltam Pocket Internet Explorerből az ActiveSync desktop pass-through kapcsolatán keresztül elérni az internetet. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások