Microsoft SQL Server 2016

Podobné dokumenty
Novinky SQL Server 2016

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Enterprise funkce SQL Serveru 2016, které jsou od SP1 zdarma

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Vladimír

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Srovnání SQL serverů. Škálovatelnost a výkon. Express Workgroup Standard Enterprise Poznámky. Počet CPU bez limitu Obsahuje podporu

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Optimalizace dotazů a databázové transakce v Oracle

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Příprava k certifikaci , TS: Windows 7, Configuring

Databázové systémy. Cvičení 6: SQL

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Monitoring SQL Server, Resource Governor, Tracing SQL Server

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Materializované pohledy

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Diagnostika webových aplikací v Azure

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

MySQL sežere vaše data

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

PG 9.5 novinky ve vývoji aplikací

Ondřej Soukup, DAQUAS Radek Žalud, DAQUAS

Administrace Oracle. Práva a role, audit

6. SQL složitější dotazy, QBE

Úvod do databázových systémů

Databáze I. Přednáška 4

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Programování a implementace Microsoft SQL Server 2014 databází

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Specifikace předmětu zakázky

SQL - trigger, Databázové modelování

Semestrální práce z DAS2 a WWW

Databáze SQL SELECT. David Hoksza

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Virtual private database. Antonín Steinhauser

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Kód v databázi. RNDr. Ondřej Zýka

IW3 MS SQL SERVER 2014

INDEXY JSOU GRUNT. Pavel Stěhule

Databázové systémy Cvičení 5.2

cstore_fdw column store pro PostgreSQL Prague PostgreSQL Developer Day 2015 Jan Holčapek

Operátory ROLLUP a CUBE

Stručný obsah. K2118.indd :15:27

Tabulka fotbalové ligy

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

O Apache Derby detailněji. Hynek Mlnařík

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Zabezpečení proti SQL injection

Jazyk SQL databáze SQLite. připravil ing. petr polách

Virtual Private Database (VPD) Jaroslav Kotrč

Oracle XML DB. Tomáš Nykodým

Nástroje na správu databáze

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Jazyk SQL 3 - DML, DDL, TCL, DCL

Verzování a publikace dat na webu za pomoci PostgreSQL

IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK3PH (vm3bph)

Obsah. Verze SQL Serveru

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Databázové systémy I

Databázové systémy I

Stěhování aplikací. Michal Tomek, Sales Manager

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Čteme EXPLAIN. CSPUG, Praha. Tomáš Vondra Czech and Slovak PostgreSQL Users Group

1. Relační databázový model

Microsoft SQL Server v cloudu. RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

Databázové systémy a SQL

Ukládání a vyhledávání XML dat

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Petr Vlk KPCS CZ. WUG Days října 2016

Základní přehled SQL příkazů

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

SQL Server 2012 Introducing new features

Temporální databáze. Jan Kolárik Miroslav Macík

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

Databázové systémy úvod

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Administrace Oracle. Jan Šaršon. Audit databáze

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Prezentuje. DAQUAS, spol. s r.o. Radek Žalud, MCTS, MCP

4IT218 Databáze. 4IT218 Databáze

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Transkript:

Microsoft SQL Server 2016

Mission-critical performance Operational analytics In-Memory OLTP Query Store Native JSON Temporal Tables Always encrypted Row-level security Dynamic data masking Performance Security AlwaysOn Avaiability Groups Availability TempDB configuration Scalability 2

Deeper insights across data Polybase Enhanced SSIS Enhanced Analysis Services Data Tools in Visual Studio Enhanced MDS Access any data Scale and manage Datazen Enhanced Reporting Services Mobile BI and RS R integration Analytics libraries Advanced analytics 3

Instalace MS SQL 2016 Novinky a změny PolyBase Query Service for External Data Vyžaduje JRE 7.51 nebo vyšší

