Při implementaci konfigurace pro SQL Server je klíčové zajistit správnou funkčnost nejen z hlediska bezpečnosti, ale také výkonu a operací. V tomto textu si probereme, jak používat DSC (Desired State Configuration) pro automatizaci a zajištění konzistence konfigurace SQL Serveru. Bude se jednat o několik klíčových oblastí, jako je bezpečnost, výkon a operace, přičemž budeme používat moduly jako SqlServerDsc, které nám umožní efektivně spravovat SQL Server.
Začneme analýzou konfigurace bezpečnostních požadavků. Ujistíme se, že citlivé funkce, jako je xp_cmdshell, budou vypnuté. Tento krok je nezbytný pro zabezpečení instance SQL Serveru, protože xp_cmdshell může být zneužit k provádění neautorizovaných příkazů na serveru. Použití DSC pro tuto konfiguraci znamená, že funkce bude automaticky deaktivována, čímž se sníží riziko bezpečnostních incidentů.
Další klíčová konfigurace, kterou se budeme zabývat, je zakázání OLE Automation Procedures. Tato funkce může být užitečná, ale zároveň představuje riziko, pokud není správně zabezpečena. Opět použijeme DSC pro její deaktivaci a tím ochráníme server před potenciálními zneužitími.
Dalším důležitým krokem je zajištění, že skupina Windows Authenticated Users nebude mít přístup k SQL Serveru. Pro tuto konfiguraci se použije SqlLogin z modulu SqlServerDsc, kde nastavíme parametr Ensure na hodnotu Absent. Tento krok je důležitý pro prevenci neautorizovaného přístupu do databáze.
Pokud jde o výkonnostní konfigurace, je třeba zajistit optimální nastavení pro parametry jako MAXDOP (Maximum Degree of Parallelism), které mají přímý vliv na výkon SQL Serveru. Pomocí DSC můžeme automaticky nastavit hodnoty pro MAXDOP tak, aby odpovídaly velikosti serveru a jeho požadavkům. Pokud máme server s více NUMA (Non-Uniform Memory Access) uzly, je vhodné implementovat vlastní logiku pro optimalizaci této hodnoty.
Dále se zaměříme na konfiguraci paměti serveru, kde chceme nastavit minimální a maximální využití paměti tak, aby SQL Server měl dostatek prostředků pro efektivní provoz, ale zároveň nechával dostatek paměti pro operační systém. Nastavení 75 % dostupné paměti pro SQL Server je optimální volbou pro většinu prostředí. Použití DSC pro automatické nastavení těchto hodnot zjednodušuje administraci a zajišťuje, že se konfigurace nikdy neodchýlí od požadovaných hodnot.
V oblasti operací je třeba se zaměřit na správu přístupů a rolí v SQL Serveru. Pro efektivní správu práv je nutné vytvořit uživatele, který bude mít administrativní oprávnění, a to buď pro specifickou skupinu, jako je například DBATeam, nebo pro jednotlivé uživatele. Pomocí DSC můžeme zajistit, že všechny role a přístupy budou odpovídat stanoveným bezpečnostním politikám, čímž se sníží riziko lidských chyb nebo neautorizovaných změn.
Pro zajištění minimální administrativní zátěže je vhodné automatizovat procesy, které by normálně vyžadovaly ruční zásah, jako je například přidávání nových členů do administrátorských rolí. Tento proces lze snadno automatizovat pomocí kombinace SqlLogin a SqlRole prostředků v DSC. Například zajistíme, že skupina DBATeam bude mít přístup k roli sysadmin bez potřeby manuálního nastavování práv každého jednotlivce.
Ve všech těchto případech je zásadní, aby byly správně nastaveny parametry v rámci DSC, jako jsou Ensure, OptionName, OptionValue, a další, které definují požadovaný stav. Použití těchto prostředků zaručuje, že konfigurace bude vždy splňovat předem stanovené požadavky bez nutnosti lidské intervence.
Důležité je také mít na paměti, že tyto konfigurace nejsou statické. Měly by být pravidelně revidovány a aktualizovány v závislosti na měnících se podmínkách serveru nebo nových požadavcích na bezpečnost a výkon. Implementace DSC poskytuje flexibilitu pro tyto změny a zároveň zaručuje, že každý SQL Server bude i nadále fungovat v souladu s nejnovějšími bezpečnostními standardy a výkonnostními požadavky.
Jak využít metody exist, value a query k analýze dotazů v SQL Serveru
Metoda exist se obvykle používá v klauzuli WHERE, což je klíčové pro filtrování výsledků podle specifických podmínek v XML datech, která se generují při analýze dotazů SQL Serveru. Mnoho administrátorů databází si může všimnout, že výsledky dotazů, jako je například dotaz v ukázkách 1-20 a 1-21, obsahují množství interních dotazů generovaných SQL Serverem, stejně jako různé DBA operace, jako je přístup k metadatům záloh.
Pro efektivní analýzu plánů dotazů, které používají operace typu scan, je třeba kombinovat metody exist, value a query v jednom dotazu. Tato kombinace umožňuje vybrat pouze ty plány, které používají konkrétní operace, jako je skenování tabulek uživatele, a zároveň vyloučit všechny operace, které se neprovádějí na uživatelských tabulkách.
V dotazu v ukázce 1-22 je metoda exist použita k filtrování výsledků, které obsahují atributy @Schema s hodnotami [sys] nebo [dbo]. Tímto způsobem se z výsledků vynechávají plány, které se týkají systémových objektů nebo objektů správy databází. Tento přístup je zásadní pro získání relevantních informací o chybějících indexech u uživatelských tabulek.
Ukázka dotazu v Listing 1-22 ukazuje, jak lze použít metodu CROSS APPLY k procházení XML reprezentace plánu dotazu a jak z ní extrahovat relevantní údaje. Pomocí nodes() je možné iterovat přes všechny elementy, které odpovídají specifickému XPath výrazu, a následně filtrujeme objekty podle jejich schématu, což nám pomáhá zaměřit se pouze na tabulky uživatele.
Dále, v Listing 1-23, je kombinace metod exist, value a query použita pro analýzu drahých dotazů, které zahrnují operace typu scan. Použití těchto metod ve WHERE klauzuli pomáhá omezit dotazy na operace, které provádějí skenování tabulek. Pomocí metody value je možné extrahovat atributy, jako je @Schema a @Table, což nám poskytuje konkrétní informace o tom, které tabulky mohou mít problémy s indexováním. Kromě toho metoda query umožňuje extrahovat celé XML pro konkrétní operace v rámci plánu dotazu, což dává podrobnosti o operacích, které byly provedeny.
Tento přístup je užitečný zejména při analýze výkonnostních problémů, kde je třeba rychle identifikovat dotazy, které nejvíce zatěžují systém kvůli neefektivnímu používání skenování tabulek. V takových případech může být analýza plánů dotazů pomocí těchto metod klíčová pro optimalizaci výkonu SQL Serveru.
Důležité je také věnovat pozornost struktuře plánů dotazů a způsobu, jakým SQL Server vykonává různé operace na základě existujících indexů. Množství operací, které využívají skenování místo efektivního vyhledávání pomocí indexů, může vést k výraznému zpomalení výkonu systému.
Endtext
Jak PowerShell mění přístup správců k automatizaci SQL Serveru a systémové správě?
PowerShell, jako skriptovací jazyk vyvinutý společností Microsoft, představuje zásadní posun v oblasti automatizace, správy systémů a cloudových platforem. Je postaven na .NET Common Language Runtime, což poskytuje širokou škálu funkcionalit hned po instalaci, přičemž jeho objektový model umožňuje hlubokou rozšiřitelnost. PowerShell se stal preferovaným nástrojem nejen pro správu SQL Serveru, ale i dalších klíčových podnikových platforem jako Microsoft Exchange, Azure nebo AWS. Verze PowerShell Core (od verze 7) přináší podporu i pro systémy macOS a Linux, včetně distribucí jako Red Hat, Ubuntu či Debian.
PowerShell lze využívat dvěma způsoby – buď jako příkazový shell pro spouštění ad hoc příkazů (cmdlets), nebo jako plnohodnotný skriptovací jazyk. V příkazovém režimu nabízí PowerShell bohatší zkušenost než klasický cmd shell – vrací objekty místo prostého textu, podporuje historii příkazů a automatické dokončování. V tomto režimu je možné rychle testovat příkazy, analyzovat výstupy a okamžitě je propojovat přes pipeline. Jako skriptovací jazyk umožňuje PowerShell psaní pokročilých skriptů využívajících třídy, dědičnost, metody a vlastnosti – vše v duchu plnohodnotné objektově orientované architektury.
Z hlediska bezpečnosti hraje klíčovou roli tzv. Execution Policy – mechanismus, který určuje, zda je možné na systému spouštět skripty, načítat konfigurační soubory a profily. Na Windows je výchozí politika závislá na typu zařízení: na klientech je nastavena jako Restricted, na serverech obvykle jako RemoteSigned. Lze ji však upravit – buď pro celý systém, aktuálního uživatele, nebo jen pro právě běžící PowerShell session. Uživatelé by měli vždy zohlednit doporučení bezpečnostního oddělení své organizace. Pro vývojové účely, například při testování kódu z této knihy, je často vhodné nastavit politiku na Unrestricted, s využitím příkazu Set-ExecutionPolicy Unrestricted, spuštěného v administrátorském režimu.
Jazyková konzistence PowerShellu je postavena na standardizovaném pojmenování příkazů ve formátu Sloveso-PodstatnéJméno (např. Get-Process, Set-Item). Tato konvence zajišťuje čitelnost a předvídatelnost kódu a zároveň umožňuje využití IntelliSense funkcionality v prostředí jako je Visual Studio Code. Vývojář či správce tak nemusí příkazy složitě hledat, často stačí zadat sloveso a nabídka doplní možné varianty podle kontextu. Existuje schválený seznam sloves, mezi nejběžnější patří například Get, Set, New, Remove, Invoke, Start, Stop nebo Test.
PowerShell rovněž podporuje aliasy, které usnadňují přechod uživatelům z jiných prostředí – příkazy jako dir nebo ls jsou přesměrovány na odpovídající cmdlety (Get-ChildItem). Díky tomu lze PowerShell snadno osvojit i bez hlubokých předchozích znalostí – uživatelé si mohou osvojit nové paradigma bez nutnosti vzdát se navyklých příkazů z DOSu či BASHe.
V rámci SQL Serveru nachází PowerShell uplatnění nejen v základní správě instancí, ale i při pokročilé práci s DMV (Dynamic Management Views) a DMF (Dynamic Management Functions). V kombinaci s operátorem APPLY v T-SQL může správce databáze efektivně aplikovat funkce na jednotlivé řádky výsledků – CROSS APPLY vrací jen řádky s nenulovým výsledkem, zatímco OUTER APPLY ponechává všechny, včetně těch s NULL. Tento přístup je užitečný například při analýze výkonu databáze, identifikaci problémových dotazů nebo monitoringu systémových prostředků.
Důležitou roli zde hraje i technologie XML. Pro správce databází je nezbytné umět nejen převádět relace do XML dokumentů pomocí FOR XML v dotazech, ale také zpětně extrahovat hodnoty z XML pomocí XQuery. Tento přístup nahrazuje neefektivní kurzory a umožňuje práci s daty ve strukturované podobě. Správci, kteří používají XQuery místo kurzorů, nejen zvyšují výkonnost svých řešení, ale také udávají směr vývoje ostatním – tvoří příklady dobré praxe.
V t

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский