2009. december havi bejegyzések

SQL Server admin felvétele utólag

Az SQL Server 2008 telepítője rákérdez, hogy mely felhasználóknak szeretnénk az adatbázis kiszolgálóban sysadmin jogokat adni. Ha a telepítés során ezen a képernyőn egy lezser Next-tel átsiklunk, akkor hiába fog elindulni a szolgáltatás, hiába lesz hozzá SQL Server Management Studionk, nem fogunk tudni kapcsolódni hozzá. Szerencsére van hátsó ajtó!

Először is állítsuk le az SQL Serverünket, majd navigáljunk el abba a mappába, ahol a szolgáltatáshoz tartozó exe található és indítsuk el manuálisan single user mode-ban (“m”, mint single user, teljesen logikus ;-):

 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\
 MSSQL\Binn>sqlservr.exe –m

Ha az áldozat egy SQL Express, akkor át kell navigálnunk az ő mappájába és még a parancssorban is meg kell adnunk az instance nevét:

 C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\
 MSSQL\Binn>sqlservr.exe -m –s SQLExpress

A single user mode előnye, hogy ilyenkor a helyi Administrators csoport tagjai tudnak csatlakozni a kiszolgálóhoz, a hátránya viszont, hogy az SQL Server Management Studio nem minden szolgáltatása működik tökéletesen vele. Marad tehát a parancssor, méghozzá egy másik ablakban (mert az előző ablakban futva marad az SQL Server), Run as administrator jogosultsággal. Csatlakozzunk a kiszolgálóhoz:

 sqlcmd -S . –E

Vagy:

 sqlcmd -S .\SQLExpress –E

A –S után tudjuk megadni az instance nevét, a –E pedig Windows hitelesítést jelent.

Hozzunk létre egy logint:

 1> CREATE LOGIN [TARTOMÁNY\felhasználónév] FROM WINDOWS   
 2> GO

Tegyük bele a sysadmin szerepkörbe:

 1> EXEC sp_addsrvrolemember @loginname='TARTOMÁNY\felhasználó', 
 @rolename='sysadmin' 
 2> GO

Állítsuk le a szervert:

 1> SHUTDOWN 
 2> GO

Majd indítsuk el a szokásos módon:

 net start mssqlserver

vagy:

 net start mssql$sqlexpress

Ezek után már fogunk tudni kapcsolódni a szerverhez SQL Server Management Studioból.

Egy jótanács: mielőtt a fentieket végigjátszuk, próbáljuk meg a Management Studiot Run as administratorként indítani, mert ha egy kicsit is észnél voltunk a telepítésnél, akkor legalább a helyi Administrators csoportot felvettük a sysadmin szerepkörbe. Ez az, amit én ma hajnalban megint elfelejtettem, aminek eredményeként például ez a cikk is megszületett.

ASP.NET AJAX 4: Content Delivery Network és ScriptManager

Korábban már említettem, hogy a Ajax Library-hez tartozó JavaScript fájlokat a Microsoft közzétette a saját Content Delivery Networkjén. Ráadásul nem csak az Ajax Library split script fájljai és a jQuery Library, hanem a System.Web szerelvényben található hagyományos WebForms szkriptek is felkerülnek a CDN-re. Mindez felturbózva a ScriptManager új lehetőségeivel teljesen szabályozhatóvá teszi, hogy pontosan milyen szkript hivatkozások renderelődnek az oldalunkba.

