Contained database a její využití na SQL Serveru 2012

SQL Server 2012 přináší mnoho novinek v oblasti administrace, vývoje i business intelligence.

Pro administrátory je určitě zajímavá nová technologie pro vysokou dostupnost AlwaysOn i mnohé možnosti pro zabezpečení SQL Serveru 2012. Na pomezí těchto dvou oblastí stojí contained databáze. Databáze ve full contained režimu obsahuje veškerá metadata a nastavení, a díky tomu je zcela nezávislá na SQL instanci. V aktuální verzi je k dispozici nižší containment model a to partial.

sqlContDb01.png

Mezi základní výhody contained databáze patří

  • Snadná přenositelnost mezi servery při migraci
  • Jednoduché nastavení AlwaysOn pro dostupnost databáze
  • Vývoj db nezávislý na instanci SQL Serveru

V těchto případech je využito speciálního ověřování, při kterém není vytvořen SQL server login, který je následně mapován na databázového uživatele, ale pouze databázový uživatel, kterému je rovnou nastaveno heslo. Protože je tento uživatel a jeho přihlašovací údaje uložen rovnou v samotné databázi, je tato databáze nezávislá na instanci SQL serveru a je možné tuto databázi přesunout a obnovit na jakýkoli jiný SQL Server 2012, bez nutnosti přenášení SQL loginů. Více o AlwaysOn v předchozím článku o vysoké dostupnosti http://www.zive.cz/clanky/sql-server-a-vysoka-dostupnost--ii/sc-3-a-165769/default.aspx

Pro zapnutí containment režimu je nutné nejprve povolit autentizaci přímo proti contained databázi pomocí procedury sp_configure. Tuto autentizaci je nutné povolit na všech serverech v případě AlwaysOn vysoké dostupnosti, pokud bychom chtěli v rámci Database Availability Groups mít i contained databázi. Díky možnosti multi-server dotazům je možné tuto konfiguraci povolit na několika serverech zároveň pomocí Registered Servers, nebo případně pomocí Policy Based Managementu, kdy ve facet Server Configuration je nastavitelná volba ContainmentEnabled. U samotné instance SQL Serveru je nutné mít povoleno ověřování „SQL Server and Windows Authentication Mode“.

sqlContDb02.png sqlContDb03.png

Jakmile máme vytvořenou databázi, u které je nastaven containment model na partial, je možné začít v této databázi vytvářet uživatele. Uživatelé mohou být v zásadě dvou druhů – a to uživatel, který má svůj login a heslo uloženy přímo v samotné databázi nebo uživatel, který využívá Windows login a integrované ověřování. S integrovaným ověřováním je situace složitější tím, že se může a nemusí jednat o contained uživatele v závislosti na konfiguraci samotného serveru.

V případě, kdy na serveru nebude vytvořen login pro doménového uživatele, bude tento uživatel považován za contained uživatele, který má povoleno přihlášení pouze do samotné databáze. V takovém případě po přihlášení nevidí žádné server-level objekty a může pracovat jen v databázi samotné. V opačném případě, kdy existuje SQL Login pro doménového uživatele, který je zároveň vytvořen jako uživatel v databázi je tento uživatel zpět mapován na SQL Login a může v závislosti na svých oprávněních pracovat i s jinými databázemi a server-level objekty.

sqlContDb04.png

Pro přihlášení ke contained databází je nutné v connection string uvádět i databázi samotnou, případně v SQL Server Management Studiu v dialogu pro přihlášení vybrat i danou databázi ke které se chceme přihlásit. Pokud bude využit uživatel s heslem, tak je nutné zvolit přihlášení pomocí SQL Server ověřování.

sqlContDb05.png

Protože contained databáze snižuje závislost na instanci SQL Serveru a jiných databázích, není kompatibilní s několika funkcemi SQL Serveru a to zejména

  • Jakékoli replikace
  • Change Data Capture
  • Change Tracking

Navíc nemůže být pro přihlášení contained uživatele využit protokol Kerberos, a hesla pro tyto uživatele nebudou využívat politik systému Windows.

Marek Chmel, WBI


Sledujte Živě na Facebooku

celkem 0

Poslední názory Názory





Aktuální číslo časopisu Computer
  • Testy nejnovějších produktů na českém trhu.
  • Informace ze světa internetu i bezpečnosti.
  • Plné verze programů zdarma pro všechny čtenáře.

Partnerská sekce pro IT profesionály
Microsoft TechNet/MSDN