PolyBase Novinky a změny Se zvyšujícím se objemem nestrukturovaných nebo jen částečně strukturovaných dat volí zákazníci cenově dostupnou variantu distribuovaných a škálovatelných systémů jak Hadoop nebo různá Cloud řešení (např. Azure Storage) PolyBase Umožňuje integraci externích dat s SQL Serverem PolyBase je T-SQL front end, který umožňuje dotazování dat uložených v Hadoop nebo Azure Blob Storage

PolyBase Jak začít? 1. http://hortonworks.com/sandbox Download Virtual Machine (Hyper-V, Vmware, VirtualBox) 2. Nebo Microsoft Azure Blob Storage 3. Změna uživatelského účtu dle technologie v konfiguračním souboru a restart služeb (Hadoop.config) C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\Polybase\Settings\Hadoop.config CREATE EXTERNAL DATA SOURCE hadoop_eds WITH ( TYPE = HADOOP, LOCATION = 'hdfs://192.168.56.101:8050' ); CREATE EXTERNAL FILE FORMAT CSV WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS ( FIELD_TERMINATOR = '\t', DATE_FORMAT = 'MM/dd/yyyy' ) );

PolyBase CREATE EXTERNAL TABLE sample_07 ( code nvarchar(255), description nvarchar(255), total_emp int, salary nvarchar(255) ) WITH ( LOCATION = '/apps/hive/warehouse/sample_07', DATA_SOURCE = hadoop_eds, FILE_FORMAT = CSV ) SELECT * FROM dbo.sample_07

Instalace MS SQL 2016 Novinky a změny Number of Temp DB files Initial Size Autogrowth Analysis Services PowerPivot Mode

Upgrade Advisor 2016 Preview 1.1 Oproti předchůdcům je k dispozici v dostatečném předstihu Nová grafika Scenarios Stretch Database Advisor Database Upgrade Analyzer Analysis Services Upgrade Advisor Integration Services Upgrade Advisor Reporting Services Upgrade Advisor Active Seznam probíhajících nebo ukončených analýz

Management Studio 2016 Automatic / Manual Update check Edit Top 200 Rows lze i z pohledu Dříve často končilo chybou Možnost vypnutí varovné zprávy o neuložených dotazech při vypnutí SSMS Activity Monitor Active Expensive Queries Informace čte ze systémového pohledu sys.dm_exec_requests

Management Studio 2016 Live Query Statistics Při ladění výkonu dotazu často vyžaduje analýzu exekučního plánu. Problém : Který z operátorů exekučního plánu je náročný na zdroje systému (CPU, IO, Time)?

Management Studio 2016 Live Query Statistics Tool bar Include Live Query Statistics Slouží pro ladění výkonu dotazů a debugging Zobrazuje průběh vykonávaného dotazu Tečkované spojnice pro vykonávané operace Plné spojnice označují dokončené operace Používá systémový pohled sys.dm_exec_query_profiles Dostupný od MS SQL 2014 a proto lze tuto funkci využít i oproti starší verzi Použití vyžaduje SET STATISTICS PROFILE ON nebo SET STATISTICS XML ON Přesnost zobrazených informací je závislá na Estimated Number of Rows

Maintenance Plans SQL 2000-2014 SQL 2016

Maintenance Plans

Maintenance Plans

Query Store Pro každý spuštěný dotaz je vytvořen plán, ve kterém je obsažen postup (operace, pořadí, předpoklad) fyzického vykonání dotazu. Tento plán je uložen o paměti pro další použití. Problém : Plán se může měnit nebo může být z paměti odstraněn Změnou objektu (tabulka, index), změnou statistik, nedostatkem paměti V paměti je uložen vždy poslední plán a informace o jeho použití Jak zjistit podobu předchozích plánů a výkon dotazu s jejich použitím? Jak vynutit předchozí optimální plán? Data Collector, Plan Guide ale

Query Store Automaticky monitoruje a ukládá výkonnostní informace o T-SQL dotazech a jejich plánech Slouží především pro : Analýzu použitých zdrojů dotazy na úrovni konkrétní databáze (CPU, IO, Memory) Identifikace náročných dotazů v daném časovém rámci Zjištění frekvence vykonání jednotlivých dotazů Nalezení příčiny výkonnostních problémů dotazu, porovnání různých plánů daného dotazu, vynucení použití plánu

Query Store

Query Store

Temporal Tables Po spuštění příkazu SELECT je vrácen jeho výsledek zpracovaný z dat, která se v době vykonávaného dotazu nacházela v tabulce. Problém : Jaký by byl výsledek příkazu SELECT, který by byl spuštěn před hodinou, včera, před týdnem? Jak se změnila datová množina za uplynulou hodinu? Které ze zákazníků změnil svou adresu za uplynulý rok? Jak rychle opravit omylem změněné řádný na předchozí stav? Řešení : Dříve - Change Data Capture, Change Tracking, Database Snapshot, Restore Database ale MS SQL 2016 - Temporal Tables

Temporal Tables Jedná se o tabulku, která automaticky zaznamenává životní cyklus každého řádku Umožňuje vykonání dotazu nad verzí řádků, která se v tabulce nacházela v definovaném čase Použití : Porozumění trendům v čase Sledování změn v datech Audit Správa slowly changing dimension Rychlá obnova řádků při chybě aplikace/uživatele DDL DML Query Temporal Query CREATE TABLE ALTER TABLE INSERT UPDATE DELETE MERGE SELECT * FROM temporal FOR SYSTEM_TIME AS OF FROM TO BETWEEN AND CONTANED IN

Temporal Tables Základní fakta Temporal Table Nasazení Uložení Omezení Podpora Query Historická tabulka: Nemá PRIMARY KEY Nemá IDENTITY Nemá triggery Nemá FOREIGN KEY Nelze TRUNCATE pokud je temporal zapnuto Omezené replikace

Temporal Tables Temporal table (actual) Temporal table (history) Old versions UPDATE DELETE Temporal query

Temporal Tables CREATE TABLE dbo.products (ProductID int PRIMARY KEY, Name varchar(50), ListPrice decimal(8,2), Color varchar(30), StartTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL, EndTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL, PERIOD FOR SYSTEM_TIME (StartTime, EndTime) ) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.productshistory)); GO

Temporal Tables V SSMS není historická tabulka zobrazena samostatně Pouze pokud je SYSTEM_VERSIONING = OFF Aktuální a historická tabulka mají vlastní a samostatné: Indexy Statistiky Check constrainty (nelze u historické tabuky) Triggery (nelze u historické tabuky, u aktuální pouze AFTER) Partition configuration Oprávnění

Temporal Tables Temporal Query FROM dbo.products FOR SYSTEM_TIME AS OF @datetime Row Start @datetime Row End RowStart <= @datetime AND RowEnd > @datetime FROM dbo.products FOR SYSTEM_TIME FROM @datetime1 TO @datetime2 Row Start @datetime1 @datetime2 Row End RowStart < @datetime2 AND RowEnd > @datetime1 26

Temporal Tables Temporal Query FROM dbo.products FOR SYSTEM_TIME BETWEEN @datetime1 AND @datetime2 Row Start @datetime1 @datetime2 Row End RowStart <= @datetime2 AND RowEnd > @datetime1 FROM dbo.products FOR SYSTEM_TIME CONTAINED IN (@datetime1, @datetime2) @datetime1 Row Start Row End @datetime2 RowStart >= @datetime1 AND RowEnd <= @datetime2 27

Dynamic Data Masking Telefonicky kontaktujete svou banku a operátor Vás pro ověření totožnosti požádá o poslední číslice z rodného čísla. Problém : Rodné číslo, číslo OP, pasu, číslo zdravotního pojištění, platební karty a další, jsou bezpečnostně citlivé informace. Tato citlivá data jsou často uložena v databázi Zpřístupnění citlivých informací je bezpečnostní riziko Aplikace při práci s daty musí dodržovat bezpečnostní standardy Řešení : Aplikačně zajistit zobrazení pouze části, nutné pro identifikaci (funkce, procedura apod.) Dynamic Data Masking 28

