T-SQL

Vzorová syntaxe CURSORu

Dvě základní šablony kurzoru. Liší se především syntakticky, kdy druhá varianta nevyžaduje opakované kopírování seznamu parametrů v příkazu FETCH, což je výhodné zejména tehdy, načítá-li kurzor velké množství sloupců z deklarativního dotazu.

Read more
SQL Server

Nalezení textového řetězce v databázi

V případě, že máme neznámou nebo rozsáhlou databázi a snažíme se dohledat výskyt určitých dat, aniž bychom tušili, v které tabulce je máme hledat, stojíme před otázkou, jak prohledat všechny tabulky, zda se v nich určitý řetězec vyskytuje. Stejný problém budeme řešit i v případě, že máme databázi, která nepoužívá…
SQL Server

IDENTITY sloupec se záporným inkrementem

Kromě klasického nastavení IDENTITY(1,1), tedy inkrementace od jedničky a vždy o +1, můžeme nastavit inkrement i záporný, tedy vždy odečítat jedničku, jak je vidět v příkladu níže.
T-SQL

Paralelní INSERT… SELECT

SQL Server 2016 přináší nově paralelní vykonání INSERT…SELECT kombinace, které za určitých okolností představuje výrazné (10x a více) zlepšení výkonu pro některé typické ETL scénáře. Aby mohl být použit paralelní operátor, musí být splněny především dvě podmínky: level kompatibily databáze musí být nastaven na 130 a je nutné použít TABLOCK…

Read more
SQL Server

CURRENT_TRANSACTION_ID()

CURRENT_TRANSACTION_ID() je nenápadná, ale nadmíru užitečná funkce, která přichází v SQL Serveru 2016 a umožňuje nám zjistit, jaké číslo má aktuální transakce v určitém připojení (session). Před SQL Serverem 2016 bylo možné stejnou informaci zjistit ze systémového pohledu sys.dm_tran_current_transaction a můžeme tak činit i nadále, ale skalární návratová hodnota nové…
DBA

How to Protect Transactional Replica Against Breaking Data Modifications?

In our scenario we have created transactional replica of our the production database to the staging machine where developers can prepare queries to be later executed in production. But in few days one of developers executed prepared DELETE statement directly against replica and the replication stopped to work with the…
SQL Server

DROP...IF EXISTS

Nová syntaxe DROP … IF EXISTS je jednou z nejpraktičtějších novinek v SQL Serveru 2016 a při praktickém vývoji i přípravě deployment skriptů nám může ušetřit spoustu starostí a práce navíc. DROP… IF EXISTS lze použít tehdy, pokud chceme odstranit některý z podporovaných databázových objektů, ale nejsme si jisti, zda…

Read more
T-SQL

Column Aliases are Fully Ignored in INSERT Columns List

Time to time crazy things are happening in SQL Server. T-SQL looks like to be easy and rigid language without any options for playing with it like other languages. I will show you that there is still some space where you can do magic and have some fun. Check out…
SQL Server

HASHBYTES() v SQL Serveru 2016

V SQL Serveru 2016 Microsoft konečně vyslyšel volání uživatelů po odstranění jedno z omezení funkce HASHBYTES(), a sice, že maximální délka vstupní hodnoty pro hashování byla omezena na 8000 bytes. SQL Server 2016 toto omezení neobsahuje a je možné získat hash pro BLOB až do maximální hodnoty datového typu, jak…

Read more