MS SQL Server
Created by Vladimír Roller
Stránky pro výuku produktu MS SQL Server na SPŠS Olomouc

Fungování transakčního protokolu
Write-Ahead Logging
- každá operace provedená v databázi (vložení, aktualizace, mazání) nejprve zapisuje informaci do transakčního protokolu ještě před tím, než dojde ke skutečné změně na datových stránkách
- toto zajišťuje, že v případě neočekávaného výpadku mohou být data obnovena ze samotného protokolu
- jakmile je operace provedena v databázi je toto zapsáno v transakčním protokolu
Checkpointing
- proces, který zapisuje aktuální stav transakčního protokolu na disk
- kdykoli se vytvoří checkpoint, SQL Server zaznamená všechny neuložené změny na disk → usnadňuje a zrychluje obnovu databáze po výpadku
- checkpoint se může vytvořit automaticky nebo manuálně pomocí příkazu CHECKPOINT
Minimalizace protokolu v režimu Bulk-Logged
V případě velkých objemů dat, které je třeba zapsat najednou (např. operace bulk insert nebo index rebuild), je možné použít Bulk-Logged Recovery Mode. Tento režim minimalizuje množství záznamů v protokolu, což může snížit čas zápisu a velikost protokolu.
Režimy obnovy
Režimy obnovy SQL Server umožňuje různé režimy obnovy transakčního protokolu, které určují, jak je transakční protokol spravován:
- Simple Recovery Model
- protokol se pravidelně čistí po každém checkpointu
- nelze provést obnovu k bodu v čase
- vhodný pro databáze, kde není potřeba detailní obnovení - Full Recovery Model
- záznamy v protokolu se uchovávají, dokud nejsou zaznamenány ve formě zálohy transakčního protokolu
- umožňuje obnovit databázi do jakéhokoli bodu v čase - Point-in-Time Recovery
- obnovení databáze k určitému bodu v čase (například těsně před chybnou operací)
- vyžaduje pečlivou správu záloh databáze a transakčního protokolu, aby bylo možné přesně obnovit požadovanou verzi databáze
Typy souborů -v SQL Serveru
- každá databáze v MS SQL vytváří v souborovém systému dva typy souborů
- datové soubory
- soubory protokolu/transakčního protokolu
- tyto soubory lze uložit v souborovém systému FAT nebo NTFS
- ⚠ v systému NTFS, pokud je použita kopmrimace, nelze uložit SQL soubory pro zápis; lze uložit pouze soubory databáze pro čtení
- ve výchozím nastavení jsou protokoly dat a transakcí umístěny na stejnou jednotku a cestu; tato volba nemusí být optimální pro produkční prostředí
- v produkčním prostředí se doporučuje data a soubory protokolu na samostatné disky
- bezpečnost dat - v případě havárie apod. jsou na rozdílných místech
- výkon - transakční protokoly se zpravidla umísťují na velmi rychlá úložiště, neboť v nich probíhají časté změny
Transakční protokol ↔
- transakční log/transaction log
- soubor s příponou .ldf, který zaznamenává všechny změny provedené v databázi
Hlavní funkce transakčního logu
- obnova databáze - v případě selhání serveru nebo výpadku proudu umožňuje transakční log obnovit databázi do konzistentního stavu
- zajištění konzistence - umožňuje vrátit zpět neúspěšné transakce (Rollback)
- replikace a zálohování - klíčový pro replikaci dat (přenos provedených změn na další místa) a pro vytváření záloh databáze (full, diferential, incremental)
Struktura transakčního logu
Transakční log je rozdělen do několika částí:
- Vstupní záznamy (Log Records)
- každá operace, která mění data, je zaznamenána jako log record
- každá taková změna je zpracovávána jako transakce
- záznamy obsahují informace o typu operace, identifikátoru transakce, časovém razítku a dalších detailech
- Vstupní stránky (Log Pages)
- Log Records jsou organizovány do Log Pages, což jsou základní jednotky ukládání v transakčním logu
- každá Log Page má pevnou velikost 8 KB
- Vstupní soubory (Log Files)
- Log pages jsou uloženy v log files
- databáze může mít více log files, které mohou být umístěny na různých fyzických discích pro zvýšení výkonu.
Optimalizace a správa transakčního logu
Truncation: Proces, který odstraňuje staré log records, které již nejsou potřeba pro obnovu databáze. Tento proces zajišťuje, že transakční log neroste nekontrolovaně.
Zálohování logu: Pravidelné zálohování transakčního logu je důležité pro správu jeho velikosti a pro zajištění možnosti obnovy databáze do konkrétního bodu v čase.
Struktura Log Records
- Identifikátor transakce - Transaction ID
- každý log record je spojen s konkrétní transakcí, což umožňuje sledovat všechny operace provedené v rámci této transakce - Log Sequence Number - LSN
- každý log record má unikátní LSN, který určuje pořadí záznamů v logu
- používá se k určení, které operace byly provedeny a v jakém pořadí - Typ operace - Operation Type
- zaznamenává typ operace (např. INSERT, UPDATE, DELETE) a další detaily o změně - Předchozí a nové hodnoty
- u operací, které mění data, log record obsahuje jak původní hodnoty before image, tak nové hodnoty - after image
- to umožňuje vrácení změn - rollback nebo jejich opětovné provedení - redo
Struktura Log Pages
- Header (Hlavička)
- každá log page začíná hlavičkou
- obsahuje metadata - jako je číslo stránky, LSN (Log Sequence Number) první a poslední operace na stránce, a další kontrolní informace - Log Records (Záznamy): Následuje oblast, kde jsou uloženy jednotlivé log records. Tyto záznamy obsahují detaily o transakcích, jako jsou typ operace, identifikátor transakce, časové razítko, a změněné hodnoty.
- Trailer (Závěr): Na konci stránky může být závěr, který obsahuje kontrolní součet nebo další informace pro ověření integrity stránky.
Funkce Log Pages
- Efektivní ukládání: Log pages umožňují efektivní ukládání a přístup k log records, což zlepšuje výkon při zápisu a čtení z transakčního logu.
- Správa transakcí: Organizace log records do log pages usnadňuje správu transakcí a obnovu databáze, protože umožňuje rychlé nalezení a zpracování potřebných záznamů.
- Integrita dat: Metadata v hlavičce a případné kontrolní součty v závěru stránky pomáhají zajistit integritu dat a detekovat případné chyby
Správa a údržba transakčního protokolu
Transakční protokol může růst až na velmi velké velikosti, pokud není pravidelně spravován. Údržba zahrnuje:
- Pravidelné zálohy transakčního protokolu - zálohy uvolňují místo v protokolu.
- Nastavení vhodného režimu obnovy - závisí na potřebách databáze, jak často bude třeba zálohovat a uvolňovat protokol.
- Monitorování velikosti: protokol by měl být monitorován, aby se předešlo situaci, kdy zabírá příliš velkou část disku
Datové soubory
- obsahují data a objekty, jako jsou tabulky, indexy, uložené procedury, pohledy apod.
- primární datový soubor
- každá databáze má jeden primární datový soubor
- může obsahovat samotná data a odkazy na další soubory v databázi
- doporučená přípona souboru je .mdf (implicitní přípona) - sekundární datové soubory
- volitelné uživatelsky definované soubory (nemusí být použity vůbec)
- používají se např. pokud je potřeba data(bázi) rozšířit na více disků apod.
- doporučená přípona souborů je .ndf
Soubory protokolu
- transakční protokol - transaction protocol,
- obsahují informace o prováděných změnách a transakcích v databázi
- obsahují informace, které jsou nutné k obnovení všech transakcí a změn v databázi
- pro každou databázi musí existovat alespoň jeden soubor transakčního protokolu
Vytvoření PK
Při vytváření tabulky
1. v příkazu CREATE TABLE
CREATE TABLE Tridy (
ID tinyint NOT NULL PRIMARY KEY,
…..
);
2. v prostředí MMC