Dynamic Data Masking SELECT FirstName, LastName, EmailAddress, NationalIDNumber, LoginID, PhoneNumber FROM [dbo].[customers] Telefonicky kontaktujete svou banku a operátor Vás pro ověření totožnosti požádá o poslední číslice z rodného čísla.

Dynamic Data Masking ALTER TABLE dbo.customers ALTER COLUMN NationalIDNumber ADD MASKED WITH (FUNCTION = 'partial(0,"xxxxxxxx",3)');

Dynamic Data Masking ALTER TABLE dbo.customers ALTER COLUMN EmailAddress ADD MASKED WITH (FUNCTION = 'email()');

Dynamic Data Masking ALTER TABLE dbo.customers ALTER COLUMN LoginID ADD MASKED WITH (FUNCTION = 'default()');

Dynamic Data Masking Odstranění maskování sloupce : ALTER TABLE dbo.customers ALTER COLUMN EmailAddress DROP MASKED; Oprávnění : GRANT UNMASK TO AppOperator REVOKE UNMASK TO AppOperator Omezení datových typů : (var)binary, image xml uniqueidentifier, sql_variant rowversion (timestamp), hierarchyid geometry, geography

Jason Voorhees fiktivní hororová postava z filmu Pátek třináctého

Podpora JSON SELECT * FROM dbo.orders FOR XML AUTO <dbo.orders SalesOrderID="43659" CustomerID="29825" OrderDate="2011-05-31T00:00:00" ProductID="776" OrderQty="1" LineTotal="2024.994000" /> <dbo.orders SalesOrderID="43662" CustomerID="29994" OrderDate="2011-05-31T00:00:00" ProductID="764" OrderQty="3" LineTotal="1258.376700" /> [ ] { }, { } SELECT * FROM dbo.orders FOR JSON AUTO "SalesOrderID":43659, "CustomerID":29825, "OrderDate":"2011-05-31T00:00:00", "ProductID":776, "OrderQty":1, "LineTotal":2024.994000 "SalesOrderID":43662, "CustomerID":29994, "OrderDate":"2011-05-31T00:00:00", "ProductID":764, "OrderQty":3, "LineTotal":1258.376700 35

JSON Dostupnost ve všech edicích Oproti XML není v MS SQL 2016 datový typ a nemá speciální indexy Ukládáme ho jako tradiční string (char/varchar) Rozšířená podpora v T-SQL FOR JSON AUTO, FOR JSON PATH ISJSON() JSON_QUERY() JSON_VALUES() JSON_MODIFY() OPENJSON() [ { }, { } ] "SalesOrderID":43659, "CustomerID":29825, "OrderDate":"2011-05-31T00:00:00", "ProductID":776, "OrderQty":1, "LineTotal":2024.994000 "SalesOrderID":43662, "CustomerID":29994, "OrderDate":"2011-05-31T00:00:00", "ProductID":764, "OrderQty":3, "LineTotal":1258.376700

JSON SELECT * FROM Orders FOR JSON AUTO SELECT * FROM OPENJSON(@json) [ ] { }, { } "SalesOrderID":43659, "CustomerID":29825, "OrderDate":"2011-05-31T00:00:00", "ProductID":776, "OrderQty":1, "LineTotal":2024.994000 "SalesOrderID":43662, "CustomerID":29994, "OrderDate":"2011-05-31T00:00:00", "ProductID":764, "OrderQty":3, "LineTotal":1258.376700

Row-Level Security Při konfiguraci oprávnění máme možnost v případě tabulky přidělit SELECT, INSERT, UPDATE, DELETE. V případě SELECT a UPDATE můžeme přidělit oprávnění na konkrétní sloupce. Nelze však uživatelům přidělit oprávnění na úroveň řádků. Problém : Zdravotnickému personálu, který používá aplikaci pro správu pacientů, chceme zpřístupnit pouze řádky s pacienty, o které se starají Řešení : Filtrování řádků tabulky na programové úrovni (View, Stored Procedure, Function, aplikačně) SQL Server 2016 Row-Level Security 38

