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: ,


  • Lopjunk sütit a böngészőtől

    Balássy György (MS RD, ASP.NET MVP, MCTS) Egy .NET-es alkalmazásból a WebRequest osztály segítségével bármikor indíthatunk HTTP kéréseket egy weboldal felé. Ha a weboldal bejelentkezést igényel, akkor a webalkalmazás a szokásos módon cookie-k segítségével fogja megoldani az állapotkezelést, és a kliensre hárul a feladat, hogy a cookie-t minden kérésnél visszaküldje a szerverre. Ha a felhasználó böngészőből és a kliens alkalmazásból is eléri az alkalmazást, akkor sajnos kétszer kell bejelentkeznie, amire csak az lehet a megoldás, ha képesek vagyunk a böngésző által eltárolt sütit megszerezni. Tovább »
  • A C# szépségei

    Kővári Bence Azt gondolod ismered a C#-ot? Bizonyíts! Helyezd el az alábbi smiley-kat érvényes, fordítható C# kódban. A megoldáshoz sem stringeket, sem kommenteket nem használhatsz! A feladványok fentről lefele nehezednek, mindegyik feladat megoldható C# 3.0-ában. 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