Změnou stávající tabulky
1. příkazem ALTER TABLE
ALTER TABLE Tridy
ADD PRIMARY KEY (ID);
2. v prostředí MMC
SQL Server integration services
- SSIS
- sada nástrojů, které umožňují vytvářet efektivně datové integrace z dat z různých zdrojů
- v rámci těchto integrací hovoříme o tzv. ETL procesech:
- Extract – extrakce dat ze zdrojového systému
- Transform (transformace dat) – Data v centrálním úložišti by měla mít striktní pravidla co se týče struktury objektů, pojmenování a archtektury
- Load – Nahrání dat do cílového úložiště
- jo možno využít specializovaný nástroj Business Intelligence Data Studio - BIDS - volitelná součást při instalaci SQL Serveru
SQL Server management studio

- SSMS
- grafická rozhraní - management console pro správu SQL Serveru
- správcům i návrhářům poskytuje mnoho nástrojů pro správu i vývoj databází
- SQL server a databáze je možné také spravovat pomocí jazyka SQL (T-SQL) a Powershellu
- tvorbu a návrh databází
-usnadňuje vytváření databází, tabulek a dalších databázových objektů
- umožňuje navrhovat datová schémata, definovat strukturu datového úložiště ad. - návrh a provádění dotazů
- umožňuje uživatelům vytvářet, optimalizovat a spouštět SQL dotazy a tím získávat požadovaná data
- umožňuje definované dotazy ukládat a dále s nimi pracovat - monitorování a správa serveru
- poskytuje nástroje panel pro sledování stavu serveru, výkonnostních metrik a využití zdrojů
- umožňuje správcům vyladit nastavení serveru pro optimální výkon - export a import dat
- poskytuje nástroje pro rychlý, intuitivní a jednoduchý import/export dat z a do různých formátů
SQL Server analysis services
- funkce pro tzv. dolování dat
- podporuje OLAP (Online Analytical Processing) pomocí něhož můžete navrhnout, vytvořit a spravovat multidimenzionální struktury - např. tzv. datové kostky
- tyto obsahují data agregované z jiných datových zdrojů, jako jsou například relační databáze
PRIMARY KEY - Primární klíč
- nezávislá entita (sloupec, Column), která jendnoznačně identifikuje instanci (záznam, řádek, Row) v DB tabulce
- hodnota ve sloupci, který je primárním klíčem, je jedinečná, nesmí se v daném sloupci objevit 2x a vícekrát
- nesmí obsahovat hodnoty NULL
- každá tabulka by měla mít definovaný PK, aby byla zachována entitní a příp. referenční integrita pro tabulku a DB
- PK může být vytvořen z jednoho sloupce nebo z kombinace více sloupců
ACID transactions

SQL Server database engine
- databázový stroj
- základní komponenta zodpovědná za základní funkce správy dat
- správa databáze - Database management
- správa všeho, co databáze obsahují - tabulky, pohledy, indexy, uložené procedury a další..
- poskytuje strukturované prostředí pro ukládání dat - zpracování dotazů - Query processing
- pomocí Query Processoru převádí dotazy SQL do akcí, které lze provést
- optimalizuje dotazy SQL a navrhuje nejúčinnější cestu k získání požadovaných dat z databáze
- provádí dotazy a získává požadovaná dat - transakce a datová integrita - Transactions and data integrity
- zajišťuje integritu dat prostřednictvím principů ACID Transactions
- zajišťuje, že každá změna dat dodržuje pravidla, která udržují konzistenci a spolehlivost dat
SQL Server reporting services
- SSRS
- slouží k vytváření, nasazování a správě tzv. reportů (grafy, tabulky, texty apod.)
- tyto reporty mohou být generovány pro tisk nebo pro zobrazení na růýných zařízeních, včetně mobilních
- využívají data z SQL Serveru a dalších zdrojů
- reporty mohou být i interaktivní

Vytvoření UNIQUE
Při vytváření tabulky
1. v příkazu CREATE TABLE
CREATE TABLE Tridy (
ID tinyint NOT NULL PRIMARY KEY,
Nazev char(5) NOT NULL UNIQUE
);
nebo s pojmenováním
CREATE TABLE Tridy (
ID tinyint NOT NULL PRIMARY KEY,
Nazev char(5) NOT NULL
CONSTRAINT UQ_nazev UNIQUE (nazev)
);
2. v prostředí MMC

