SQL Server

Výpis všech indexů a jejich interní a externí fragmentace

Zjištění míry fragmentace indexů napříč je základní předpoklad pro volbu vhodné strategie optimalizace indexů pomocí rebuild/reorganize operací. Všechny podstatné informace lze získat využitím systémové funkce sys.dm_db_index_physical_stats() a jejím spojením se systémovými pohledy, které nám poskytnou dodatečné informace nutné pro identifikaci indexu.

Read more
SQL Server

Rebuild všech indexů v databázi

Nedílnou součástí správy databáze z pohledu výkonu je pravidelná údržba indexů, zejména tam, kde databáze není určena především pro čtení, ale míra DML operací převažuje nad čtením dat. Pomocí přiloženého skriptu je možné provést jednorázový rebuild všech indexů ve všech databázích na spravované instanci, případně skript upravit tak, aby rebuildoval indexy…
SQL Server

Odstranění duplicitních řádků

Existuje řada způsobů, jak z tabulky odstranit duplicitní řádky. Jedním z nich je využití analytické funkce spolu s CTE (Common Table Expression). Pomocí analytické funkce ROW_NUMBER() získáme pro každý řádek číslo, které bude unikátní vždy v rámci dané partition, kterou v příkladu níže vytvoříme tak, že pomocí klauzule PARITION BY…
SQL Server

Jednoduchý batch generátor a jeho praktické využití

V praxi se často můžeme setkat s nutností provádět některé operace po částech či ve více transakcích, protože pokud bychom je vykonali jako jedinou operaci, bude vše trvat neúměrně dlouho, případně si provedení operace může vyžádat systémové prostředky, které nemáme. Nejčastěji se s tímto scénářem setkáme v případě mazání řádků…

Read more
SQL Server

Partitioned pohledy

Partitioned pohledy představují mocný nástroj a rychlou alternativu ke klasickému partitioningu tabulek. Umožňují nám rozdělit velkou tabulku do několika menších tabulek. Data jsou mezi jednotlivými tabulkami rozdělena podle rozsahu hodnot v jednom sloupci, který jsme zvolili jako klíč. Nad tímto sloupcem je v každé tabulce pomocí CHECK omezení určen rozsah hodnot,…
SQL Server

Zakázání a povolení všech constraintů nad tabulkou

Při práci s tabulkami, které mají cizí klíče zajišťující integritu dat, často řešíme problém, jak tyto klíče a jiná omezení dočasně vypnout, abychom mohli například provést změnu dat v tabulce, rychlý import velkého množství dat či manipulaci s jinou tabulkou, na kterou se původní tabulka odkazuje. Cizí klíče a jiná…
SQL Server

sp_get_query_template

Systémová procedura sp_get_query_template je nenápadný, ale velmi užitečný pomocník. Primárně je sice určena pro vytváření šablon dotazu pro plan guidy, ale stejně tak dobře ji můžeme využít pro scénář, kdy máme rozsáhlé query s řadou parametrů a z nějakého důvodu potřebujeme dotaz volat z dynamického sql, např. pro různé databáze…

Read more
SQL Server

Nedokumentované uložené procedury

Každá edice SQL Serveru zahrnuje množství uložených a extended procedur, které nejsou zmíněny v oficiální dokumentaci, což znamená především to, že jsou určeny pouze pro interní potřebu Microsoftu a mohou být kdykoliv změněny nebo odstraněny. Přesto je spousta z nich nebývale užitečná a používána široce i komunitou. Dnes se podíváme…
SQL Server

Generování dat do HTML pomocí T-SQL

V praxi se čas od času objeví požadavek, vygenerovat pomocí T-SQL jazyka výstupní data přímo ve formátu HTML, např. pro export do webové aplikace. Náramně užitečné to může být i v případě, pokud si necháváme přímo z SQL Serveru posílat různé emailové notifikace a rádi bychom je doplnili daty tak,…
SQL Server

Připojení Resource databáze

Resource databáze je systémová databáze SQL Serveru, která normálně není uživateli přístupná a není ani viditelná ve stromu databází v Management Studiu. Přesto se objekty v ní obsažené zobrazují v každé uživatelské databázi v rámci sys.* a dalších schémat. V běžné praxi nenarazíte na nutnost se jí jakkoliv zabývat (kromě…

Read more