Archiív rubriky: MS SQL Server

Datový skladMS SQL Server je software vyvinutý společností Microsoft, který obsahuje databázový engine a řadu features, které pomáhají databáze vyvíjet, udržovat a efektivně používat. Mezi takové featury patří SQL Server Integration services, SQL Server Reporting Services, SQL Server Analysis Services a další funkce jako například Master data management.

SQL Nastavení emailování z gmailu – Database mail (Díl 1.)

Funkce database mail je dostupná pouze v edici SQL Server Standard a vyšší. V edici SQL Server Express se s ním bohužel nesetkáme. Tato funkce je užitečná především pokud chcete posílat různé zprávy ze SQL Serveru na Váš email. Typicky jde o různé kontroly a notifikace a upozornění. V neposlední řadě je tato funkce využitelná při… Čtěte více »

SQL Change data capture (CDC) – Tracking změn nad tabulkou

V aplikacích nebo komplikovaných podnikových informačních architekturách často potřebujeme z různých důvodů řešit historizaci záznamů a trackování změn hodnot. Většinou to bývá zejména z bezpečnostních důvodů => potřebujeme sledovat kdo a co mění, případně být schopni opravit chybu třeba ze strany uživatele nebo db admina. Dalším dobrým důvodem pro nasazení CDC je třeba to, že… Čtěte více »

Jak vygenerovat skript pro všechny objekty (tabulky, views, procedury, funkce) v databázi?

Důvodů proč bychom mohli potřebovat vytvořit definici všech SQL objektů v určité databázi může být hromada – zálohování, source controll nebo nasazení databáze v jiném prostředí (na jiné SQL instanci). Je to celkem triviální, SQL Server má pro tyto účely integrován jednoduchý nástroj. Jak vygenerovat skripty pro tabulky, views, procedury, funkce v databázi? (1) Klikneme pravým… Čtěte více »

Fakta a dimenze – Tabulky v datovém skladu

Datový sklad je centrální informační systém, který slouží k uchování dat z jednoho nebo více podnikových operačních systémů, případně dalších externích zdrojů (excel, sharepoint, apod). Data jsou v datovém skladu organizována do schémat a před uložením projdou procesem čištění a úpravou struktury dat tak, aby byla pro uživatele srozumitelná a dale se jednoduše reportovat. Narozdíl… Čtěte více »

SQL Vytvoření databáze (CREATE DATABASE) + skript

Databáze je systém souborů a objektů, které jsou v rámci databáze uspořádány a provázány prostřednictvím klíčů. V databázi SQL Server můžeme najít objekty jako – tabulky, pohledy (views), funkce, procedury, triggery a další. V zásadě máme 2 možnosti jak databázi vytvořit. První možnost je vytvoření databáze naklikat v SQL management studio nebo databázi založit pomocí… Čtěte více »

SQL Parallelism, paralelní zpracování dat – 2 a více procedur současně?

Spuštění více než 1 procedury v 1 čas nemusí být tak jednoduchá úloha jak se zdá, zejména pokud jednotlivé procedury mají mezi sebou závislosti – tzn nějaká sada procedur podmiňuje spuštění jiných procedur. Jak tedy udělat paralelismus (Parallelism)? Když si zrekapitulujeme možnosti které se nám nabízejí: Parallelism procedur v jedné session v SQL skriptu –… Čtěte více »

Optimalizace a zrychlení SQL dotazů – 10 tipů s ukázkou

Optimalizace sql dotazů je věčný boj, který začíná už při návrhu architektury databáze a škálování prostředků serveru. Při správném návrhu architektury se můžeme vyvarovat spoustě výkonových problému v budoucnu. V neposlední řadě výkon skriptů můžeme ovlivnit strukturou SQL dotazů a správně nastavenými indexy. Článek rozdělím na 2 hlavnní části: Jak optimalizovat pomocí SQL Architektury Jak… Čtěte více »

SQL Počet řádků a velikost tabulek v databázi + skript

Jednou za čas je potřeba se podívat na to, jak vypadají DB objekty v databázi s ohledem na velikost tabulek (počet řádků a storage). Jak zkontrolovat velikost tabulek v SQL databázi Pokud objektů v databázi není mnoho, tak můžeme kontrolu provést přímo ve vlastnostech jednotlivých tabulek v poli Data space a index space. Velikost tabulky… Čtěte více »

SQL Error hlášky a závažnost (severity) – sys.messages + Popis

V SQL Server existuje systémová tabulka, ve které jsou uloženy všechny možné Error stavy a jejich závažnost = severity. Error severity nabývá hodnot 0-25 a definuje závažnost chyby. Všechny zprávy se kterými se můžeme v SQL Server setkat jsou uloženy v tabulce sys.messages. USE MASTER SELECT * FROM SYS.MESSAGES WHERE language_id = 1033 Tabulka obsahuje… Čtěte více »

SQL Hierarchie Díl 3 – Jak na hierarchie v SSRS – Reporting services