UNIQUE
- toto omezení zajišťuje, že hodnoty v daném sloupci jsou jedinečné/unikátní, nesmí se v daném sloupci objevit 2x a vícekrát
- slouží k omezení duplicit
- může být aplikováno na jeden sloupec nebo více sloupců
- narozdíl od omezení PRIMARY KEY může obsahovat hodnoty NULL, ale pokud je omezení UNIQUE definováno přes více sloupců, musí být hodnoty NULL ve všech sloupcích, přes které je definováno, nebo v žádném
Vytvoření CHECK
Při vytváření tabulky
1. v příkazu CREATE TABLE
CREATE TABLE Znamky (
ID int NOT NULL PRIMARY KEY,
Znamka tinyint NOT NULL CHECK (Znamky>=1 AND Znamka<=5),
...
);
nebo s pojmenováním
CREATE TABLE Znamky (
ID int NOT NULL PRIMARY KEY,
Znamka tinyint NOT NULL,
CONSTRAINT CHK_znamka CHECK (Znamky>=1 AND Znamka<=5),
...
);
CONSTRAINTS - Omezení
Omezení v SQL jsou pravidla, která definují podmínky pro hodnoty v databázových tabulkách. Tato omezení zajišťují integritu dat a správné chování databáze
Některé základní typy omezení:
- Primární klíč (PRIMARY KEY)
- Unikátní omezení (UNIQUE)
- Cizí klíč (FOREIGN KEY)
- Kontrolní omezení (CHECK)
- kontrolní omezení definuje podmínky, které musí být splněny pro hodnoty v určitém sloupci - NOT NULL
- sloupec s tímto omezením nesmí obsahovat hodnoty NULL
CHECK
- omezení CHECK umožňuje omezit hodnoty, které se zadávají v daném sloupci
- je možno provádět kontrolu jak jednoho, tak více sloupců
- pokud kontroluji pouze jeden sloupec, postačí deklarovat pomocí CHECK
- při kontrole přes více sloupců se musí použít slovo CONSTRAINT (také, pokud bych chtěl pojmenovat omezení)
SQL - Data Definition Langauage
Enterprise
Standard
Web
Developer
Vytvoření Foreign Key
- omezení Foreign Key je možno vytvořit při vytváření tabulky nebo změnou stávající tabulky
- pokud již tabulka obsahuje nějaká data, musí i tabulka, na kterou odkazuje cizí klíč obsahovat patřičná data - jinak se FK nevytvoří
Příkazem ALTER TABLE
s pojmenováním FK
ALTER TABLE zaci
ADD CONSTRAINT FK_Tridy
FOREIGN KEY (Trida)
REFERENCES Tridy(ID);
FOREIGN KEY - Cizí klíč
- definuje vztah - omezení mezi dvěma tabulkami
- hodnota ve sloupci, na kterém je definován cizí klíč v jedné tabulce, musí odpovídat hodnotě ve sloupci, který je primárním klíčem v druhé tabulce
- cizí klíč v jedné tabulce se odkazuje na primární klíč v jiné tabulce
- tím je definováno integritní omezení v tabulce, které umožňuje vložit pozuze určité hodnoty
Klíčové komponenty - Key Components

Express
CREATE TABLE
- příkaz CREATE TABLE slouží pro vytvoření tabulky
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype, .…
);
Příklad:
CREATE TABLE Tridy (
ID tinyint,
nazev char(5)
);
Edice MS SQL Serveru
Srovnání jednotlivých edicí
Editions and supported features of SQL Server 2022 - SQL Server | Microsoft Learn
Jak zjistím, jaká jsou omezení na tabulce?
- SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE table_name = 'nazev_tabulky';
- INFORMATION_SCHEMA - poskytuje komplexní pohled na metadata spojená s každou databází; Funguje jako katalog, který obsahuje informace o tabulkách, pohledech, uložených procedurách, sloupcích, omezeních a dalších objektech v databázi
- Pomocí pohledů do systémového(objektového katalogu);
např. SELECT * FROM sys.foreign_keys; - Pomocí MMC v části Keys nebo Constraints
MS SQL Server
- robustní a univerzální systém pro správu relačních databází - Relational Database Management System (RDBMS) vyvinutý firmou Microsoft
- tzv. Systém řízení báze dat (SŘBD) - databázový systém, databázový stroj
- umožňuje správu dat, analýzu dat a business intelligence analýzy
Systémové databáze
- jsou databáze určené pro vlastní provoz MS SQL a jeho služeb
Odstranění omezení
Odstranění omezení je možno pomocí příkazu
ALTER TABLE Nazev_tabulky
DROP CONSTRAINT Nazev_omezeni
Některá omezení je možno odstranit pomocí MMC konzoly
Služby SQL serveru
- SQL Server poskytuje více služeb
- tyto služby se zpravidla spouštějí na tzv. Systémový účet - System Account nebo servisní účet - Service Account
- tyto účty musí mít příslušná oprávnění
- služby a další nastavení můžeme spravovat a řídit pomocí:
- MMC - služby
- SQL Server Configuration Manager
SQL Server
- základní služba MS SQL Serveru
- spravuje a provozuje Database Engine
- spravuje databáze, provádí dotazy, jobs, tasks ad.
SQL Browser
- poskytuje informace o tom, jaké instance SQL Serveru jsou nainstalované na daném počítači nebo v síti
- umožňuje klientům zjistit dostupné servery, což je užitečné například při sestavování Connection stringu
- běží na portu UDP 1434 a je zodpovědná za mapování názvů instancí SQL Serveru na čísla portů, na kterých jsou spuštěny
- aby se někdo mohl připojit na daný SQL server (vlastní nebo i cizí), nemusí být spuštěna; napomáhá vyhledat spuštěné SQL servery v síti
Master
- řídící databáze
- obsahuje metadata o všech databázích daného SQL Serveru
- obsahuje konfigurační data SQL Serveru
Model
- slouží jako vzor pro vytváření nových databází
- při vytváření nové databáze, SQL Server použije strukturu z této databáze
TempDB
- provozní databáze SQL Serveru
- slouží k provozním a dočasným účelům, jako jsou dočasné tabulky, proměnné a jiné dočasné objekty
- při restartu (startu) se vždy vymaže
MSDB
- uchovává informace o častých úkolech prováděných administrátory databáze, jako jsou např. zálohy a obnovy dat
- obsahuje všechna data pro službu
SQL Server Agent, včetně úkolů, kroků, operátorů, upozornění a historie provedení.
SQL Server Agent
- plánuje a provádí naplánované úlohy(jobs, tasks), např. zálohování databáze apod.
- úloha může být spuštěna podle časového plánu/harmonogramu (Schedulles), v reakci na konkrétní událost nebo na požádání
SQL Agent používá následující komponenty:
- Úlohy (Jobs) - eefinují administrativní úkol, který lze spustit jednou nebo vícekrát a sledovat jeho úspěch nebo neúspěch
- Kroky úlohy (Job Steps) - každý krok v úloze může obsahovat například spuštění Transact-SQL příkazu, spuštění SSIS balíčku nebo vydání příkazu serveru Analysis Services apod.
- Harmonogramy (Schedules): určují, kdy se má úloha spustit. Více úloh může běžet na stejném harmonogramu a na jednu úlohu může být aplikováno více harmonogramů.
Data a inforamce pro SQL Server agenta (Jobs. Tasks, Job Steps, Schedules) jsou uloženy systémové databázi MSDB.
Transact SQL
T-SQL je robustní programovací a dotazovací jazyk používaný v souvislosti s relačními databázemi, zejména v prostředí Microsoft SQL Server. T-SQL nabízí funkce, které umožňují:
- Ukládání hodnot do proměnných: umožňuje dočasně ukládat hodnoty a pracovat s nimi v rámci skriptů
- Podmíněné spouštění příkazů: umožňuje provádět různé akce na základě podmínek; např. můžete provést určitý příkaz pouze tehdy, pokud platí určitá podmínka apod.
- Předávání parametrů uloženým procedurám: umožňuje definovat a používat parametry při volání uložených procedur (stored procedure)
- Řízení toku programů: můžeme používat cykly, podmínky a další konstrukce pro řízení toku programů
Krátký kurz - úvod do jazyka T-SQL
Úvod do jazyka Transact-SQL - Training | Microsoft Learn