Néhány ScriptManager újdonság és kevésbé ismert funkció:

  • Az EnableCdn tulajdonság állítgatásával egy pillanat át tudjuk állítani az alkalmazásunkat, hogy a Microsoft CDN-ről töltse a JavaScripteket és ne a mi szerverünk sávszélességét terhelje.
  • Az AjaxFrameworkMode tulajdonság Enabled/Explicit/Disabled értékeivel finoman hangolhatjuk, hogy pontosan mely szkriptek töltődjenek be az oldalon.
  • A ScriptReference elem Name, Assembly és Path tulajdonságaival felüldefiniálhatóak a beépített szkriptek, és ez most már a System.Web szerelvényhez tartozó szkriptekre (pl. WebUIValidation.js) is működik.
  • A CompositeScript elem segítségével az egyes ScriptReference elemekben megadott fájlokat a ScriptManager képes egyetlen fájlba összegyúrni és egyetlen HTTP válaszban leküldeni a böngészőnek.
  • A CompositeScript Path tulajdonságának megadhatjuk egy előre létrehozott statikus fájl útvonalát, éppúgy, mint a ScriptReference elemeknek.
  • A ScriptReference elem Assembly attribútumában többé nem kell fully qualified assembly name-et használnunk, elég például annyi, hogy “System.Web”, a Version, Culture és PublicKeyToken értékektől eltekinthetünk. Cserébe a hivatkozott szerelvénynek ott kell lennie a bin mappában, vagy legalább a web.config <assemblies> szekciójában hivatkoznunk kell rá, mert a GAC nem elég egyértelmű.
  • A ScriptManager.ScriptResourceMapping tulajdonságával kódból definiálhatjuk bármelyik szkriptünk Path, DebugPath, CdnPath és CdnDebugPath tulajdonságait.
  • A ScriptManager ScriptMode attribútumában megadhatjuk, hogy a Release szkriptek töltődjenek le a szerverről.
  • A ScriptManager LoadScriptsBeforeUI attribútumát false értékre állítva a szkript hivatkozásokat az oldal aljára helyezhetjük, így jobb felhasználói élmény érhető el.

Jelenleg a következő szkriptek találhatóak a CDN-en:

  • ASP.NET AJAX Library 3.5: az ASP.NET 3.5-ben használatos MicrosoftAjax.js fájl tölthető innen is.
  • Microsoft Ajax Library 4.0 (valószínűleg ez lesz az új branding): jelenleg a novemberi béta érhető el split script és composite script fájlok formájában. A 4.0 RTM után a scriptek valószínűleg a http://ajax.microsoft.com/ajax/4.0 útvonalon lesznek megtalálhatóak és várhatóan ugyanide kerülnek majd a System.Web szerelvényhez tartozó szkriptek is. Érdemes észrevenni, hogy az Ajax Control Toolkit is teljesen átalakult, az új verzió már az Ajax Library-re épül.
  • jQuery 1.3.2: teljes és minimalizált változatban is, már a végleges URL-eken.
  • jQuery Validate 1.6: teljes és minimalizált változatban is, sőt a magyar nyelvű lokalizációval együtt, már a végleges URL-eken.
  • ASP.NET MVC: jelenleg az 1.0, majd a .NET 4 RTM után az ahhoz megjelenő változat fájljai is.

Érdemes megismerkedni ezekkel a lehetőségekkel, Gincsai Gábor barátom AJAX szkriptek összefűzése c. cikke részletesebben is bemutatja egyik-másik kapcsoló használatát.

VS 2010 beta 2 VPC

Karácsonyi ajándék a Visual Studio csapattól: VPC formában letölthetővé tették a Visual Studio 2010 Ultimate és a Team Foundation Server beta 2 változatát, sőt a virtuális gépben demó adatok is vannak, amelyek segíthetnek az egyes funkciók kipróbálásában.

Külön letöltő csomagok vannak az egyes virtualizációs megoldásokhoz:

Aki letöltés automatizálót használ, annak érdemes megnéznie Brian Keller blogját, mert ott megtalálhatóak a közvetlen linkek.

Készültek továbbá labor anyagok, amelyek előbb utóbb a Visual Studio 2010 Training Kitben fognak kikötni, de az előzetes változataik már most letölthetőek. Ezek között található egy dokumentum Working with the Visual Studio 2010 Virtual Machine.docx címmel, melyben útmutatást találhatunk a letöltött állományok használatához.

A virtuális gépek 2010. április 9-ig használhatóak, ekkor jár le ugyanis a bennük található SQL Server próbaváltozat. Használat közben Windows és Office aktiváló ablakok is fel fognak ugrálni, ezeket figyelmen kívül lehet hagyni.

Mellesleg a Visual Studio 2008 VPC-kből is van újabb változat, mert az előző az év végén lejár, az új linkek itt találhatóak.

Technorati-címkék: ,,,,

LESS

Weboldalak dizájn részének szerkesztése közben gyakran előjön az az érzés, hogy a CSS bizony egy buta jószág. Sok mindent meg lehet vele csinálni szépen, de kinek nem volt még olyan gondolata, hogy de jó lenne, ha legalább konstansokat tudnánk definiálni vagy egyik osztály örökölhetne beállításokat másik osztálytól?