V seriálu o hierarchiích pokračujeme dalším článkem. Minule jsem ukazoval Jak správně vytvořit hierarchii v databázi a Jak se dá rekurzivním dotazem dotazovat na hierarchii v SQL. Dnes zabrousíme do Reporting Services, které mají integrovanou podporu pro hierarchie v SSRS nativně. Nemusíte tak data před reportováním nijak transformovat a vše funguje “na tlačítko”. Jak reportovat… Čtěte více »

SQL Hierarchie Díl 1 – jak správně vytvořit parent-child strukturu v tabulce?

Někdy potřebujeme v SQL vytvořit tabulku, která obsahuje hierarchii. Hierarchie je struktura (někdy se označuje jako parent-child hierarchie), která obsahuje závislosti mezi jednotlivými členy. Můžeme si to představit jako organizaci ve firmě. Firma má zaměstnance a ti mají svého nadřízeného. Nadřízení zaměstnanci mají opět svého nadřízeného a takto můžeme pokračovat až k CEO firmy, který… Čtěte více »

SQL Automatická oprava indexů v SQL Server + skript

V minulém článku (viz. Fragmentace indexů) jsem popisoval, jak zjistit fragmentaci indexů přes skript využívající systémové tabulky. Podle doporučení Microsoftu bychom měli indexy s fragmentací mezi 5 – 30 % reorganizovat (REORGANIZE) a indexy nad 30 % rebuildovat (REBUILD). Využijeme zde skript z minulého článku a vytvoříme automatický skript. Oprava indexů provedená tímto způsobem je… Čtěte více »

SQL Fragmentace indexů – ukázka + sql skripty

Indexy jsou základním pilířem optimalizace SQL dotazů z databáze. Pomocí nich můžeme výrazně zrychlovat operace typu čtení. Bohužel se nám v čase indexy kazí – fragmentují a uspořádání indexů se zhoršuje. Fragmentace indexu je dána tím, že do tabulky se postupně vkládají nebo mažou záznamy a indexy se poté už neoptimalizují. To znamená že jednotlivé… Čtěte více »

SQL # Tempová tabulka – Rozdíl mezi # a ## temp tabulkou

Tempová tabulka s hashtagem # nebo ## je dočasná tabulka, která je uložena v systémové databázi tempdb. Tabulka existuje pouze po dobu, po kterou je otevřena user session ID. Rozeznáváme 2 typy tempových tabulek: Lokální # tempová tabulka – je přístupná pouze v rámci dané session, tzn vidí ji pouze uživatel vykonávající skript Globální ## tempová… Čtěte více »

SQL příkaz BULK INSERT – import dat ze souboru

V minulém článku jsem popisoval jak funguje bcp utilita, která slouží k import a exportu dat nad SQL Server. Příkaz BULK INSERT funguje na podobném principu a jeho prostřednictvím můžeme provádět importy ze souboru a definovat oddělovače. Syntaxe příkazu BULK INSERT BULK INSERT databaze.schema.tabulka FROM‘zdrojovy soubor’ WITH ( FIELDTERMINATOR = ‘<oddělovač sloupců>’, ROWTERMINATOR = ‘<oddělovač… Čtěte více »

BCP utilita – rychlý bulk import a export v SQL Server

BCP je utilita, která je defaultně nainstalována s edicemi SQL Server a slouží k hromadnému importu nebo exportu velkého objemu dat v uživatelsky definovaném formátu. Tato utilita je optimalizována pro velké přesuny dat buďto mezi instancemi SQL serveru nebo mezi SQL instancí a nějakým textovým souborem. Utilita se používá jak pro jednorázový import/export dat, tak… Čtěte více »

xp_cmdshell – Jak zapnout cmdshell v SQL Server?

xp_cmdshell je opravdu velmi silná procedura, která umožňuje spouštět příkazy přes příkazovou řádku (cmd). Pomocí cmdshell můžete přes SQL platformu realizovat jakoukoliv operaci nad Windows serverem – např. kopírování souborů, vytváření, mazání, apod. Z ale toho ale plynou také velká bezpečnostní rizika. Proto je také procedura defaultně vypnutá a nedoporučuje se její trvalé zapnut z… Čtěte více »

SQL Server Agent pro SQL Express + návod

SQL Server agent je nástroj integrovaný do SQL Serveru, jehož hlavním účelem je automatické plánování a spouštění úloh. Prostřednictvím SQL Agenta si můžeme založit tzv. Job a v rámci Jobu naplánovat jednotlivé úlohy – třeba spuštění skriptu, SSIS package, powershellu a mnoho dalšího. SQL Server agent je ale bohužel dostupný až od edice Standard a… Čtěte více »

SQL SQLCMD (Server command line) – SQL přes cmd

V tomto krátkém článku představím možnost, jak lze spustit sql skript mimo SQL management studio nebo jiný SW nástroj. Použijeme utilitu SQL server command line, zkráceně sqlcmd. Tato utilita umožňuje pracovat se SQL serverem prostřednictvím příkazové řádky. Využití je zřejmé a to třeba práce s SQL z různých aplikací. Já si tímto příspěvkem připravuju půdu… Čtěte více »