---
title: "SQL Server 2016 Release Notes"
description: This Release Notes document describes known issues that you should read about before you install or troubleshoot Microsoft SQL Server 2016 releases.
author: MikeRayMSFT
ms.author: mikeray
ms.reviewer: randolphwest
ms.date: 02/03/2025
ms.service: sql
ms.subservice: release-landing
ms.topic: conceptual
helpviewer_keywords:
- "build notes"
- "release issues"
monikerRange: ">=sql-server-2016"
---
# SQL Server 2016 release notes
[!INCLUDE [SQL Server 2016](../includes/applies-to-version/sqlserver2016.md)]
This article describes limitations and issues with [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] releases, including service packs. For information on what's new, see [What's new in SQL Server 2016](what-s-new-in-sql-server-2016.md).
:::image type="icon" source="../includes/media/download.svg" border="false"::: **[Download SQL Server from the Evaluation Center](https://www.microsoft.com/evalcenter/evaluate-sql-server-2016)**
:::image type="icon" source="../includes/media/azure-vm.svg" border="false"::: **[Spin up a Virtual Machine with SQL Server already installed](https://azuremarketplace.microsoft.com/marketplace/apps/microsoftsqlserver.sql2022-ws2022?tab=Overview)**
:::image type="icon" source="../includes/media/download.svg" border="false"::: **[Download SQL Server Management Studio (SSMS)](../ssms/download-sql-server-management-studio-ssms.md)**
## SQL Server 2016 Service Pack 3 (SP3)
[!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP3 includes all cumulative updates released after [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2, up to and including CU17.
:::image type="icon" source="../includes/media/download.svg" border="false"::: **[Download SQL Server 2016 Service Pack 3 (SP3)](https://www.microsoft.com/download/details.aspx?id=103440)**
For a complete list of updates, see [KB5003279 - SQL Server 2016 Service Pack 3 release information](/troubleshoot/sql/releases/sqlserver-2016/servicepack3).
The [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP3 installation might require restart after installation. As a best practice, you should perform a restart following the installation of [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP3.
Performance and scale related improvements included in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP3.
| Feature | Description | More information |
| --- | --- | --- |
| Availability Group listener without the load balancer | Enables you to create a new type of Availability Group (AG) listener named "distributed network name (DNN) listener" without the load balancer.
**Note:** Removing the load balancer greatly reduces the configuration complexity and also greatly reduces the AG failover latency (by 6 to 7 times for some workloads). | [KB4578579](https://support.microsoft.com/help/4578579) |
| Enable DNN feature in SQL Server 2016 and 2019 FCI | Failover Cluster Instance (FCI) listeners are enhanced to work with Windows Server Failover Cluster (WSFC) Distributed Network Name (DNN) access point. | [KB4537868](https://support.microsoft.com/help/4537868) |
Supportability and diagnostics related improvements included in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP3.
| Feature | Description | More information |
| --- | --- | --- |
| Improve CDC supportability and usability with in-memory databases | The Change Data Capture (CDC) feature can't be enabled on a database that is enabled for In-Memory Online Transaction Processing (OLTP) access. This improvement unblocks enabling CDC on a database with In-Memory OLTP and In-Memory Objects. Additionally, the `cdc_session` XEvent is updated to print Scan Phase information. | [KB4500511](https://support.microsoft.com/help/4500511) |
| Size and retention policy are increased in default XEvent trace `system_health` | The current definition for the `system_health` XEvent session has a maximum file size of 5 megabytes (MB) and maximum number of files of 4, for a maximum of 20 MB of `system_health` XEvent data. On systems that have a lot of activity, you can roll over this limitation quickly and miss important information in the event of an issue that affects the system. To keep more troubleshooting data available on the system, the default file size changed from 5 MB to 100 MB, and the default number of files changed from 4 to 10, for a maximum of 1 GB of `system_health` XEvent data, in this update. If the definition of the `system_health` session has already been modified from the default values, this improvement doesn't overwrite the existing settings. | [KB4541132](https://support.microsoft.com/help/4541132) |
| New XEvents `temp_table_cache_trace` and `temp_table_destroy_list_trace` | Two new XEvents `temp_table_cache_trace` and `temp_table_destroy_list_trace` are created for tracking temporary table cache metrics and operations.
**Note:** These XEvents track a specific metadata cache object called the temporary object cache, which contains information about what temporary tables, objects, parameters are cached, evicted, and reused. You can run the XEvent to trace the behavior of the cache when you notice `tempdb` cache contention. Most customers don't use this and it helps CSS Engineers to debug issues on their environment. | [KB5003937](https://support.microsoft.com/help/5003937) |
| New logging and XEvents to help troubleshoot long-running Buffer Pool scans | Certain operations in SQL Server trigger a scan of the buffer pool (the cache that stores database pages in memory). On systems with a large amount of memory (1 TB or higher), scanning the buffer pool takes a long time, which slows down the operation that triggered the scan. These new XEvents can help troubleshoot long-running Buffer Pool scans. | [Operations that scan SQL Server buffer pool are slow on large memory machines](/troubleshoot/sql/performance/buffer-pool-scan-runs-slowly-large-memory-machines) |
| New logging format for SQL Writer | Provides extra troubleshooting data in an easy to read/parse format, along with enhanced control of log verbosity and enabling/disabling. | [SQL Server VSS Writer logging](../relational-databases/backup-restore/sql-server-vss-writer-logging.md) |
| Adds `sql_statement_post_compile` XEvent | This extended event is fired every time that a query compilation is finished. It provides information such as whether the query compilation was an initial compile or a recompile, how long it took to compile the query, and how much CPU capacity was used. | [KB4480630](https://support.microsoft.com/help/4480630) |
| Corrupt statistics can be detected by using `extended_logical_checks` | When statistics are corrupted, a generic message might be thrown without information about the statistics corruption. In addition, CHECKDB might not report corrupt statistics. This improvement can detect corrupt statistics by using `extended_logical_checks` as part of `DBCC CHECKDB`. | [KB4530907](https://support.microsoft.com/help/4530907) |
| Improved accuracy of XEvent `query_plan_profile` | CPU time and duration reported by XEvent `query_plan_profile` are more accurate. | [Lightweight query execution statistics profiling infrastructure v2](../relational-databases/performance/query-profiling-infrastructure.md#lightweight-query-execution-statistics-profiling-infrastructure-v2) |
## Known issues
This section identifies issues which might occur after you apply [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP3.
### R Services using specific algorithms, streaming, or partitioning
- **Issue**: The following limitations apply on [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] with runtime upgrade configured using [Change the default R or Python language runtime version](../machine-learning/install/change-default-language-runtime-version.md) or with SP3 slipstream install. This issue applies to Enterprise Edition.
- Parallelism: `RevoScaleR` and `MicrosoftML` algorithm thread parallelism for scenarios are limited to maximum of 2 threads.
- Streaming & partitioning: Scenarios involving `@r_rowsPerRead` parameter passed to T-SQL `sp_execute_external_script` isn't applied.
- Streaming & partitioning: `RevoScaleR` and `MicrosoftML` data sources (that is, `ODBC`, `XDF`) doesn't support reading rows in chunks for training or scoring scenarios. These scenarios always bring all data to memory for computation and the operations are memory bound
- **Solution**: The best solution is to upgrade to [!INCLUDE [sssql19-md](../includes/sssql19-md.md)]. Alternatively you can continue to use [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP3, after you complete the following tasks.
1. Edit registry to create a key `Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\150` and add a value `SharedCode` with data `C:\Program Files\Microsoft SQL Server\150\Shared` or the shared directory as configured for the instance.
1. Create a folder `C:\Program Files\Microsoft SQL Server\150\Shared and copy instapi130.dll` from the folder `C:\Program Files\Microsoft SQL Server\130\Shared` to the newly created folder.
1. Rename the `instapi130.dll` to `instapi150.dll` in the new folder `C:\Program Files\Microsoft SQL Server\150\Shared`.
> [!IMPORTANT]
> If you do the previous steps, you must manually remove the added key before upgrading to a later version of SQL Server.
For more information, see [Change R runtime version in SQL Server 2016](../machine-learning/install/change-default-language-runtime-version.md#change-r-runtime-version-in-sql-server-2016).
### Change Tracking cleanup errors
- **Issue**: The following error message occurs after you run a change tracking cleanup stored procedure `sp_flush_commit_table_on_demand` or `sp_flush_CT_internal_table_on_demand`:
```output
Msg 8114, Level 16, State 1, Procedure sp_add_ct_history, Line
Error converting data type numeric to int.
```
For more information, see [KB5007039](https://support.microsoft.com/topic/kb5007039-fix-you-encounter-error-messages-8114-or-22122-when-performing-change-tracking-cleanup-b102b180-a80c-4b32-90d7-0811108fe7d1).
### R script failure
- **Issue**: After you install SP3, R script execution fails. The R script fails with an error like:
```output
Error: executable command line exceeds the 2047 characters limit.
```
- **Solution**: Uninstall Microsoft MPI v7. Install Microsoft MPI v10. For more information, see [Microsoft MPI](/message-passing-interface/microsoft-mpi).
### Remove SP3 issue
- **Issue**: If you remove SP3, the 20 user accounts in the `SQLRUserGroup` used by launchpad are deleted. Any execution of `sp_execute_external_script` results in this error:
```output
Unable to launch the runtime. ErrorCode 0x80070718: 1816(Not enough quota is available to process this command.).
```
- **Solution**: Run repair. For example:
```cmd
setup.exe /q /ACTION=Repair /INSTANCENAME=
```
For more information, see [Repair a Failed SQL Server Installation](../database-engine/install-windows/repair-a-failed-sql-server-installation.md).
### Install SP3 with `SysPrep`
- **Issue**: When you use SysPrep to install SP3 with extensibility feature, SysPrep doesn't install the SP3 version of the extensibility framework correctly. Instead, some binaries are missing/incorrect. For example, R runtime 3.5.2 is missing.
- **Solution**: Run repair after completing the image. For example:
```cmd
setup.exe /q /ACTION=Repair /INSTANCENAME=
```
For more information, see [Repair a Failed SQL Server Installation](../database-engine/install-windows/repair-a-failed-sql-server-installation.md).
## SQL Server 2016 Service Pack 2 (SP2)
[!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2 includes all cumulative updates released after [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP1, up to and including CU8.
- :::image type="icon" source="../includes/media/download.svg" border="false"::: **[Download SQL Server 2016 Service Pack 2 (SP2)](https://www.microsoft.com/download/details.aspx?id=56836)**
- For a complete list of updates, see [SQL Server 2016 Service Pack 2 release information](https://support.microsoft.com/help/4052908/sql-server-2016-service-pack-2-release-information)
The [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2 installation might require restart after installation. As a best practice, you should perform a restart following the installation of [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2.
Performance and scale related improvements included in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2.
| Feature | Description | More information |
| --- | --- | --- |
| Improved Distribution DB cleanup procedure | An oversized distribution database table causes blocking and deadlock situation. An improved cleanup procedure aims to eliminate some of these blocking or deadlock scenarios. | [KB4040276](https://support.microsoft.com/help/4040276/fix-indirect-checkpoints-on-the-tempdb-database-cause-non-yielding) |
| Change tracking cleanup | Improved change tracking cleanup performance and efficiency for Change Tracking side tables. | [KB4052129](https://support.microsoft.com//help/4052129/update-for-manual-change-tracking-cleanup-procedure-in-sql-server-2016) |
| Use CPU time out to cancel Resource Governor request | Improves the handling of query requests by actually canceling the request, if CPU thresholds for a request are reached. This behavior is enabled under trace flag 2422. | [KB4038419](https://support.microsoft.com/help/4038419/add-cpu-timeout-to-resource-governor-request-max-cpu-time-sec) |
| SELECT INTO to create target table in filegroup | Starting with [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2, SELECT INTO T-SQL syntax supports loading a table into a filegroup other than a default filegroup of the user using the ON \ keyword in T-SQL syntax. | |
| Improved indirect checkpoint for `tempdb` | Indirect checkpointing for `tempdb` is improved to minimize the spinlock contention on DPLists. This improvement allows `tempdb` workload on [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] to scale out of the box if indirect checkpointing is ON for `tempdb`. | [KB4040276](https://support.microsoft.com/help/4040276) |
| Improved database backup performance on large memory machines | [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2 optimizes the way we drain the ongoing I/O during backup resulting in dramatic gains in backup performance for small to medium databases. We have seen more than 100x improvement when taking system database backups on a 2-TB machine. The performance gain reduces as the database size increases as the pages to backup and backup I/O takes more time compared to iterating buffer pool. This change helps improve the backup performance for customers hosting multiple small databases on a large high end server with large memory. | |
| VDI backup compression support for TDE-enabled databases | [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2 adds VDI support to allow VDI backup solutions to use compression for TDE enabled databases. With this improvement, a new backup format was introduced to support backup compression for TDE enabled databases. The SQL Server Database Engine transparently handles new and old backup formats to restore the backups. | |
| Dynamic loading of replication agent profile parameters | This new enhancement allows replication agents parameters to be loaded dynamically without having to restart the agent. This change is applicable only to the most commonly used agent profile parameters. | |
| Support MAXDOP option for statistics create/update | This enhancement allows you to specify the MAXDOP option for a CREATE/UPDATE statistics statement, and make sure the right MAXDOP setting is used when statistics are updated as part of create or rebuild for all types of indexes (if the MAXDOP option is present) | [KB4041809](https://support.microsoft.com/help/4041809) |
| Improved Auto Statistics Update for Incremental Statistics | In certain scenarios, when several data changes happened across multiple partitions in a table in a way that the total modification counter for incremented statistics exceeds the auto update threshold, but none of the individual partitions exceed the auto update threshold, statistics update might be delayed until more modifications happen in the table. This behavior is corrected under trace flag 11024. | |
Supportability and diagnostics related improvements included in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2.
| Feature | Description | More information |
| --- | --- | --- |
| Full DTC support for databases in an Availability Group | Cross-databases transactions for databases which are part of an Availability Group are currently not supported for [!INCLUDE [sssql16-md](../includes/sssql16-md.md)]. With [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2, we introduce full support for distributed transactions with Availability Group Databases. | |
| Update to `sys.databases.is_encrypted` column to accurately reflect encryption status for `tempdb` | The value of the `is_encryptedcolumn` column in `sys.databases` is `1` for `tempdb`, even after you turn off encryption for all user databases and restart SQL Server. The expected behavior would be that the value for this is `0`, since `tempdb` is no longer encrypted in this situation. Starting with [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2, `sys.databases.is_encrypted` now accurately reflects encryption status for `tempdb`. | |
| New `DBCC CLONEDATABASE` options to generate verified clone and backup | With [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2, `DBCC CLONEDATABASE` allows two new options: produce a verified clone, or produce a backup clone. When a clone database is created using the `WITH VERIFY_CLONEDB` option, a consistent database clone is created and verified, which is supported by Microsoft for production use. A new property is introduced to validate if the clone is verified `SELECT DATABASEPROPERTYEX('clone_database_name', 'IsVerifiedClone')`. When a clone is created with the `BACKUP_CLONEDB` option, a backup is generated in the same folder as the data file to make it easy for customers to move the clone to different server or to send it to Microsoft Customer Support (CSS) for troubleshooting. | |
| Service Broker (SSB) support for `DBCC CLONEDATABASE` | Enhanced `DBCC CLONEDATABASE` command to allow scripting of SSB objects. | |
| New DMV to monitor `tempdb` version store space usage | A new `sys.dm_tran_version_store_space_usage` DMV is introduced in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2 to allow monitoring `tempdb` for version store usage. DBAs can now proactively plan `tempdb` sizing based on the version store usage requirement per database, without any performance overhead when running it on production servers. | |
| Full Dumps support for Replication Agents | Today if replication agents encounter an unhandled exception, the default is to create a mini dump of the exception symptoms. This makes troubleshooting unhandled exception issues difficult. Through this change we introduce a new registry key, which allows you to create a full dump for Replication Agents. | |
| Extended Events enhancement for read routing failure for an Availability Group | Before, the `read_only_rout_fail` XEvent fired if there was a routing list present, but none of the servers in the routing list were available for connections. [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2 includes additional information to assist with troubleshooting, and also expand on the code points where this XEvent gets fired. | |
| New DMV to monitor the transaction log | Added a new DMV `sys.dm_db_log_stats` that returns summary level attributes and information about transaction log files of databases. | |
| New DMV to monitor VLF information | A new DMV `sys.dm_db_log_info` is introduced in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP2 to expose the VLF information similar to DBCC LOGINFO to monitor, alert, and avert potential T-Log issues experienced by customers. | |
| Processor information in `sys.dm_os_sys_info` | New columns added to the `sys.dm_os_sys_info` DMV to expose the processor related information, such as `socket_count`, and `cores_per_numa`. | |
| Extent modified information in `sys.dm_db_file_space_usage` | New column added to `sys.dm_db_file_space_usage` to track the number of modified extents since the last full backup. | |
| Segment information in `sys.dm_exec_query_stats` | New columns were added to sys.dm_exec_query_stats to track number of columnstore segments skipped and read, such as `total_columnstore_segment_reads`, and `total_columnstore_segment_skips`. | [KB4051358](https://support.microsoft.com/help/4051358) |
| Setting correct compatibility level for distribution database | After Service Pack installation, the Distribution database compatibility level changes to 90. This was because of a code path in `sp_vupgrade_replication` stored procedure. The SP has now been changed to set the correct compatibility level for the distribution database. | |
| Expose last known good `DBCC CHECKDB` information | A new database option has been added to programmatically return the date of the last successful DBCC CHECKDB run. Users can now query `DATABASEPROPERTYEX([database], 'lastgoodcheckdbtime')` to obtain a single value representing the date/time of the last successful DBCC CHECKDB run on the specified database. | |
| Showplan XML enhancements | [Information on which statistics were used to compile the query plan](/archive/blogs/sql_server_team/sql-server-2017-showplan-enhancements), including statistics name, modification counter, sampling percent, and when the statistics was updated last time. Note this is added for CE models 120 and later only. For example it isn't supported for CE 70. | |
| | A new attribute [EstimateRowsWithoutRowgoal](/archive/blogs/sql_server_team/more-showplan-enhancements-row-goal) is added to showplan XML if Query Optimizer uses "row goal" logic. | |
| | New runtime attributes [UdfCpuTime and UdfElapsedTime](/archive/blogs/sql_server_team/more-showplan-enhancements-udfs) in actual showplan XML, to track time spent in scalar User-Defined Functions (UDF). | |
| | Add CXPACKET wait type to [list of possible top 10 waits](/archive/blogs/sql_server_team/new-showplan-enhancements) in actual showplan XML - Parallel query execution frequently involves CXPACKET waits, but this type of wait wasn't reporting in actual showplan XML. | |
| | Extended the runtime spill warning to report number of pages written to `tempdb` during a parallelism operator spill. | |
| Replication Support for databases with Supplemental characters collations | Replication is now supportable on databases which use the Supplemental Character Collation. | |
| Proper handling of Service Broker with Availability group failover | In the current implementation when Service Broker is enabled on an Availability Group Databases, during an AG failover, all Service broker connections which originated on the Primary Replica are left open. This improvement targets to close all such open connections during an AG failover. | |
| Improved troubleshooting for parallelism waits | by adding a new [CXCONSUMER](/archive/blogs/sql_server_team/making-parallelism-waits-actionable) wait. | |
| Improved consistency between DMVs for same information | The `sys.dm_exec_session_wait_stats` DMV now tracks `CXPACKET` and `CXCONSUMER` waits consistently with the sys.dm_os_wait_stats DMV. | |
| Improved troubleshooting of intra-query parallelism deadlocks | A new `exchange_spill` Extended Event to report the number of pages written to `tempdb` during a parallelism operator spill, in the XEvent field name `worktable_physical_writes`. | |
| | The `spills` columns in the `sys.dm_exec_query_stats`, `sys.dm_exec_procedure_stats`, and `sys.dm_exec_trigger_stats` DMVs (such as `total_spills`) now also include the data spilled by parallelism operators. | |
| | The XML deadlock graph is improved for parallelism deadlock scenarios, with more attributes added to the exchangeEvent resource. | |
| | The XML deadlock graph is improved for deadlocks involving batch-mode operators, with more attributes added to the SyncPoint resource. | |
| Dynamic reloading of some replication agent profile parameters | In the current implementation of replication agents any change in the agent profile parameter requires the agent to be stopped and restarted. This improvement allows for the parameters to be dynamically reloaded without having to restart the replication agent. | |
## SQL Server 2016 Service Pack 1 (SP1)
[!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP1 includes all cumulative updates up to [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] RTM CU3 including Security Update MS16-136. It contains a roll-up of solutions provided in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] cumulative updates up to and includes the latest Cumulative Update - CU3 and Security Update MS16-136 released on November 8, 2016.
The following features are available in the Standard, Web, Express, and Local DB editions of [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP1 (except as noted):
- Always encrypted
- Changed data capture (not available in Express)
- Columnstore
- Compression
- Dynamic data masking
- Fine-grained auditing
- In Memory OLTP (not available in Local DB)
- Multiple filestream containers (not available in Local DB)
- Partitioning
- PolyBase
- Row level security
The following table summarizes key improvements provided in [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP1.
| Feature | Description | More information |
| --- | --- | --- |
| Bulk insert into heaps with auto TABLOCK under TF 715 | Trace Flag 715 enables table lock for bulk load operations into heap with no nonclustered indexes. | [Migrating SAP workloads to SQL Server just got 2.5x faster](/archive/blogs/sql_server_team/migrating-sap-workloads-to-sql-server-just-got-2-5x-faster) |
| `CREATE OR ALTER` | Deploy objects such as Stored Procedures, Triggers, User-Defined Functions, and Views. | [SQL Server Database Engine Blog](/archive/blogs/sqlserverstorageengine/create-or-alter-another-great-language-enhancement-in-sql-server-2016-sp1) |
| DROP TABLE support for replication | DROP TABLE DDL support for replication to allow replication articles to be dropped. | [KB 3170123](https://support.microsoft.com/help/3170123/supports-drop-table-ddl-for-articles-that-are-included-in-transactiona) |
| Filestream RsFx Driver signing | The Filestream RsFx driver is signed and certified using Windows Hardware Developer Center Dashboard portal (Dev Portal) allowing [!INCLUDE [sssql16-md](../includes/sssql16-md.md)] SP1 Filestream RsFx driver to be installed on Windows Server 2016/Windows 10 without any issue. | [Migrating SAP workloads to SQL Server just got 2.5x faster](/archive/blogs/sql_server_team/migrating-sap-workloads-to-sql-server-just-got-2-5x-faster) |
| LPIM to SQL service account - programmatic identification | Allow DBAs to programmatically identify if Lock Pages in Memory (LPIM) privilege is in effect at the service startup time. | [Developers Choice: Programmatically identify LPIM and IFI privileges in SQL Server](/archive/blogs/sql_server_team/developers-choice-programmatically-identify-lpim-and-ifi-privileges-in-sql-server) |
| Manual change tracking cleanup | New stored procedure cleans the change tracking internal table on demand. | [KB 3173157](https://support.microsoft.com/help/3173157/adds-a-stored-procedure-for-the-manual-cleanup-of-the-change-tracking) |
| Parallel `INSERT..SELECT` changes for local temp tables | New Parallel INSERT in INSERT..SELECT operations. | [SQL Server Customer Advisory Team](/archive/blogs/sqlcat/real-world-parallel-insert-what-else-you-need-to-know) |
| Showplan XML | Extended diagnostics including grant warning and maximum memory enabled for a query, enabled trace flags, and also surfaces other diagnostic information. | [KB 3190761](https://support.microsoft.com/help/3190761/update-to-improve-diagnostics-by-expose-data-type-of-the-parameters-fo) |
| Storage class memory | Boost the transaction processing using Storage Class Memory in Windows Server 2016, resulting in the ability to accelerate transaction commit times by orders of magnitude. | [SQL Server Database Engine Blog](/archive/blogs/sqlserverstorageengine/transaction-commit-latency-acceleration-using-storage-class-memory-in-windows-server-2016sql-server-2016-sp1) |
| `USE HINT` | Use the query option, `OPTION(USE HINT('