A CSS ezeket nem tudja, de van más, ami igen, úgy hívják, LESS. A nagy ötlet az benne, hogy nem próbál kitalálni egy teljesen új stílusleíró nyelvet, hanem csak kiegészíti a CSS-t néhány új funkcióval: változókkal, ún. mixinekkel, műveletekkel és egymásba ágyazott szabályokkal. Nem írok ide példákat, a LESS kezdőlapján gyorsan át lehet tekinteni ezeket.

Nyilvánvalóan a böngésző nem tudja értelmezni a .less kiterjesztésű fájlokat, ezért szükséges egy fordítási lépés, melynek során a .less fájlból szabványos .css fájl lesz – erre természetesen van eszköz.

A legszebb az egészben, hogy van .NET-re portolt változata, úgy hívják .LESS (dot-less), ahol ráadásul nincs szükség explicit fordítási lépésre, mert HttpHandlerként tud beépülni az ASP.NET csővezetékbe. Sőt, a handler képes minimalizálni a generált CSS-t és cache fejléceket is be tud rájuk állítani, így csökkentve a hálózati forgalmat és a szerver terhelését. Látszik, hogy olyanok csinálták, akik láttak már valós projektet. A telepítés mindössze web.config szerkesztést igényel.

Készül hozzá Visual Studio integráció is, még az is lehet, hogy a 2010-es változat közvetlenül fogja támogatni, legalább syntax highlight szinten.

 

Technorati-címkék: ,,,

Dual boot VHD-ból

Új gépet telepítek és azt találtam ki, hogy lesz rajta egyszerre egy Windows 7 és egy Windows Server 2008 R2 is. A Windows 7 fog a C: meghajtóról bootolni és a hozzá tartozó összes adat a W: meghajtón lesz. A Windows Server 2008 R2-t VHD-be telepítem, amit szintén a W: meghajtón fogok elhelyezni. Már jó ideje nem használtam dual bootot, mert zavart a sok partíció, de most úgy döntöttem, adok egy esélyt a VHD bootnak. Meglepett, hogy mennyire egyszerű mindezt összehozni.

A Windows 7-et simán (már amennyire egy 64-bites oprendszer és a hozzá tartozó driverek telepítése sima lehet – nem az) sikerült feltelepíteni a szokásos módon a C: meghajtóra. Windows 7 alól megformáztam a második (illetve mivel a telepítő csinál egy plusz partíciót, valójában harmadik) partíciót és elneveztem W:-nek. Szerencsére volt már készen egy Windows Server 2008 R2 VHD image-em, amit bemásoltam erre a partícióra. A VHD-n mindössze annyit módosítottam, hogy előtte lesysprepeltem:

  sysprep /generalize /oobe /shutdown

Ezek után jött a Boot Configuration Database matatás, amit a Windows 7 Command Promptjából végeztem el. A biztonság kedvéért először készítettem egy backupot:

  bcdedit /export w:bcd.backup

Azután duplikáltam a Windows 7 boot beállításait és adtam neki egy nevet, ami a boot menüben meg fog jelenni:

  bcdedit /copy {default} /d "Windows Server 2008 R2 VHD"

Ez visszaad egy GUID-ot, amire szükségünk lesz, tehát érdemes bekapcsolni a Command Prompton a Quick Edit Mode-ot. Itt jön a lényeg:

  bcdedit /set {az előbbi GUID} device vhd=[W:]\ws2008r2.vhd
  bcdedit /set {az előbbi GUID} osdevice vhd=[W:]\ws2008r2.vhd

Ennyi, ettől kezdve indításkor megjelenik a boot menü és lehet operációs rendszert választani.

Ahogy írtam, nekem volt készen egy másik gépen előkészített VHD image-em. Ha nem lett volna, akkor elvileg a következő a megoldás:

  1. Indítsuk el DVD-ről a Windows Server 2008 R2 telepítőjét a szokásos módon.
  2. Amikor megjelenik a partícióra kiválasztására szolgáló “Where do you want to install Windows?” ablak, akkor Next helyett nyomjunk Shift+F10-et, mire kapunk egy szép fekete Command Promptot.
  3. Command Promptban DISKPART-tal hozzunk létre egy új VHD-t:
    • create vdisk file=w:ws2008r2.vhd type=expandable maximum=50000 select vdisk file=w:ws2008r2.vhdattach vdiskexit
  4. EXITbeírásával lépjünk ki a Command Promptból.
  5. A Refresh gombra kattintva a lehetséges célpartíciók között meg fog jelenni az imént létrehozott VHD is, amire a szokásos módon telepíthetjük az operációs rendszert.