Row-Level Security

Row-Level Security CREATE FUNCTION dbo.limitpacientsaccess(@nurseid int) RETURNS TABLE WITH SCHEMABINDING PF CREATE SECURITY POLICY PacientsPolicy ADD FILTER PREDICATE dbo.limitpacientsaccess(nurseid) ON dbo.pacients, ADD FILTER PREDICATE dbo.limitpacientsaccess(nurseid) ON dbo.person WITH (STATE = ON); P SP

Row-Level Security CREATE FUNCTION dbo.limitpacientsaccess(@nurseid int) RETURNS TABLE WITH SCHEMABINDING AS RETURN ( SELECT 1 AS OK FROM dbo.person WHERE ( NurseID = @NurseID AND Name = USER_NAME() ) OR IS_MEMBER(N'HeadNurse') = 1 OR IS_SRVROLEMEMBER(N'sysadmin') = 1 );

Row-Level Security Problémy : Uživatel může provést INSERT řádku, který mu díky Security Policy nebude zpřístupněn Vhodně napsaným dotazem můžeme dedukovat, jaká data jsou v nepřístupných řádcích Pozor na CONTEXT_INFO() při použití v Predicate funkci Dochází ke změně exekučního plánu vlivem vykonání tabulkové funkce a tím možnému ovlivnění výkonu Predicate Function je vytvořena s WITH SCHEMABINDING Nejprve je u dotazu vyhodnocena klauzule WHERE a pak je na výsledek aplikována Security Policy Momentálně není podpora pro : Indexované pohledy nad tabulkou se Security Policy Nelze aplikovat na In-Memory OLTP tabulky Change Data Capture funguje ale podpora bude pravděpodobně odstraněna

Always Encrypted V případě uložení senzitivních dat do databáze je často požadována jejich ochrana formou šifrování. Otázka : Jaké máme možnosti šifrování dat v SQL Serveru? Odpověď : Transparent Data Encryption (TDE) Šifrovací funkce EncryptBy a DecryptBy SQL Server 2016 Always Encrypted 43

Always Encrypted

Always Encrypted Column Master Key Encryption Key, který chrání column encryption key Column Encryption Key Šifruje data ve zvolených sloupcích Konfigurace šifrování sloupce tabulky Deterministic Totožná data mají totožnou šifrovanou podobu Možno využít při spojování, indexování, lookup operace Randomized Totožná data mají vždy rozdílnou šifrovanou podobu Bezpečnější, ale s omezeným použitím (nelze indexovat apod.) Connection String -.NET Framework 4.6 Column Encryption Setting = enabled;

