5. SQL Server on
Linux
• Replication support: SQL Server 2019 preview supports
SQL Server Replication on Linux. A Linux virtual machine
with SQL Agent can be a publisher, distributor, or
subscriber.
• Create the following types of publications:
• Transactional
• Snapshot
• Merge
• Configure replication SQL Server Management Studio or
use replication stored procedures.
• Support for the Microsoft Distributed Transaction
Coordinator (MSDTC): SQL Server 2019 on Linux supports
the Microsoft Distributed Transaction Coordinator
(MSDTC). For details, see How to configure MSDTC on
Linux.
6. SQL Server on
Linux
•Always On Availability Group on Docker containers with Kubernetes: Kubernetes
can orchestrate containers running SQL Server instances to provide a highly available
set of databases with SQL Server Always On Availability Groups. A Kubernetes
operator deploys a StatefulSet including a container with mssql-server container,
and a health monitor.
•OpenLDAP support for third-party AD providers: SQL Server 2019 preview on
Linux supports OpenLDAP, which allows third-party providers to join Active Directory.
•Machine Learning on Linux: SQL Server 2019 Machine Learning Services (In-
Database) is now supported on Linux. Support
includes sp_execute_external_scriptstored procedure. For instructions on how
to install Machine Learning Services on Linux, see Install SQL Server 2019 Machine
Learning Services R and Python support on Linux.
•New container registry: All container images for SQL Server 2019 preview as well as
SQL Server 2017 (14.x) are now located in the Microsoft Container Registry. Microsoft
Container Registry is the official container registry for the distribution of Microsoft
product containers. In addition, certified RHEL-based images are now published.
•Microsoft Container
Registry: mcr.microsoft.com/mssql/server:vNext-CTP2.0
•Certified RHEL-based container
images: mcr.microsoft.com/mssql/rhel/server:vNext-CTP2.0
7. High availability with remote storage on Kubernetes
https://docs.microsoft.com/en-us/sql/linux/tutorial-sql-server-containers-kubernetes?view=sql-server-linux-2017
8. High
availability
Enable high availability configurations for SQL Server running in
containers—SQL Server 2019 enables customers to configure highly-
available systems with Always On Availability Groups using Kubernetes as an
orchestration layer.
Up to five synchronous replica pairs – SQL Server 2019 increases the limit
for synchronous replica pairs from three (in SQL Server 2017) to five. Users
can now configure up to five synchronous replicas (1 Primary and up to 4
secondary replicas) with automatic failover between these replicas.
Better scale-out with automatic redirection of connections based on
read/write intent—Configuring an Always On Availability can be challenging
for a number of reasons, including:
• In SQL Server 2017, an administrator must configure the Availability Group listener (and the
corresponding cluster resource) to direct SQL Server traffic to the primary replica to ensure that
clients are transparently reconnected to the active primary node upon failover; however, there
are cluster technologies that support SQL Server Availability Groups that do not offer a listener-
like capability.
• In a multi-subnet configuration such as Azure or multi-subnet floating IP address in an availability
group using Pacemaker, configurations become complex, prone to errors and difficult to
troubleshoot due to multiple components involved.
• When the availability group is configured for read scale-out or DR and cluster type is NONE, there
is no straightforward mechanism to ensure transparent reconnection upon manual failover.
12. Certificate
Management
in
Configuration
Manager
MANAGING TLS AND SSL
CERTIFICATES HAS ALWAYS BEEN
A CHALLENGE FOR A LOT OF
DATABASE MANAGERS.
USUALLY, THEY END UP
PERFORMING LOTS OF TEDIOUS
WORK AND RUNNING UNIQUE
SCRIPTS SIMPLY TO MAINTAIN
OR DEPLOY CERTIFICATES
ACROSS THE ENTIRE ENTERPRISE.
IN SQL SERVER 2019, UPDATES
HAVE BEEN MADE TO SQL
SERVER CONFIGURATION
MANAGER. THIS ALLOWS YOU TO
VALIDATE AND VIEW ANY OF THE
CERTIFICATES OF INTEREST
EASILY, FIND THOSE THAT ARE
ALMOST EXPIRING AND
SYNCHRONIZE THE DEPLOYMENT
OF CERTIFICATES IN ALL THE
REPLICAS OF AN AVAILABILITY
GROUP (FROM THE PRIMARY),
OR ALL THE NODES IN A
FAILOVER CLUSTER INSTANCE
(FROM THE ACTIVE NODE).
THESE OPERATIONS SHOULD
WORK JUST FINE FOR ANYONE
USING AN OLDER VERSION OF
SQL SERVER, ESPECIALLY IF YOU
RUN THEM FROM A SQL SERVER
2019 VERSION OF YOUR SQL
SERVER CONFIGURATION
MANAGER.
13. Additional
New Features
in SQL Server
2019
• Support to Persistent Memory (PMEM) Devices
SQL Server 2019 provides support to Persistent Memory
(PMEM) devices. SQL Server directly accesses the device,
bypassing the storage stack of the operating system for the
files placed on the PMEM device.
• Columnstore Index Enhancements
SQL Server 2019 also provides enhancements to columnstore
index features such as columnstore index maintenance, better
metadata memory management, a low-memory load path for
columnstore tables, and improved performance for bulk
loading to columnstore indexes.
• Resumable Online Index Creation
SQL Server 2019 also provides support for resumable online
index creation similar to resumable online index rebuilds in
SQL Server 2017.
14. Resumable
online index
create/rebuild
• Resumable online index create allows an index create operation to
pause and resume later from where the operation was paused or
failed, instead of restarting from the beginning.
Resumable online index create supports the follow scenarios:
• Resume an index create operation after an index create failure, such
as after a database failover or after running out of disk space.
• Pause an ongoing index create operation and resume it later
allowing to temporarily free system resources as required and
resume this operation later.
• Create large indexes without using as much log space and a long-
running transaction that blocks other maintenance activities and
allowing log truncation.
• In case of an index create failure, without this feature an online
index create operation must be executed again and the operation
must be restarted from the beginning.
• With SQL Server 2019 CTP 2.0 resumable online index rebuild is also
available.
15. Hybrid Buffer
Pool
With SQL Server 2019 CTP 2.1 a new feature is introduced in
the SQL Server database engine which allows it to directly
access data pages in database files stored in persistent
memory (PMEM) devices.
In a traditional system without persistent memory, SQL Server
caches data pages in the buffer pool. With Hybrid Buffer Pool,
SQL Server skips performing a copy of the page into the DRAM-
based portion of the buffer pool, and instead references the
page directly on the database file that lives on a PMEM device.
Access to data files in PMEM for Hybrid Buffer Pool is
performed using memory-mapped I/O, also known as
enlightenment.
Only clean pages can be referenced directly on a PMEM device.
When a page becomes dirty it is kept in DRAM, and then
eventually written back to the PMEM device.
This feature is available on both Windows and Linux.
On CTP 2.1, you must enable the startup trace flag 809 in order
to use Hybrid Buffer Pool.
16. Accelerated
Data Recovery
• Fast and consistent Database Recovery
With ADR, long running transactions do not impact the
overall recovery time, enabling fast and consistent
database recovery irrespective of the number of active
transactions in the system or their sizes.
• Instantaneous Transaction rollback
With ADR, transaction rollback is instantaneous,
irrespective of the time that the transaction has been
active or the number of updates that has performed.
• Aggressive Log Truncation
With ADR, the transaction log is aggressively truncated,
even in the presence of active long running transactions,
which prevents it from growing out of control.
17. Always Encrypted with Secure
Enclaves
Always Encrypted with secure enclaves addresses these
limitations by allowing computations on plaintext data
inside a secure enclave on the server side. A secure
enclave is a protected region of memory within the SQL
Server process, and acts as a trusted execution
environment for processing sensitive data inside the SQL
Server engine. A secure enclave appears as a black box to
the rest of the SQL Server and other processes on the
hosting machine. There is no way to view any data or code
inside the enclave from the outside, even with a
debugger.
18. Table variable
deferred
compilation
In 150 compatibility, you now get deferred
compilation when table variables are involved,
meaning it won't build a plan until the table
variable has been populated once. Estimates will
be based on the first use of that table variable,
and no recompiles will occur after that. It is a
compromise between recompiling all the time to
get accurate estimates every time, and
recompiling never and always having an estimate
of 1. This is great if your row counts remain
relatively stable (and better if that number is
further away from 1), but may be less beneficial if
they fluctuate widely.
19. Java language
extension
In addition to R and Python runtimes, SQL Server
2019 adds a Java language extension. This will
allow you to call a pre-compiled Java program and
securely execute Java code on SQL Server. This
reduces the need to move data and improves
application performance by bringing your
workloads closer to your data. You specify the
Java runtime you want to use, by installing the
JDK distribution and Java version of your choice.
20. UTF-8 support
• SQL Server 2019 includes full support for the widely used UTF-8
character encoding as an import or export encoding, or as
database-level or column-level collation for text data.
• UTF-8 is allowed in the CHAR and VARCHAR datatypes, and is
enabled when creating or changing an object’s collation, to a
collation with the “UTF8” suffix, such as
LATIN1_GENERAL_100_CI_AS_SC to
LATIN1_GENERAL_100_CI_AS_SC_UTF8. UTF-8 is only available to
windows collations that support supplementary characters, as
introduced in SQL Server 2012. Note that NCHAR and NVARCHAR
allow UTF-16 encoding only, and remain unchanged.
• Significant storage savings can also be achieved, depending on the
character set in use. For example, changing an existing column data
type from NCHAR(10) using UTF-16 to CHAR(10) using an UTF-8
enabled collation, translates into nearly 50% reduction in storage
requirements. This is because NCHAR(10) requires 22 bytes for
storage, whereas CHAR(10) requires 12 bytes for the same Unicode
string
21. Scalar
Function
Inlining
Scalar UDF inlining automatically transforms scalar user-defined functions (UDF) into relational
expressions and embeds them in the calling SQL query, thereby improving the performance of
workloads that leverage scalar UDFs. Scalar UDF inlining facilitates cost-based optimization of
operations inside UDFs, and results in efficient plans that are set-oriented and parallel as
opposed to inefficient, iterative, serial execution plans. This feature is enabled by default under
database compatibility level 150.
22. Query-
scoped
compatibility
level hints
• Have a specific query that runs better under a certain compatibility level that is not the same
as the current database? Now you can, with new query hints supporting six different
compatibility levels and five different cardinality estimation models. The following shows the
compatibility levels available, example syntax, and the CE model that is used in each case. You
can see how it can affect estimates, even for system catalog views.
• These additional hints were also recently added to SQL Server 2017 Cumulative Update #10.
23. Lightweight profiling on by
default
SQL Server 2014 introduced the DMV
sys.dm_exec_query_profiles, allowing the user running the
query to also collect diagnostic information about all of the
operators throughout the duration of the query. This
information can be used after the query is finished to
determine which operators actually did the most work and
why. Any user not running that specific query could still get
visibility into this data for any session that enabled STATISTICS
XML or STATISTICS PROFILE, or for all sessions through the
query_post_execution_showplan extended event – though
that event specifically can put a potentially large strain on
overall performance.
Management Studio 2016 added functionality to show the
data moving through the execution plan in real time based on
the information collected from the DMV, which makes it a lot
more powerful for troubleshooting purposes. Plan Explorer
also offers both live and replay capabilities for visualizing the
data throughout the duration of a query.
Starting with SQL Server 2016 SP1, you could also enable a
lightweight version of this data collection for all sessions, using
trace flag 7412 or the query_thread_profile extended event,
so that you could immediately get relevant information about
any session without them having to enable anything explicitly
in their session (particularly things that affect performance
negatively).
In SQL Server 2019, this thread profile will be enabled by
default.
24. Truncation
error message
improved
The error message ID 8152 String or binary data
would be truncated is familiar to many SQL Server
developers and administrators who develop or
maintain data movement workloads; the error is
raised during data transfers between a source and a
destination with different schemas when the source
data is too large to fit into the destination data type.
This error message can be time-consuming to
troubleshoot. SQL Server 2019 preview introduces a
new, more specific error message (2628) for this
scenario:
String or binary data would be truncated in table
'%.*ls', column '%.*ls'. Truncated value: '%.*ls'
https://info.microsoft.com/rs/157-GQE-382/images/EN-US-CNTNT-white-paper-DBMod-Microsoft-SQL-Server-2019-Technical-white-paper.pdf - for more structured information
https://www.mssqltips.com/sqlservertip/5710/whats-new-in-the-first-public-ctp-of-sql-server-2019/https://redmondmag.com/articles/2018/12/03/sql-server-2019-at-pass-summit.aspx