SQL Compact Edition címkéhez tartozó bejegyzések

Amikor kell a régi Framework verzió az új mellé

Van egy alkalmazásunk, ami .NET Framework 4.0 Client Profile-t és SQL Server Compact Editiont használ, ClickOnce-szal települ, és ha szükséges, telepíti maga alá a Frameworköt is. Nincs benne semmi olyan, ami miatt ne futhatna régebbi Windowsokon, ami kell is, mert a felhasználóknál részben XP-k vannak. Az új verzió tesztelése közben szokás szerint felhúztam egy friss XP-s virtuális gépet, amire az alkalmazás új verziója sikeresen települt is, azonban az első adatbázis műveletnél az alábbi hibával elszállt:

System.DllNotFoundException: Unable to load DLL ‘sqlceme35.dll’: The specified module could not be found. (Exception from HRESULT: 0x8007007E)

A hivatkozott fájl természetesen ott volt a diszken, ahol a korábbi verziókban is, sőt a program új verziójába nem is kerültek olyan változások, amik ezt a hibát indokolták volna, ezért jogosan merült fel a kérdés, hogy mi változott?

A hiba nem jött elő sem Windows 8.1-en, sem Windows 7-en, sőt még azokon a régebben használt XP-s gépeken sem, amiken fent volt az alkalmazás korábbi verziója, és most csak frissítettük. És bár a korábbi verzió vígan futott XP-n, az új virtuális gépben ugyanolyan hibát produkált, mint az új verzió, így adódott a következtetés, hogy a virtuális gépben volt az eltérés.

Először a modern.ie oldalról letöltött virtuális gépet használtam, és arra gyanakodtam, hogy annak van valami specifikuma. Azután telepítettem egy saját virtuális gépet úgy, hogy az alap XP+SP3 telepítőre hosszú órák alatt keservesen felkínlódtam az összes Windows Update frissítést. A jelenség ugyanaz.

Végül ILSpy-jal belenéztem a programmal települő System.Data.SqlServerCe szerelvénybe, és mivel az még a .NET Framework 2.0 verziójára hivatkozott, próbaként feltelepítettem a régi Framework verziót. Csodák csodája a probléma megoldódott.

Az eset érdekességei:

  • A Windows Update nem telepítette a .NET Framework 2.0-át, csak az újabb verziókat. Ez régebben nem így volt.
  • A 4.0 Client Profile nem volt elég, mellé fel kellett telepíteni a 2.0 verziót.
  • Érthető, hogy Windows 7-en nem jött elő a hiba, hiszen ott az operációs rendszer része a .NET 2.0, de vajon miért ment simán 8.1-en, ahol alapból nincs feltéve a .NET 2.0?

 

Technorati-címkék:
Reklámok

Mi lesz veled SQL Server Compact Edition?

Aki próbálta már az SQL Server Compact Editiont, az tudja, hogy nagyon jó dolog. Persze nem mindenre, de amikor egy kicsi, beágyazható, Entity Frameworkkel elérhető SQL adatbázisra van szükség, akkor jó szolgálatot tesz. Hogy mennyire kicsi? Az x86 változata 1.72 MB, az x64 egy kicsit nagyobb, de az is mindössze 2.84 MB:

sqlce-files

Az ember a DLL-jeit odacsapja a projekthez és már megy is, nem kell telepíteni, nem kell hozzá admin jog, nem fut a háttérben service-ként stb. A 4.0 verzió már egészen megérett, működik a több felhasználós elérés, sőt az ASP.NET is támogatja.

Ehhez képest szomorúan tapasztaltam, hogy az SQL Server 2012 Management Studioban nem találtam a szokásos helyen:

sqlce-ssms

Ilyenkor az ember előveszi a Discontinued Management Tools Features in SQL Server 2012 doksit, ahol nyíltan ez áll:

“The SQL Server Compact Edition code editor has been removed from SQL Server Management Studio. Support for SQL Server Compact Edition has also been removed from Object Explorer, Solution Explorer, and Template Explorer. Use the Transact-SQL editors in Microsoft Visual Studio 2010 Service Pack 1 or Webmatrix instead.”