Always Encrypted CREATE COLUMN MASTER KEY DEFINITION [AlwaysEncryptedMasterKey] WITH ( KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE', KEY_PATH = N'LocalMachine/My/4AD6DFD1466078C3DBF1EC11E4076488C08AE684' ) CREATE COLUMN ENCRYPTION KEY [AlwaysEncryptedColumnKey] WITH VALUES ( COLUMN MASTER KEY DEFINITION = [AlwaysEncryptedMasterKey], ALGORITHM = 'RSA_OAEP', ENCRYPTED_VALUE = 0x01700000016C006F006... )

Always Encrypted LastName NVARCHAR(32) COLLATE Latin1_General_BIN2 ENCRYPTED WITH ( ENCRYPTION_TYPE = DETERMINISTIC, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256', COLUMN_ENCRYPTION_KEY = AlwaysEncryptedColumnKey ) NOT NULL, Salary int ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = AlwaysEncryptedColumnKey, ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL, SELECT ID, LastName,Salary FROM dbo.encryptedtable

Always Encrypted Data size (MB) Duration (sec) 20 18 16 14 12 10 8 6 4 2 17,5 5,3 Encrypted Unencrypted 180 160 140 120 100 80 60 40 20 166 98 Encrypted Unencrypted 51 46 0 0 Insert 100k řádků Random Read

AlwaysOn Avalability Groups 49

AlwaysOn Avalability Groups AlwaysOn AG podporuje Standard edice MS SQL 2016 s následujícím omezením : Pouze jedna databáze v Availability Group Databáze nemůže být na Secondary replice read-only a není podporován Listener Load Balancing Listener 1 primary replica, 8 secondary replicas, 3 synchronnous, 3 automatic failover 2012 : 1 primary replica, 4 secondary replicas, 2 synchronnous, 1 automatic failover 2014 : 1 primary replica, 8 secondary replicas, 2 synchronnous, 1 automatic failover Podpora pro Distribued Transaction Coordinator (MSDTC) Vyžaduje Windows Server 2016 Technival Preview 2 AG musí být vytvořena s WITH DTC_SUPPORT = PER_DB a takto nastavit existující Podpora pro SSIS Catalog 50

AlwaysOn Avalability Groups

In-Memory OLTP Přehled rozdílů verzí SQL Server 2014 SQL Server 2016 Maximální velikost 256 GB 2 TB LOB datové typy (varbinary(max), [n]varchar(max)) Nelze Ano Transparent Data Encryption (TDE) Ne Ano Checkpoint Threads 1 1 pro kontainer ALTER PROCEDURE / sp_recompile Nelze Ano Nested native stored procedure calls Nelze Ano Natively compiled scalar functions Nelze Ano ALTER TABLE Nelze (DROP/CREATE) Částečně podporováno (offline, 2 x memory) DML Triggers Nelze Částečně podporováno Index nad NULLable sloupcem Nelze Ano Non-BIN2 collation v klíči indexu Nelze Ano 52

In-Memory OLTP Přehled rozdílů verzí SQL Server 2014 SQL Server 2016 Foreign Keys Nelze Ano Check a UNIQUE constraints Nelze Ano Parallelism Ne Ano OUTER JOIN, OR, NOT, UNION, DISTINCT, EXISTS, IN Nelze Ano MARS Ne Ano Management Studio Table Designer Ne Ano Subqueries ve všech klauzulích SELECT Ne Ano Podpora bulit-in matematických funkcí Omezená Všechny 53

Real-Time Operational Analytics Aneb proč to říci jednoduše, když to lze skrýt za obecný název? Tabulka v databázi může být často předmětem jak OLTP operací tak analytických dotazů. Oba typy operací se zásadně liší ve způsobu práce s daty a je tedy obtížné zajistit výkon obou typů operací. Problém : Rowstore vs. Columnstore Rowstore Rowstore (btree) indexy jsou vhodné pro OLTP operace, kdy se pracuje s filtry (seek) Nadměrné množství rowstore indexů zpomaluje modifikace Pokus o indexování obou typů operací končí často degradací výkonu Columnstore Optimální pro velké datové objemy a analytické operace (výpočty, agregace, scan operace) Znemožňují existenci Rowstore indexů nebo vynucují Read-only stav tabulky Nepodporují seek operace Jak optimalizovat oba typy přístupů k jediné tabulce? 54

Columnstore Index Přehled rozdílů verzí SQL Server 2012 SQL Server 2014 SQL Server 2016 Bach mode paralelních operací Ano Ano Ano Bach mode single-thread operací Ne Ne Ano Archivní komprese Ne Ano Ano Snapshot/Read Committed Snapshot transakce Ne Ne Ano Columnstore index v rámci definice tabulky Ne Ne Ano AlwaysOn podpora columnstore Ano Ano Ano AlwaysOn readable secondary podpora read-only columnstore Ano Ano Ano AlwaysOn readable secondary podpora updatable columnstore Ne Ne Ano Read-only nonclustered columnstore Ano Ano Ano* (*read-only FG) Updatable clustered columnsotre Ne Ano Ano Rowstore a clustered columnstore index společně nad tabulkou Ne Ne Ano

Columnstore Index Přehled rozdílů verzí SQL Server 2012 SQL Server 2014 SQL Server 2016 Columnstore nad memory-optimized tabulkou N/A Ne Ano Nonclustered columnstore s filtrem Ne Ne Ano Nad tabulkou může být vytvořen jeden updatable nonclustered columnstore index Memory-optimized tabulka může mít jeden columnstore index Tabulka může mít PRIMARY KEY i FOREIGN KEY zároveň s clustered columnstore indexem Pro odstranění smazaných řádků z columnstore indexu postačí operace REORGANIZE (online) Zvýšení výkonu při práci s columnstore indexy SORT, COUNT, SUM, AVG, MIN, MAX atd. String compare

Real-Time Operational Analytics

Strech Database Automaticky umísťuje data z tabulky do Azure SQL Database Komunikace zajištěna přes LinkedServer Verze CTP 2 Kopíruje celou tabulku Časté chyby v SSMS Velké množství omezení 58

Strech Database EXEC sp_configure 'remote data archive',1 RECONFIGURE CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pa$$w0rd'

Strech Database

Strech Database

Strech Database

Přehled novinek v oblasti BI Reporting Services Nové typy grafů Tree Map Chart Sunburst Chart 63

Přehled novinek v oblasti BI Reporting Services Přizpůsobení zobrazení parametrů v reportu 64

Přehled novinek v oblasti BI Reporting Services Export do PowerPoint HTML 5 Rendering Engine 65

Přehled novinek v oblasti BI Integration Services Vlastní úroveň logování balíčků v SSIS katalogu RuntimeLineage loging level Lze vybrat logované události 66

Přehled novinek v oblasti BI Integration Services Podpora AlwaysOn AG Databáze SSIS katalogu (SSISDB) může být součástí AlwaysOn Availability Group a tím zrcadlena na sekundární servery Incremental package deployment Lze nasazovat pouze jeden nebo několik SSIS balíčků namísto nasazení celého projektu Jména sloupců, ve kterých vznikla chyba při Data Flow Při směrování Error výstupu v rámci Data Flow byl dostupný pouze číselný identifikátor sloupce, ve kterém nastala chyba Nově je několik metod, jak zjistit jméno sloupce (Script, DiagnosticEx logging atd.) Nová role pro čtení výstupu logování Pouze členové role ssis_admin měli přístup k výstupu logování K tomuto účelu je k dispozici nová role ssis_logreader Podpora pro OData V4 a Power Query Data source 67

Přehled novinek v oblasti BI Analysis Services DAX variables mohou ukládat výsledek výrazu v pojmenované proměnné Tato proměnná pak může být použita jako argument dalších výrazů DirectQuery generuje jednodušší dotazy, které mají vyšší výkon Paralelní zpracování tabulek s dvěma a více částmi (partitions) Cílem je zvýšení výkonu Snazší instalace Analysis Services Power Pivot Mode for Sharepoint NUMA optimalizace pro Tabular model 68

Přehled novinek v oblasti BI Analysis Services Nové Date a Time funkce CALENDAR, CALENDARAUTO, DATEDIFF Nové Filter funkce ADDMISSINGITEMS, SUBSTITUTEWITHINDEX Nové informační funkce ISONORAFTER Nové matematické funkce ACOS, ACOSH, ASIN, ASINH, ATAN, ATANH, COS, COSH, RADIANS, DEGREES, PI COMBIN, COMBINA, EVEN, EXP, GCD, ISO.CEILING, LCM, MROUND, ODD, PRODUCT, PRODUCTX, QUOTIENT Nové statistické funkce BETA.DIST, BETA.INV, CHISQ.INV, CHISQ.INV.RT, CONFIDENCE.NORM, CONFIDENCE.T EXPON.DIST, GEOMEAN, GEOMEANX, MEDIAN, MEDIANX PERCENTILE.EXC, PERCENTILE.INC, PERCENTILEX.EXC, PERCENTILE.INC SIN, SINH, SQRTPI, TAN, TANH, XIRR, XNPV Ostatní nové funkce CONCATENATEX, GROUPBY, INTERSECT, ISEMPTY, NATURALINNERJOIN, NATURALLEFTOUTERJOIN SUMMARIYECOLUMNS, UNION 69