Datové typy - Data Types
V SQL Serveru má každý sloupec v tabulce, místní proměnná, výraz a parametr nějaký odpovídající datový typ.
- atribut, který určuje typ dat, která může daný objekt obsahovat: celočíselná data, znaková data, peněžní data, data a časová data, binární řetězce apod.
Pro ukládání dat je nutné dle jejich povahy, rozsahu ukládáných hodnot apod. zvolit odpovídající vhodný datový typ. Co je nutno zohlednit:
- rozsah ukládaných hodnot - nepoužívat např. datový typ pro velká čísla a hodnoty budou od 1 do 1000
- efektivitu/datovou kapacitu pro ukládání dat
- jak často se bude s daty a jakým způsobem pracovat
Zdroj ke studiu:
https://learn.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver16
Import dat do DB systémů
Všechny systémy a aplikace, které pracují s daty (SQL systémy, Excel apod.) umožňují import (i export) dat z jiných systémů.
Pro přípravu cvičných dat můžeme použít různé online generátory.
Např.
Generate a Random Name - Fake Name Generator
MS SQL - zdroje ke studiu
- oficiální dokumentace k MS SQL serveru
- On-Line kurz
- W3Schools
Číselné - Numeric
Slouží pro ukládání číselných hodnot.
Přesná čísla - Exact numerics
Čísla se při použití těchto datových typů ukládají přesně, neprovádí se žádné zaokrouhlování.
Znakové, textové - Character, text
Slouží pro ukládání textových (znakových) dat
Binární datové typy
Slouží pro ukádání dat v binární poddobě
CSV soubory
- CSV soubor - Comma Separated Values - textový soubor, který obsahuje data a který slouží pro výměnu dat
- jednotlivé hodnoty jsou odděleny oddělovačem - čárka, středník, tabelátor, pipe
- jeden řádek = jeden záznam v tabulce
- mohou obsahovat různé typy dat (kromě binárních), tj. texty, čísla, datumy apod.
- textové hodnoty mohou být označeny uzovkovami
- import/export dat pomocí .csv souborů je podporován mnoha aplikacemi
Import dat z CSV do Excelu
Import-dat-z-csv-souboru-do-Excelu.pdf
Celá čísla - Integer
Desetinná čísla
Přibližná čísla - Approximate numerics
Datové typy pro práci s datumem a časem

Tinyint
- velikost uložených dat: 1 Byte
- rozsah ukládaných hodnot: 0..255 (20-1 .. 28-1)
Int
- velikost uložených dat: 4 Bytes
- rozsah ukládaných hodnot:
-2,147,483,648 .. 2,147,483,647
(-231 .. 231-1) - nejvyšší bit je určen pro uložení znaménka
Bigint
- velikost uložených dat: 8 Bytes
- rozsah ukládaných hodnot:
-9,223,372,036,854,775,808.. 9,223,372,036,854,775,807
(-263 .. 263-1) - nejvyšší bit je určen pro uložení znaménka
Money, Smallmoney
- slouží pro ukládání finančíních dat
- jsou to desetinná čísla s přesností na 4 desetinná čísla za desetinnou čárkou
Smallmoney
- ukládá se na 4 byty
- rozsah:
-2^31 (-214 748.3648) .. 2^31-1 (214 748.3647)
Money
- ukládá se na 8 bytů
- rozsah: -2^63 (-922 337 203 685 477.5808) .. 2^63-1 (922 337 203 685 477.5807)
Bit
- slouží pro ukládání hodnto Ano/Ne, True/False
- každý sloupec ukládá na 1 bit, pokud je sloupců typu Bit v řádku méně nebo rovno 8, použije se na uložení 1 byte, pokud více 2, popř. více bytů
Float
- přibližný číselný datový typ
- plovoucí desetinná čárka
- ukládá se na 4 nebo 9 bytů, podle toho kolik bitů je použito pro zápis tzv. mantisy - základu čísla
- n - počet bitů pro zápis mantisy
- n= 1..24 → 4 byty
- n= 25..53 → 9 bytů
- maximální rozsah:
-1.79*10308 .. -2.23*10308
0
2.23*10-308 .. 1.79*10308
Char, varchar
char
- slouží pro ukládání znakových řetězců pevné délky
- deklarace: char(n), kde n udává maximální počet bytů, které lze uložit
- n= 1..8000
- pro každý znak se použije tolik bytů, kolik jim odpovídá v kódování UTF-8 (max. 4 byty)
- pokud je řetězec kratší než udaná délka, doplní se znaky mezera až do hodnoty n
varchar
- slouží pro ukládání znakových řetězců proměnlivé délky
- deklarace: varchar(n), kde n udává maximální počet bytů, které lze uložit
- n= 1..8000
- pro každý znak se použije tolik bytů, kolik jim odpovídá v kódování UTF-8(max. 4 byty)
- pokud je řetězec kratší než udaná délka, nedoplňuje se mezerami
nchar, nvarchar
- obdobné jako typy char a varchar
- avšak ukládají všechny znaky ve formátu Unicode kódování UTF-16
- deklarace:
nchar(m)
nvarchar(m)
kde m udává počet bytů, které lze uložit
Text, nText
- zastaralé typ, doporučuje se nepoužívat, předpokládá se, že budou zrušeny
- místo toho používat typy varchar(MAX) a nvarchar(MAX)
Úvod
- způsob přihlašování a ověřování uživatelů je klíčový pro bezpečnost databázového systému
- správná volba ověřovacího módu ovlivňuje:
- Bezpečnost - jak snadno lze zneužít přihlašovací údaje a jak jsou chráněny
- Správu - kdo a jak musí spravovat přístup k databázi, zda administrátor SQL Serveru či administrátor domény
- Přenositelnost a mobilitu - zda je možné se přihlašovat z různých zařízení, mimo doménu, atd.
- Přístup aplikací k datům - jakým způsobem mohou např. webové aplikace přistupovat k datům na SQL serveru
- mód ověřování se volí při instalaci, ale je možné změnit i po instalaci
SQL Server nabízí dva hlavní ověřovací módy
- Windows Authentication Mode (Integrované ověřování)
- Mixed Mode (Smíšené ověřování) – který v sobě zahrnuje Windows Authentication i SQL Server Authentication
Best Practices a bezpečnost
- Používat co nejvíce Windows Authentication
- považováno za bezpečnější, protože se spoléhá na mechanismy Active Directory - Silná hesla
- pokud se použije Mixed Mode, vždy vyžadujte silné heslo (kombinace malých a velkých písmen, číslic a speciálních znaků) - Omezit a monitorovat účet sa
- účet sa buď zcela zakázat, nebo jej přejmenovat; používat jej pouze v nutných případech a zavést audit přihlášení - Používat skupiny z AD
- při Windows Authentication je lepší přidělovat přístup AD skupinám než přímo uživatelům - zjednoduší se správa systému - Používat protokol SSL/TLS (kryptované spojení)
- zabezpečit komunikaci mezi klientem a SQL Serverem, aby nebyly hesla přenášena v otevřené podobě - Pravidelně monitorovat logy
- sledovat neúspěšné pokusy o přihlášení, podezřelé aktivity; nastavit e-mailové upozornění na útok hrubou silou
Smallint
- velikost uložených dat: 2 Bytes
- rozsah ukládaných hodnot: -32768..32767 (-215 .. 215-1)
- nejvyšší bit je určen pro uložení znaménka
Decimal, Numeric
- funkčně jsou oba typy totožné
- plný rozsah je: -1038+1 .. 1038
- deklarace typu je: Numeric (p,s), Decimal (p,s),
- kde p je přesnost a udává celkový počet číslic, kolik má být uložen
- počet desetinných číslic, tj. počet číslic napravo od desetinné čárky

