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


  • Amikor az UpdatePanel nem működik

    Dávid Zoltán Egyik webalkalmazás kezdőlapján több (három) lapozható lista is van. Mindegyiket LinkView-val valósítottuk meg. Felmerült az igény, hogy ezek a listák egymástól és az oldaltól függetlenül, aszinkron módon lapozhatóak legyenek. Elvileg erre való az UpdatePanel. Mindhárom listát be is burkoltam egy-egy UpdatePanelbe, ekkor jött a meglepetés: két lista szépen az UpdatePanelen belül lapozódott csak, míg a harmadik minden esetben teljes postbacket csinált és újratöltötte a teljes oldalt. Kicsit mérgelődtem és kattintgattam, ezalatt “elromlott” egy újabb lista is: így már kettőből csak egy volt hajlandó aszinkron újratöltődésre. Mindeközben a TFS-ben az oldalak ID-talanítása... Tovább »
  • Tábla típusú paraméterek használata ASP.NET-ben

    Balássy György (MS RD, ASP.NET MVP, MCTS) Egyre gyakrabban merül fel az igény, hogy egy SQL lekérdezés egyik paramétereként azonos típusú, ám ismeretlen számú értéket kell átadnunk. Például egy terméket CheckBoxList segítségével több csoportba sorolhat a felhasználó vagy épp egy keresésnél választhatunk több kategória közül. Az SQL Server korábbi verzióinál tipikusan úgy oldottuk meg ezt a feladatot, hogy az értékeket egyetlen string változóban adtuk át, melyben XML vagy egyszerű separator karakterekkel elválasztott értékek szerepeltek. Az SQL Server 2008-tól kezdve viszont már közvetlenül adhatunk át tábla típusú paramétert is. 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