Sajnos a Visual Studioval sem jobb a helyzet, a Visual Studio 2013 Compatibility oldalon ezt olvashatjuk:

“Visual Studio 2013 doesn’t support SQL Server Compact Edition.”

Egyelőre nem tudom, hogy mi az SQL Compact roadmapje, de addig a következő lehetőségeket látom:

  • ErikEj blogjában számos okosság található az SQL Compacttal kapcsolatban, sőt ő készített egy SQL Server Compact Toolbox nevű bővítményt is, ami eddig is jó szolgálatot tett.
  • Lehetne használni LocalDB-t, de itt sem látok nagy mozgást, mióta az első verziója megjelent.
  • Át lehetne térni más adatbázis kezelőre. Ti mit használtok?

 

LocalDB: SQL Server KISS Edition

Az elmúlt évben a Web Platform and Tools Team nagyon komoly előrelépést tett a Microsoftnál: bevallotta magának, hogy a Microsoft web platformja bizony bonyolult (főleg annak, aki először látja) SŐT meg is oldotta ezt a problémát:

Bonyolult az eszközök telepítése? Ott a Web Platform Installer.

Bonyolult a webszerver konfigurálása? Ott az IIS Express.

Bonyolult a fejlesztőeszköz? Ott a WebMatrix.

Ma már talán elmondhatom, hogy a projekt kódneve nagyon találóan “Simplicity” volt. Szerintem nagyon jó irány.

Most úgy tűnik, hogy az adatbázis szerver következő verziójában az SQL Server csapat is igyekszik csökkenteni ezeket a nehézségeket. Megjelenik ugyanis egy új SQL Server verzió, amit egyszerűen csak úgy hívunk: LocalDB. Hivatalosan SQL Express LocalDB, de ha rászabadulnak a marketingesek, akkor biztosan el fogják nevezni SQL Server Keep-It-Super-Simple Editionnek.

Az új változat nagyjából félúton van az SQL Compact és az SQL Express között: kb. éppúgy nem-szerviz, mint az SQL Compact és kb. éppúgy kompatibilis a nagy SQL Serverrel, mint az Express. Nem véletlenül írtam oda, hogy “kb”, mert persze ezzel a kijelentéssel sokat csúsztattam. Nem egy in-process adatbáziskezelőről van szó, mint a Compact esetén, hanem egy külső folyamatról, ami azonban a hívó alkalmazás kontextusában fut. Gyakorlatilag egy olyan adatbáziskezelő, ami nagyon kényelmessé teszi a fejlesztők életét. Számomra ez épp olyan, mint az IIS Express, csak a hasonló elnevezés itt már foglalt volt.

Akit kicsit jobban érdekelnek a technikai részletek, itt talál egy cikket róla: Introducing LocalDB, an improved SQL Express. A cikk címe félrevezető, a LocalDB nem váltja fel a mostani SQL Expresst, viszont aki Expresst használ (főleg éles környezetben), annak fontos információ, hogy a User Instance mód előbb-utóbb meg fog szűnni (deprecated egy ideje) és helyette a LocalDB vagy a Compact lesz a javasolt út.

Akinek felkeltettem az érdeklődését, az letöltheti az SQL Server Code Name "Denali" Express CTP3-at és ezzel a képregénnyel megtanulhatja telepíteni a LocalDB-t.

Ami pedig az egyes változatok képességeinek összehasonlítását illeti, ErikEj kiváló táblázatot állított össze: Comparison of SQL Server Compact, SQL Server Express 2008 R2 and LocalDB

Nekem tetszik ez a koncepció, ti mit gondoltok, van értelme?

 

WPF bizonyíts!

1 kar, 10 tanszék és több, mint 500 záróvizsgázó hallgató mindössze 3 nap alatt az egyik oldalon…

Egy teljesen új záróvizsga jegyzőkönyv vezető program a másik oldalon a legújabb technológiákkal megvalósítva: WPF, SQL Compact Edition, Entity Framework, ClickOnce, FlowDocument nyomtatás, Excel import-export, Metro UI…

A legkisebb hiba sem elfogadható, a záróvizsgák nem állhatnak meg.

Az óra elindult, szerintetek ki fog nyerni?