SQL Server Compact Edition Jednoduchá relační databáze Použití i v malých zařízeních s omezenými zdroji
Dříve pod názvem SQL Server Mobile Časté využití při programování v ASP.NET Ve VS 2012 jako výchozí databázové úložiště
Distribuované zdarma Může podporovat ACID u transakcí Ve výchozím nastavení nesplňuje poslední podmínku Durability Je potřeba změnit chování při commitu pomocí odpovídajícího flagu
Jak SQL CE běží Neběží jako systémová služba Je součástí dané aplikace, tedy v rámci
jejího procesu a paměťového prostoru
Není nutné instalovat nic dalšího pro použití databáze (Private Deployment) Výjimkou je Microsoft Visual C++ 2008 Runtime Libraries (x86 and x64) SP1
Spouští se jen když se přistupuje k
datovým souborům Vyžaduje cca 5 MB paměti a 1,4 MB diskového prostoru
Scénáře použití SQL CE Databáze jen jako „hloupé“ úložiště SQL CE nepodporuje uložené funkce, pohledy nebo procedury
Malý objem ukládaných dat Maximální velikost databáze je omezena na 4 GB
Malá zátěž Hodně čtení a málo zápisů
Zjednodušení distribuce aplikace Pro nasazení SQL CE databáze stačí s vaší aplikací distribuovat několik DLL
knihoven
Zjednodušení konfigurace aplikace Stačí správně nastavit connection string, aby směřoval na patřičný soubor na
disku
Formát databáze Celá databáze je uložena v jednom
souboru s příponou SDF
Pro přístup do souboru s databází lze použít Visual Studio (pro verzi 4.0) SQL Server Management Studio není poslední verzí podporováno
Podporuje více spojení do stejné
databáze (.sdf souboru) v rámci jedné nebo více aplikací Pouze lokálně na stejném počítači
Maximální počet současných spojení
omezen na 256
Z praktického hlediska se doporučuje maximálně 70-80 kvůli výkonu
Formát databáze (2) Přístupová práva podle rolí na úrovni
tabulek nejsou implementována
Pro docílení jednoduchosti a rychlosti databázového jádra
Na úrovni databáze jdou zajistit pomocí
heslem chráněného přístupu
Zabezpečení uložených dat na disku jde docílit pomocí šifrování databáze
Databáze je rozdělena na 4 kB stránky Každá stránka má svůj kontrolní součet Počítán a uložen při zápisu stránky na disk
Časem může dojít k fragmentaci databáze
Přístup do databáze Pro použití databáze stačí do connection
string přidat atribut Data Source
Data Source="D:\MyApp\Mydb.sdf"
Speciální |DataDirectory| vlastnost Data Source="|DataDirectory|\Mydb.sdf" Hodnota se nastavuje pomocí volání AppDomain.SetData Pokud není nastavena, přiřazuje se podle následujících pravidel V aplikacích běžících na lokálním disku se použije adresář ve kterém je aplikace umístěna V aplikacích instalovaných pomocí ClickOnce se vytvoří nová datová složka V .NET Compact Framework není metoda AppDomain.Setdata
podporovaná
Administrace databáze Pro správu databáze jsou dostupná
volání pro administrativní úkony v SqlCeEngine AutoShrink
Verify
Repair
Compact
AutoFlush
Zálohování
AutoShrink Jak se databáze mění, mohou některé stránky
obsahovat nevyužitý prostor nebo se vyskytovat celé nevyužité stránky
Nevyužité stránky jsou znovupoužity pomocí AutoShrink mechanismu
AutoShrink posouvá stránky v souboru
tak, aby nevyužité stránky byly souvisle na konci souboru Prázdné stránky jsou následně odstraněny úplně Nezaplněné stránky jsou následně k dalšímu využití
Compact Prázdné místo uvnitř stránek může být
znovu použito pouze po zavolání metody Compact Je vytvořena nová databáze a indexy Čtou se čtou řádky z databáze a zapisují do nové cílové databáze Data jsou zapisována za sebou, bez mezer v původním souboru
Jednotlivé stránky tabulky jsou
přeorganizovány a uloženy souvisle
Verify Zavoláním Verify na SqlCeEngine
přepočítá kontrolní součty všech stránek Ověří, jestli nově spočítané odpovídají původním Vrací true/false Pokud false, je vhodné na databázi spustit Repair metodu
Repair Zavolání Repair na SqlCeEngine opět
počítá kontrolní součty všech stránek Pokud spočítaný neodpovídá původnímu je stránka označena za poškozenou Pokud byl použit flag RepairOption.DeleteCorruptedRows budou
všechny poškozené stránky odstraněny Pokud byl použit flag RepairOption.RecoverCorruptedRows databáze se pokusí data přečíst, znovu zapsat a přepočítat kontrolní součet
Použití RepairOption.RecoverCorruptedRows
může zachránit více dat, ale nezaručuje, že obnovená data budou logicky správná
AutoFlush Při změně databáze během transakce
jsou změny uloženy v buffer poolu dokud transakce neskončí Pokud selže, změny jsou zahozeny Při commitu se změny zviditelní ostatním, ale nejsou nutně hned uloženy do databázového souboru Pokud dojde k neočekávanému konci aplikace, nemusí být všechny
commitované změny zaznamenány a budou zapomenuty Dokončená transakce jsou ale vždy zapisovány na disk v pořadí commitu I přes ztrátu transakce je databáze vždy v konzistentním stavu
Zálohování databáze Pro zálohování databáze stačí využít
souborový systém
Záloha databáze Zavřít všechna spojení k databázi a zkopírovat .sdf soubor
Obnovení databáze Zkopírovat zálohovaný .sdf soubor na původní umístění
Zrušení databáze Smazat .sdf soubor z disku
Součásti SQL CE Fialová – volitelné podle přístupu např. C/C++/native Vs
C#/VB.NET/.NET/Managed Zelená – plně volitelné – podle scénáře použití Modrá – povinné
Součásti SQL CE Komponenta Storage Engine Query Processor OLEDB Provider DB Utilities Managed Extensions
LINQ/Entities - Also known as ADO.NET v3 Provider, Entity Framework
System.Data.SqlServerCe.Entity.dll
Různé verze SQL CE Předchozí verze je 3.5 Aktuální verze je 4.0 SP1 Tato verze nepodporuje veškerou funkcionalitu
verze 3.5
Data Replikace pomocí Sync Framework SQL Server Integration services Připojení z SQL Management Studia LINQ to SQL Není podporované v mobilních zařízeních (WP, WM, Windows CE)
Různé verze SQL CE mohou být
nainstalovány na stejném počítači
Omezení T-SQL v SQL CE Oproti velkému SQL serveru omezená
podpora T-SQL Podporováno pouze
SET DEFAULT možnost v ALTER TABLE HAVING pouze pro jeden sloupec TOP pouze pro [0,MAX_INT] UPDATE STATISTICS ON
Přejmenování databázového objektu pomocí 'AS'. Změna vlastnosti IDENTITY (seed a step) pomocí ALTER TABLE Datové typy představené v SQL 2008 Date, DateTime, DateTimeOffset, Geography, Geometry, HierearchyID,
Time
Budoucnost SQL CE Plně podporováno v ASP.NET projektech jako výchozí databáze u ASP.NET WebMatrix
Plně podporováno Entity Frameworkem Jediná databáze na platformě Windows
Phone
Pouze ve verzi 3.5 a s přístupem LINQ to SQL Verze 4.0 LINQ to SQL nepodporuje
SQL CE není podporováno v Windows 8 Modern UI aplikace (WinRT) Silverlight, s výjimkou Windows Phone
LocalDB LocalDB je plnohodnotný SQL Server
Express Je spouštěn přímo z klienta Není náhradou Express edice Vylepšení vlastnosti User instance SQL Express Snaha o jednoduché použití jako SQL CE ale při zachování plné kompatibility s plným SQL Serverem.
LocalDB vs. SQL CE Nejdůležitější rozdíly mezi LocalDB a SQL CE Vykonávání SQL CE je in-process DLL knihovna LocalDB běží jako samostatný proces
Využití diskového prostoru SQL CE zabírá cca 4 MB na disku LocalDB instalace zabere okolo 140 MB
Schopnosti SQL CE nabízí pouze základní relační databázi LocalDB nabízí širší možnosti použití, například XML datový typ
Srovnávací tabulka Vlastnost
Velikost instalace
SQL CE 4.0
SQL Server Express 2012
SQL Server 2012 LocalDB
2.5 MB instalátor
120 MB instalátor 32 MB instalátor
18 MB na disku
> 300 MB na disku > 160 MB na disku
Private installation, jako součást aplikace Ano
Ne
Ne
Instalace bez admin oprávnění
Ano
Ne
Běh jako in-process s aplikací
Ano
Ne
Souborový formát Maximální velikost DB XML úložiště
Více souborů 10 GB Ano Ano
Ano
Podpora FILESTREAM Transact-SQL – základní
Jeden soubor 4 GB Ano / uloženo jako ntext Ano / uloženo jako image Ne Ano
Ne Ne (jako proces spuštěný aplikací) Více souborů 10 GB Ano
Ano Ano
Ne Ano
Procedural T-SQL - Select Case, If
Ne
Ano
Ano
LINQ to SQL Nativní XML, XQuery/Xpath Uložené procedury, pohledy, triggery
Ne Ne Ne
Ano Ano Ano
Počet souběžných spojení
256
Neomezeno
Ano Ano Ano Neomezeno (jen lokálně)
Binarní (BLOB) úložiště
Připojení k LocalDB Pokud se klientská aplikace připojuje
přes connection string
Data Source=(localdb)\v11.0 Poskytovatel spojení nejprve ověří, jestli instance LocalDB pro aktuálního
uživatele už je spuštěna Pokud ano, připojí se k ní Pokud ne, spustí novou
Connection string pro typické použití Data Source=(localdb)\v11.0;Integrated Security=true; AttachDbFileName=C:\MyData\Database1.mdf
LocalDB běží ve vlastním procesu Sdílí ovšem stejný security context jako aplikace, která jej používá
Zdroje Everything SQL Server Compact http://erikej.blogspot.co.uk/
SQL CE Binaries - Details http://blogs.msdn.com/b/laxmi/archive/2009/10/07/sql-ce-binaries-