A Windows Server 2008 R2 simán elindult, a Sysprep miatt természetesen első alkalommal lassan, de miután ráillesztette magát az új vasra, ment minden rendesen. Annyi zavart csak, hogy a Windows 7 által készített 100 MB-os boot partíció is megjelent, amit úgy tüntettem el, hogy elvettem tőle a betűjelet.

Unknown device megfejtése

Bár a Windows egyre jobban felismeri a gépben lévő hardvereket, bizony még mindig ott tartunk, hogy nekünk kell néhány eszközmeghajtót letölteni a gyártó honlapjáról és megküzdeni a telepítés nehézségeivel. Új gépeknél, 64 biten, szervereknél ez különösen megfigyelhető. A kérdés persze az, hogy melyik a hiányzó driver?

A Device Managerből általában nem tudunk meg túl sokat, lehet, hogy meg tudja mondani az eszköz típusát, de tipikusan csak egy sárga kérdőjelünk van egy sokat sejtető Unknown device felirattal:

Device Manager: Unknown device

Duplán rákattintva meg tudjuk nyitni a Properties ablakát, ahol ha elballagunk a Details fülre és ott kikeressük a Hardware Ids property-t, akkor valami hasonlót láthatunk (ezt a képernyőképet szándékosan egy már felismert eszközről készítettem):

Hardware ID

Ez bármennyire is zagyvának tűnik, van benne információ: a VEN_104C&DEV_803C rész az érdekes. Itt található ugyanis a gyártó, azaz a vendor azonosítója és az eszköz, azaz a device azonosítója. Ezek után már nincs más dolgunk, mint kikeresni ezeket az azonosítókat a PCIDatabase.com adatbázisából:

  • Vendor ID 104C = Texas Instruments
  • Device ID 803C = SDA Standard Compliant SD Host Controller

Ennyiből talán könnyebben ráhibázunk, hogy melyik drivert kell levadásznunk a gyártó honlapjáról.

BTW: nem fogjátok kitalálni, hogy melyik vendor azonosítója 8086 🙂

 

Technorati-címkék: ,,,

Csúszik a VS 2010 és a .NET 4, de nem baj

Pénteken Soma és ScottGu bejelentette, hogy a korábbi tervekkel ellentétben a Visual Studio 2010 és a .NET Framework 4 nem készül el március 22-re, hanem csúszik “néhány hetet”. Ez rosszul hangzik, de valójában igen jó hír!

Érdemes megfigyelni, hogy nem mondtak konkrét dátumot, “néhány hét” szerepel a hírekben. Az aktuális belső dátum egyébként nem publikus, de némi nyelvtani érzékkel bárki megfejtheti, hiszen nem “pár hetet” és nem is “egy hónapot” mondtak.

Nem kis húzás ám elhalasztani egy ilyen méretű launchot, mikor március 22-re már világszerte lefoglalták a helyszíneket és még sok minden mást. Csakhogy volt rá okuk bőven, aki kipróbálta a VS 2010 valamelyik bétáját, valószínűleg tudja, miről beszélek. Számtalan újdonság lesz az új Studioban, de teljesítmény és memóriafogyasztás terén még nem érett a termék. Billeg, homokórázik és közben falánk. Mondhatnánk, hogy “Vista quality” (by Mark Russinovich), de szerencsére még bétában vagyunk.

Szerencsére ez nem most derült ki, a béták során számtalan visszajelzést kaptak a fejlesztők és az utóbbi időben nagyon komolyan ráfeküdtek a teljesítmény és memória problémákra. Ennek az eredménye lesz februárban egy – korábban nem tervezett – nyilvános Release Candidate, amelyhez go live licenszet is kapunk! Tehát nem pusztán arról van szó, hogy később lesz RTM, hanem hogy előbb kapunk egy olyan terméket, ami jobb a mostaninál, sőt production környezetbe kerülő terméket készíthetünk vele.

Ez végeredményben pedig azt jelenti, hogy előbb lesznek .NET 4-es alkalmazások, amiket ráadásul egy jó eszközzel hozhatunk létre. Örüljünk.

 

Technorati-címkék: ,