Real
- přibližný číselný datový typ
- plovoucí desetinná čárka - nemá pevně stanovený počet desetinných míst
- ukládá se na 4 byty
- rozsahy:
-3.40*1038 .. -1.18*10-38
0
1.18*10-38..3.40*1038
Binary, Varbinary
- ukládájí binární data
- deklarace
binary(n)
varbinary(n)
kde n udává počet uložených bytů - n je v rozsahu 1..8000
- u typu binary je velikost v úložišti vždy n bytů
- u typu varbinary je velikost v úložišti počet uložených bytů + 2 byty
Deklarace varbinary(max)
- použijeme-li tuhle deklaraci je maximální velikost úložiště 231-1 bytů
Mixed Mode ↔
- označovaný také jako SQL Server and Windows Authentication mode)
- který umožňuje ověřování uživatelů jak prostřednictvím Windows Authentication, tak prostřednictvím SQL Server Authentication (tzv. SQL loginy)
- kromě Windows účtů a skupin (např.
DOMENA\Uzivatel) je možné používat i účty, které jsou spravovány v SQL Serveru - SQL loginy jsou uloženy v databázi master
- umožňuje větší flexibilitu
- uživatelé z domény (nebo lokálních Windows účtů) se mohou ověřovat přes Windows Authentication
- externí uživatelé, aplikace ad. mimo firemní síť mohou využít SQL loginy
- obsahuje účet
sa („system administrator“) - výchozí SQL Server účet s nejvyššími oprávněními. - účet
sase aktivuje právě v Mixed Mode
Výhody
- Flexibilita
- možnost spravovat doménové uživatele i nezávislé SQL uživatele
- jedna instance SQL Serveru může obsluhovat jak interní firemní aplikace (Windows Authentication), tak externí (SQL loginy)
- Kompatibilita
- starší aplikace, které nepodporují Windows Authentication, mohou používat SQL loginy
- v některých scénářích je to jediný způsob, jak aplikace připojit
- Autonomie
- pro vybrané účely (test, vývoj, externí přístupy) může administrátor SQL Serveru spravovat účty, aniž by musel žádat o úpravu AD skupin
Nevýhody
- Nižší úroveň zabezpečení (obecně v porovnání s Windows Authentication)
- SQL Server musí udržovat a chránit hesla uživatelů.
- uživatel může mít slabé heslo (pokud není v SQL Serveru aktivní politika silného hesla)
- hesla jsou potencionálně zranitelnější, pokud je někdo uvidí v konfiguračním souboru aplikace
- Dvojí správa
- administrátor SQL Serveru musí udržovat dvě sady přihlašovacích údajů – Windows loginy a SQL loginy
- větší náchylnost k chybám, pokud se nezavede systematická politika (kdo používá Windows, kdo SQL loginy, jak se hesla mění atd.)
- Potenciální riziko sdílených účtů
- může se stát, že aplikace a uživatelé sdílí jeden SQL login - pak je těžké dohledat, kdo co dělal v databázi
Důvody pro použití Mixed Mode
- Externí přístup
- pokud se k SQL Serveru potřebují připojovat uživatelé či aplikace, které přístup do firemní domény (např. zákazníci, partneři, externí aplikace běžící mimo AD)
- Starší nebo nekonfigurovatelné aplikace
- některé starší aplikace vyžadují explicitně SQL loginy (např. předávají connectionstring s uživatelským jménem a heslem)
- aplikace, které neumí pracovat s integrovaným ověřováním
- Testovací a vývojové scénáře
- vývojáři často nastaví Mixed Mode, aby mohli rychle vytvářet testovací účty pro různá prostředí, bez nutnosti zasahovat do doménových skupin
- Scénáře bez domény
- v menších firmách nebo v izolovaných sítích, kde není k dispozici Active Directory, se mohou Windows účty spravovat lokálně, ale pro jednodušší administraci se přesto může použít SQL Authentication
Bezpečnostní a provozní aspekty
- Silná hesla a politika hesel
- je nutné mít zapnuté vynucení složitosti hesla a dobu expirace (pokud to odpovídá firemnímu standardu)
- především heslo pro
sa musí být velmi dobře zabezpečené, jelikož sa je výchozí nejvyšší administrátor
- Použití integrovaných bezpečnostních prvků
- SQL Server dokáže vynucovat Windows password policy i na SQL loginy, pokud běží na OS Windows Server
- možnost kontrolovat minimální délku, složitost a historii hesel
- Audit a logování
- doporučuje se zapnout auditing či aspoň logování neúspěšných pokusů o přihlášení (login auditing) → lze tak odhalit pokusy o útoky hrubou sílou
- Uzamčení a přejmenování
sa- v produkčním prostředí se doporučuje přejmenovat účet
sa - někdy se účet
sa zcela zakáže (disable)
- Přístupové role
- podobně jako u Windows Authentication je důležité nepřidávat SQL loginům globálně roli
sysadmin, pokud to není nutné - dodržovat princip nejmenších potřebných oprávnění (least privileges)
Windows Authentication Mode ↔
- spoléhá na ověřování pomocí Windows (Active Directory), takže pro přihlášení není potřeba spravovat další sadu uživatelských účtů v SQL Serveru.
- SQL Server důvěřuje mechanismu ověření uživatele v operačním systému Windows
- oprávnění a hesla spravuje přímo operační systém či doména Active Directory; hesla nejsou uložena v SQL Serveru
- vhodný pro interní firemní sítě se správou pomocí Active Directory
Výhody
- Vyšší bezpečnost
- samotný SQL Server neuchovává hesla pro uživatele využívající tento mód
- politika hesel (délka, složitost, platnost atd.) se řídí nastavením v AD (nebo lokálně v OS, pokud nejde o doménu)
- lze využít Kerberos protokol, který je bezpečnější než NTLM a podporuje pokročilé scénáře (např. delegaci, která se využívá v některých serverových aplikacích)
- Centralizovaná správa účtů
- všechny uživatelské účty a skupiny lze spravovat centrálně v doméně AD
- přidáním uživatele do skupiny v AD se mu automaticky udělí (či odejme) přístup i v SQL Serveru (pokud je tato skupina mapována na login)
- Jednoduchost přihlašování (Single Sign-On)
- uživatel se jednou přihlásí do Windows a poté se může připojit k SQL Serveru bez opětovného zadávání přihlašovacích údajů
- toto lze využívat i v některých aplikacích, které pracujíc s SQL serverem, např. MS Excel
- snižuje se riziko, že uživatelé budou volit slabá hesla (nebo je sdílet)
- Audit a sledování
- když je uživatel ověřen Windows, je v logu SQL Serveru i v auditních stopách vidět skutečný účet uživatele (např.
DOMENA\Uzivatel) - v případě potřeby je snazší dohledat odpovědnost za akce prováděné na serveru
Nevýhody
- Závislost na doménovém prostředí (AD)
- pro plné využití benefitů (např. Kerberos, jednodušší správa skupin) je ideální, když je SQL Server a klienti ve stejné (nebo důvěryhodné) doméně
- pokud organizace nemá doménu AD, může to být komplikované – i když Windows Authentication funguje i na lokální účty, správa je pak méně flexibilní
- nemožnost použití v non Windows prostředích
- Komplikovanější scénáře pro externí uživatele
- pokud potřebujeme povolit přístup do SQL Serveru i uživatelům mimo firemní síť (např. z internetu), bývá to náročnější na nastavení (VPN, federace identit, atd.).
- V některých případech to vede k potřebě Mixed Mode a k využití SQL loginu.
- Kerberos konfigurační nároky
- aby fungoval Kerberos na 100 % (např. pro delegaci nebo pro dvoucestnou důvěru), je potřeba správně konfigurovat tzv. Service Principal Name (SPN)
- nevhodné či chybné nastavení SPN může vést k selháním ověřování nebo k přechodu zpět na méně bezpečný NTLM
Jak to funguje
- Ověření na úrovni operačního systému
- uživatel se nejprve přihlásí do operačního systému Windows, typicky ve firemním prostředí do domény Active Directory (AD)
- při přihlášení Windows generují nebo obnoví přihlašovací token (Access Token), který obsahuje údaje o uživateli, případně o skupinách (Groups), do nichž je uživatel zařazen (platí zejména pro doménu AD)
- Předání tokenu
- když se uživatel pokusí připojit k SQL Serveru, Windows předají tomuto serveru Access Token
- SQL Server na jeho základě pozná, že uživatel byl již úspěšně ověřen v rámci Windows
- Mapování na SQL Server loginy a oprávnění
- SQL Server interně mapuje ověřenou identitu (uživatele nebo skupiny Windows/AD) na tzv. login v SQL Serveru
- pokud je tento login (nebo skupina) v SQL Serveru zaregistrovaný, může uživatel provádět akce dle přidělených oprávnění (role, přístup k databázím, apod.)
- Bez opětovného zadávání přihlašovacích údajů
- uživatel v praxi nevidí žádné další přihlašovací okno pro SQL Server - nezadává žádné přihlašovací údaje
- přihlášení proběhne na pozadí díky tokenu → princip Single Sign-On (SSO)
Bezpečnostní aspekty a doporučení
- Silná firemní bezpečnostní politika
- komplexní hesla, pravidelné změny hesel (pokud to firemní politika vyžaduje), zámek účtu po několika chybných pokusech – to vše je zajištěno na úrovni AD
- SQL Server se nemusí starat o implementaci a vynucení těchto pravidel
- Používat Kerberos, pokud je to možné
- Kerberos je bezpečnější a podporuje Single Sign-On, ověřování server-to-server, delegaci služeb atd.
- Při použití Active Directory se Kerberos aktivuje většinou automaticky, pokud je správně nastaven SPN (Service Principal Name)
- Logy a audit
- v SQL Serveru se do logu ukládá přímo doménový účet uživatele, což výrazně ulehčuje auditování
- je vhodné mít nastavené pravidelné reporty o úspěšných a neúspěšných přihlášeních.
- Oddělení privilegovaných rolí
- doporučuje se vytvořit v AD skupinu pro administrátory SQL Serveru a tu namapovat na roli sysadmin SQL serveru
- vyhýbejte se přidávání jednotlivých uživatelů na úroveň sysadmin, pokud to není nezbytné
- Ošetření připojení z jiných prostředí
- pokud aplikace běží mimo doménu, je potřeba určit, jak se bude ověřování řešit (VPN, federace AD FS, apod.)
SQL Server Agent ↔
- integrovaná služba v Microsoft SQL Serveru
- umožňuje automatizace úloh souvisejících se správou databází, systému apod.
- klíčová komponentou pro plánování, správu a monitorování opakovaných nebo jednorázových úkolů v rámci SQL Serveru
- umožňuje efektivně provádět úkoly a úlohy bez nutnosti manuálního zásahu, např. automatické zálohování
- konfigurace se provádí pomocí SSMS (SQL Server Management Studio) nebo pomocí nástroje Správa počítače - compmgmt.msc
Hlavní funkce SQL Server Agent
- Automatizace úloh (Jobs)
- umožňuje vytvoření, plánování a správu úloh, které mohou zahrnovat T-SQL skripty, systémové příkazy, zálohování databází, údržbu indexů ad. - Časové plánování (Schedules)
- podporuje komplexní plánování úloh, jako jsou denní, týdenní, měsíční úkoly nebo úkoly na základě specifických událostí - Oznámení a alerty
- při selhání nebo úspěšném dokončení úlohy může zasílat např. e-mailová upozornění, případně spouštět další akce (např. další job) nebo daný job opakovat apod. - Historie a monitoring
- uchovává podrobnou historii o prováděných úlohách, včetně informací o chybách a výkonu - Integrace s MS SQL Serverem
- je pevně integrovaný do SQL Serveru a využívá jeho bezpečnostní model a infrastrukturu
- může být spravován prostřednictvím SQL Server Management Studia nebo skriptování pomocí T-SQL
Architektura SQL Server Agent
SQL Server Agent je tvořen několika hlavními komponentami:
- Jobs (Úlohy)
- skládají se z jednoho nebo více kroků (steps)
- každý krok může vykonávat určitou akci, například spuštění T-SQL skriptu, spuštění externího programu, vykonání uložené procedury ad.
- Steps (Kroky)
- jednotlivé kroky, které job vykonává
- každý krok má definovaný typ (např. T-SQL, CmdExec, PowerShell)
- Schedules (Plány)
- definují, kdy a jak často se job spouští.
- Operators (Operátoři)
- uživatelské účty nebo kontakty, kterým jsou zasílána oznámení
- tito operátoři mohou s Joby dále pracovat
- Alerts (Upozornění)
- umožňují reagovat na systémové události, jako jsou chyby nebo změny stavu systému.
- Target Servers (Cílové servery)
SQL Server Agent podporuje více instancí serverů, což umožňuje spouštění jobů na různých cílových serverech
Job(y)↔
- Job v MS SQL Serveru je automatizovaná úloha, která provádí předem definované akce na základě naplánovaného času, reakce na událost nebo spuštění uživatelem
- Joby slouží ke zjednodušení správy databází tím, že umožňují automatizovat rutinní operace, jako je zálohování, údržba indexů ad.
- typické použití jobů:
- Automatizace pravidelného zálohování databází.
- Rekonstrukce nebo reorganizace indexů.
- Kontrola integrity databází.
- Odstraňování zastaralých záznamů (např. logy starší než 1 rok).
- Analýza pomalých dotazů a jejich logování.
- Automatizace generování a exportu reportů do souborů.
Komponenty Jobu
- Název a popis jobu
- každý job má unikátní název, který slouží k jeho identifikaci
- popis poskytuje stručný přehled o účelu jobu
- Kroky (Steps):
- Job se skládá z jednoho nebo více kroků, aždý krok definuje konkrétní úlohu
- typické kroky
- Spuštění T-SQL příkazu nebo uložené procedury
- Spuštění příkazového řádku (CmdExec)
- Spuštění PowerShell skriptů
- Plány (Schedules)
- určují, kdy a jak často bude job spuštěn
- Možnosti plánování
- Jednorázově v určený čas.
- Opakovaně (denně, týdně, měsíčně)
- V konkrétní dny v týdnu nebo měsíci
- Notifikace (Notifications)
- upozornění při úspěšném dokončení nebo selhání jobu
- notifikace mohou být zasílány e-mailem, zapisovány do logu, mohou spouštět alerty apod.
- Historie (History)
- SQL Server uchovává podrobné informace o každém spuštění jobu, včetně úspěšnosti a případných chyb
Vytvoření jobu pomocí SQL Server Management Studio (SSMS)
- Otevření SQL Server Agent:
- V SSMS rozbalte SQL Server Agent.
- Klikněte pravým tlačítkem na Jobs → New Job.
- Nastavení základních informací:
- V záložce General:
- Zadejte název jobu.
- Volitelně přidejte popis.
- Definování kroků jobu:
- Přejděte do záložky Steps a klikněte na New.
- Zadejte:
- Nastavte reakci na úspěch nebo selhání kroku (např. přejít na další krok, zastavit job).
- Plánování jobu:
- Přejděte do záložky Schedules a klikněte na New.
- Zadejte:
- Název plánu.
- Typ plánu (např. denní, týdenní, měsíční).
- Počáteční čas a datum.
- Frekvenci spuštění.
- Nastavení oznámení:
- V záložce Notifications:
- Nastavte způsob oznámení (např. e-mail při selhání).
- Ujistěte se, že je povolen Database Mail.
- Uložení a testování:
- Uložte job kliknutím na OK.
- Proveďte ruční spuštění jobu, abyste ověřili jeho funkčnost.
2. Vytvoření jobu pomocí T-SQL:
Pomocí následujícího skriptu můžete vytvořit job, který zálohuje databázi
USE msdb;
GO
-- Vytvoření jobu
EXEC sp_add_job
@job_name = N'BackupDatabaseJob',
@enabled = 1,
@description = N'This job performs a daily backup of the database.',
@start_step_id = 1;
-- Přidání kroku
EXEC sp_add_jobstep
@job_name = N'BackupDatabaseJob',
@step_name = N'BackupDatabase',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [MyDatabase] TO DISK = ''C:\Backups\MyDatabase.bak'' WITH INIT, COMPRESSION;',
@on_success_action = 1;
-- Nastavení plánu
EXEC sp_add_jobschedule
@job_name = N'BackupDatabaseJob',
@name = N'DailySchedule',
@freq_type = 4, -- Denní plán
@freq_interval = 1, -- Každý den
@active_start_time = 030000; -- Spuštění ve 03:00
-- Přiřazení jobu SQL Server Agent
EXEC sp_add_jobserver
@job_name = N'BackupDatabaseJob';
GO
Správa jobů
- Zobrazení a úprava jobů:
- V SSMS přejděte do SQL Server Agent → Jobs.
- Klikněte pravým tlačítkem na job → Properties.
- Ruční spuštění jobu:
- Pravým tlačítkem na job → Start Job at Step.
- Prohlížení historie jobů:
- Pravým tlačítkem na job → View History.
- Historie zobrazuje všechny pokusy o spuštění, jejich výsledky a případné chyby.
- Notifikace:
- Ujistěte se, že jsou notifikace aktivní pro operátory (nastavte v SQL Server Agent → Operators).

