SQL Server 2016 je skutečným evolučním skokem ve vývoji této oblíbené databázové platformy a jeho význam je srovnatelný s příchodem SQL Serveru 2005 před jedenácti lety. Aktuální vydání přináší spoustu úplných novinek (Temporal Tables, Row Level Security, atd.) i významná rozšíření některých existujících funkcí (Columnstore, InMemory, atd.). V tomto článku přinášíme (snad) z větší části kompletní seznam nejvýznamnějších změn v jazyce T-SQL.
T-SQL
- DATEDIFF_BIG (MSDN, mssqltips.com)
- rozšíření funkce DATEDIFF, které vrací BIGINT a je tedy možné získat počet členů mnohem širšího časového intervalu
- AT TIME ZONE (MSDN, sqlserverperformance.com)
- klauzule pro jednoduchý převod data a času do konkrétní časové zóny
- SESSION_CONTEXT() (MSDN, mssqltips.com)
- extenze a náhrada stávající funkce CONTEXT_INFO()
- TRUNCATE TABLE WITH (PARTITIONS ()) (MSDN, mssqltips.com)
- rozšíření příkazu o možnost určit konkrétní partitions, které mají být vyprázdněny (výčtem nebo rozsahem)
- DROP IF EXISTS (mssqltips.com)
- objekty lze smazat bez nutnosti manuálně testovat, zda existují
- HASHBYTES() (MSDN)
- funkce nyní neobsahuje omezení maximální délky hashovaného řetězce na 8000 znaků
- FORMATMESSAGE() (MSDN)
- kromě systémových zpráv lze nově formátovat i vlastní řetězec
- ALTER TABLE WITH (ONLINE = ON | OFF) (MSDN)
- některé změny metadata tabulek (datový typ sloupce apod.) lze nyní provádět v režimu online
- STRING_SPLIT( string , separator ) (MSDN, sqlserverperformance.com)
- funkce pro převod řetězce hodnot do tabulky
- STRING_ESCAPE( text , type ) (MSDN)
- provede escape speciálních znaků v řetězci (zatím pouze v rámci podpory JSON)
- COMPRESS( expression ), DECOMPRESS( expression ) (MSDN, mssqltips.com )
- provede kompresi/dekompresi vstupního řetězce algoritmem GZIP
- MIN_GRANT_PERCENT, MAX_GRANT_PERCENT (MSDN, sqlservercentral.com)
- query hinty umožňují nastavit paměťové limity pro konkrétní dotaz
- NO_PERFORMANCE_SPOOL (MSDN)
- query hint, kterým lze potlačit použití table spool operátoru v exekučních plánech
- sp_execute_external_script (MSDN)
- procedura, která umožňuje spouštět kód podporovaných externích jazyků, aktuálně R a Python
- Temporal Tables (mssqltips.com)
- rozšíření jazyka T-SQL pro podporu nové funkcionality časových tabulek: FOR SYSTEM_TIME AS OF, FROM/TO, CONTAINED etc.
- JSON (MSDN)
- SQL Server nově podporuje i formát JSON (alternativu k staršímu XML) a přináší tyto nové funkce:
- JSON_VALUE() – získání skálární hodnoty z JSONu
- JSON_QUERY() extrahování části JSONu jako stringu
- ISJSON() – funkce pro ověření, zda je řetězec platným JSONem
- JSON_MODIFY() – funkce pro změnu hodnot v JSONu
- kromě uvedených skalárních funkcí je možné převést JSON na klasický dataset pomocí fuknce OPENJSON() (obdoba OPENXML() funkce)
- pomocí rozšíření příkazu SELECT o klauzuli FOR JSON AUTO|PATH je možné převádět klasický SQL dataset do JSON formátu (obdoba FOX XML…)
- SQL Server nově podporuje i formát JSON (alternativu k staršímu XML) a přináší tyto nové funkce:
- DYNAMIC DATA MASKING (MSDN)
- dynamické skrývání hodnot ve sloupci pomocí funkcí vracejících skalární hodnotu: MASKED WITH (FUNCTION = ?) a související oprávnění: ALTER ANY MASK, UNMASK