sysadmin ↔
- systémový administrátor
- "nejmocnější" role v SQL Serveru
- uživatelé s touto rolí mají neomezený přístup ke všem databázím a nastavením
- mohou provádět jakékoliv operace, včetně mazání databází a uživatelských účtů
- má neomezený přístup ke všem databázím a objektům
- nikdo nemůže omezit její oprávnění – jedná se o absolutní kontrolu nad SQL Serverem
- je třeba ji přidělovat opatrně, protože uživatelé mohou provádět nevratné změny
- pokud možno, nepoužívat ji pro běžnou práci s SQL Serverem
- možnost spravovat zabezpečení SQL Serveru
- možnost ukončovat procesy v SQL Serveru
- možnost provádět zálohování a obnovu databází
- automaticky přebírá všechna oprávnění, včetně nově vytvořených objektů
Bezpečnostní opatření pro tuto roli
- důsledně monitorovat a auditovat aktivitu pomocí SQL Audit
- omezit přístup a používání
- použít vícefaktorovou autentizaci
- používání specializovaných administrátorských účtů s nižšími rolemi
- zálohovat důležité databáze před změnami na úrovni SQL serveru
- roli přidělovat pouze hlavním administrátorům SQL Serveru.
- nepřidělovat tuto roli vývojářům, analytikům nebo běžným uživatelům
Jak si zobrazit, kdo všechno má roli sysadmin?
SELECT pr.name AS [User], sp.type_desc AS [User Type]
FROM sys.server_role_members rm
JOIN sys.server_principals pr ON rm.member_principal_id = pr.principal_id
JOIN sys.server_principals sp ON pr.principal_id = sp.principal_id
WHERE rm.role_principal_id = SUSER_ID('sysadmin');
Jak se stát sysadmin, pokud nemáte oprávnění?
Pokud nemáte přístup k SQL Serveru a potřebujete získat roli sysadmin, můžete zkusit:
Spuštění SQL Serveru v režimu obnovení administrátorského přístupu
- Zastavit SQL Server (např. přes
SQL Server Configuration Manager) - Spustit SQL Server v režimu
single-user - Připojit se pomocí
sqlcmd a vytvořit nového sysadmina:
sqlcmd -S localhost CREATE LOGIN NewAdmin WITH PASSWORD = 'SecurePass123';
ALTER SERVER ROLE sysadmin ADD MEMBER NewAdmin;
GO
Po dokončení restartujte SQL Server normálně
serveradmin
- správce serveru
- typicky se přiděluje správcům, kteří potřebují měnit konfiguraci serveru, provádět správu serveru bez plného přístupu k uživatelským databázím
- může měnit konfiguraci serveru
- může restartovat SQL Server
- nemá přímý přístup ke všem databázím, pokud mu nejsou přidělena další oprávnění
- může částečně měnit bezpečnostní nastavení
- může provádět monitorování provozu serveru
- nutno dodržovat bezpečnostní opatření - viz role sysadmin
Kdo má roli serveradmin?
SELECT pr.name AS [UserName], pr.type_desc AS [UserType]
FROM sys.server_role_members rm
JOIN sys.server_principals pr ON rm.member_principal_id = pr.principal_id
WHERE rm.role_principal_id = SUSER_ID('serveradmin');
securityadmin
- správce zabezpečení
- má zásadní pravomoci v oblasti správy uživatelů (loginů), oprávnění a dalších bezpečnostních nastavení
- Správa serverových přihlašovacích údajů (loginů)
- vytváření, úprava a mazání loginů (např. SQL loginy nebo Windows loginy).
- nastavování (či resetování) hesel pro SQL Server loginy
- konfigurování vlastností loginu (např. povinné změny hesla, omezení platnosti hesla)
- Přiřazování a odebírání serverových oprávnění
- může grantovat, revokovat či deny server-level oprávnění (např.
CONNECT SQL nebo práva na řízení auditů). - v závislosti na interním nastavení SQL Serveru může do určité míry spravovat i členství v jiných rolích
- přiřazovat většinu serverových oprávnění a rolí, s výjimkou některých vyhrazených situací (např. role
sysadmin).
- Správa certifikátů a klíčů (pokud je to povoleno v rámci serveru)
- může dohlížet na bezpečnostní objekty týkající se šifrování (certifikáty, asymetrické a symetrické klíče)
- určité akce (např. úplné odebrání šifrovacích klíčů) mohou vyžadovat vyšší oprávnění
- Částečné řízení bezpečnostní politiky
- může měnit nastavení, která mají dopad na bezpečnost serveru (např. zásady pro hesla), pokud to nevyžaduje oprávnění
sysadmin
- může vytvářet a spravovat uživatelské účty (loginy)
- může měnit oprávnění ostatních uživatelů
- nemůže sám sobě přidělit vyšší oprávnění (např. sysadmin)
Protože securityadmin může spravovat loginy a jejich oprávnění, existuje riziko eskalace – člen této role může např. přidělit jinému uživateli nebo sobě samotnému role s vyšším oprávněním, pokud to konfigurace serveru dovoluje. Proto je nutné tuto roli udělovat pouze důvěryhodným administrátorům.
Princip rolí
- role v Microsoft SQL Serveru umožňují efektivní správu oprávnění uživatelů a skupin uživatelů
- použitím rolí lze přiřazovat a spravovat oprávnění pro skupiny uživatelů místo jednotlivých účtů, což zjednodušuje administraci a zvyšuje bezpečnost
- SQL Server obsahuje mechanismus řízení přístupu na základě rolí (Role-Based Access Control, RBAC)
- uživatelé se přidělují do rolí, které jim udělují oprávnění k provádění specifických úkolů.
Hlavní výhody
- Snadnější správa uživatelů – místo správy oprávnění jednotlivých uživatelů je možné definovat role a přiřadit je více uživatelům
- Bezpečnost a konzistence – zabraňuje přidělování nadbytečných oprávnění jednotlivým uživatelům
- Centralizovaná kontrola přístupu – minimalizuje riziko chyb při ručním nastavování oprávnění
processadmin
- umožňuje monitorování a správu běžících procesů (session) v rámci celé instance SQL Serveru
- uživatelé s touto rolí mohou například ukončovat blokované nebo nevyžádané procesy, čímž mají vliv na běh a výkon databázového systému
- Monitorování procesů
- pomocí systémových pohledů (např.
sys.dm_exec_sessions) nebo systémových uložených procedur (např. sp_who, sp_who2) mohou správci monitorovat informace o připojených procesech, jejich stavu, blokování apod.
- Ukončování procesů (KILL)
- Omezené konfigurační pravomoci
- neumožňuje provádět úpravy konfigurace, spravovat uživatele nebo zasahovat do struktury databází
- účel je především operativní a výkonová správa (tj. řízení procesů a řešení výkonových problémů)
Server Roles - Serverové role
Typy serverových rolí:
- Předdefinované serverové role (built-in server roles) – jsou již vestavěné - nadefinované v SQL Serveru
- Uživatelsky definované serverové role (user defined server roles) – mohou být vytvořeny správci podle potřeby
Přiřazení role
pomocí SSMS
Security → Server Roles->pravé tlačítko na roli → Properties → Add - přidat uživatele nebo skupinu uživatelů

nebo příkazem (příklad - přiřazení role sysadmin)
ALTER SERVER ROLE sysadmin ADD MEMBER [user_name]
Odebrání role
ALTER SERVER ROLE sysadmin DROP MEMBER [user_name]
Přehled serverových rolí
