SQL Server 2019 CU19 (KB5023049) Released: Key Updates & Improvements
This cumulative update, CU19 for SQL Server 2019, brings a suite of crucial fixes and enhancements across various components of the database platform. These updates are designed to improve stability, security, performance, and overall reliability for SQL Server 2019 deployments. Organizations running SQL Server 2019 are strongly encouraged to evaluate and apply CU19 to benefit from these improvements and ensure a robust database environment.
Security Updates¶
Elevated Privilege Vulnerability in Data Quality Services (KB5023049 - 2086067)¶
A significant security enhancement is included in CU19, addressing a vulnerability within Data Quality Services (DQS). Previously, members holding the dqs_kb_operator role, or any role with higher privileges within DQS, were inadvertently granted the ability to create or overwrite arbitrary files on the server hosting the SQL Server instance. This was a critical security concern because these operations were performed under the context of the SQL Server service account. By default, this account, NT SERVICE\\MSSQLSERVER, operates with elevated privileges, potentially allowing malicious actors to exploit this vulnerability to gain unauthorized access or compromise the system.
This update rectifies this issue by implementing proper privilege checks and restrictions within DQS file operations. Now, the ability to create or modify files is appropriately limited, preventing unauthorized users from leveraging DQS to manipulate the server’s file system. Applying CU19 is essential to mitigate this potential security risk and maintain the integrity of your SQL Server environment.
SQL Connectivity Improvements¶
ODBC Driver Memory Corruption Fix for Down-Level TDS Protocol (KB5023049 - 2120779)¶
CU19 resolves a rare but critical issue concerning memory corruption within the ODBC driver during communication between SQL Server instances. This problem specifically arose when a SQL Server instance communicated with another instance utilizing an older version of the Tabular Data Stream (TDS) protocol. The root cause was identified as an improper version check in the ODBC driver. This flawed check led to image data types being incorrectly decoded on the client-side of the connection when interacting with down-level TDS protocol versions. This improper decoding could result in memory corruption, potentially leading to application instability or crashes.
The fix in CU19 corrects the version checking mechanism within the ODBC driver. By implementing accurate TDS protocol version detection, the driver now correctly handles image data types even when communicating with SQL Server instances using older TDS versions. This resolves the memory corruption vulnerability and ensures reliable data exchange between SQL Server instances, regardless of their TDS protocol versions.
Updating msoledbsql.msi to Version 18.6.5 (KB5023049 - 2192500)¶
This update includes an upgrade of the Microsoft OLE DB Driver for SQL Server (msoledbsql.msi) from version 18.2.3 to 18.6.5 within SQL Server 2019. This upgrade addresses signature issues related to custom actions within the OLE DB driver. These signature issues could potentially cause problems during installation or deployment scenarios, particularly in environments with strict security policies or digital signature verification requirements. By incorporating the latest version of msoledbsql.msi, CU19 ensures that these signature-related problems are resolved.
For more detailed information regarding the changes and improvements in version 18.6.5 of the Microsoft OLE DB Driver for SQL Server, refer to the official release notes provided by Microsoft. This update ensures compatibility and resolves potential deployment challenges related to the OLE DB driver.
SQL Server Client Tools Enhancements¶
sqlcmd Utility Command Execution Fix (KB5023049 - 2030140)¶
CU19 addresses a functional issue within the sqlcmd utility, a command-line tool for interacting with SQL Server. Prior to this update, the sqlcmd utility failed to correctly process the :!! command, which is intended to execute operating system (OS) commands from within a sqlcmd session. This functionality is useful for automating tasks or integrating SQL Server operations with OS-level commands. The inability to execute :!! commands limited the utility of sqlcmd in certain scripting and automation scenarios.
This update resolves this issue, restoring the proper functionality of the :!! command within sqlcmd. Users can now reliably execute OS commands directly from their sqlcmd sessions, enhancing the flexibility and automation capabilities of this command-line tool. This fix is particularly beneficial for database administrators and developers who rely on sqlcmd for scripting and automation tasks.
SQL Server Agent Deadlock and Performance Issues (KB5023049 - 2012343)¶
Performance and deadlock issues impacting SQL Server Agent within the msdb database, particularly in environments with automated backups, are addressed in CU19. Users experiencing these problems may have encountered deadlocks within SQL Server Agent, accompanied by error messages in the SQL Server Agent log. These error messages typically include SQL Server Error 1205, indicating a deadlock situation, and messages indicating failures to retrieve job information from the server. These issues could lead to backup failures, job execution delays, and overall instability in automated SQL Server tasks managed by the Agent.
The fix included in CU19 resolves the underlying causes of these deadlocks and performance bottlenecks within SQL Server Agent. By optimizing resource management and concurrency control within the Agent, this update significantly reduces the likelihood of deadlocks and improves the overall performance and reliability of automated tasks, especially backups, managed by SQL Server Agent. This enhancement is crucial for maintaining consistent and reliable automated database operations.
SQL Server Engine Improvements¶
Differential Backup Page Free Space (PFS) Page Handling Fix (KB5023049 - 2114705)¶
A critical data integrity issue related to differential backups is resolved in CU19. This issue involved differential backups incorrectly skipping new Page Free Space (PFS) pages after a data file grew beyond a PFS boundary. A PFS boundary occurs at multiples of 8,088 pages, or 64,704 KB. When a data file grew around such a boundary, differential backups could fail to include these newly allocated PFS pages. This omission could lead to database corruption if the differential backup was subsequently restored, and in some cases, it could even result in a crash dump during the restore process.
CU19 rectifies this critical flaw in differential backup handling. The fix ensures that differential backups correctly capture all PFS pages, even after data file growth around PFS boundaries. This eliminates the risk of database corruption and potential crashes associated with restoring differential backups taken from databases that have experienced data file growth. This is a vital fix for maintaining data integrity and reliable backup and recovery operations.
Non-Yielding Scheduler Condition During Backup Operations (KB5023049 - 2134470)¶
CU19 addresses a non-yielding scheduler condition (Msg 17883) that could occur during backup operations. This condition arose when backup operations were unable to properly handle abort signals in certain scenarios while waiting for pending I/O writes to complete. A non-yielding scheduler can lead to performance degradation and system unresponsiveness as the SQL Server instance becomes blocked waiting for a resource that is not being released or managed properly.
The fix in CU19 improves the handling of abort signals during backup operations. It ensures that backup processes can gracefully respond to abort requests even when waiting for pending I/O operations. This prevents the non-yielding scheduler condition and maintains the responsiveness and stability of the SQL Server instance during backup operations, especially in scenarios where backups might be interrupted or cancelled.
Access Violation Issue with Database Snapshot Removal in Always On AGs (KB5023049 - 2032954)¶
An access violation issue encountered when removing database snapshot files on the readable secondary replica of an Always On availability group (AG) with buffer pool extension enabled is resolved in CU19. This issue occurred specifically when the buffer pool extension was active on the secondary replica. Access violation errors are critical as they indicate memory corruption and can lead to application crashes or instability.
This update resolves the access violation by addressing the underlying memory management issue that occurred during database snapshot removal in this specific configuration. By applying CU19, organizations utilizing Always On AGs with buffer pool extension on secondary replicas can avoid this access violation and ensure stable and reliable operation of their high availability environment.
Assertion Failure in sys.dm_tran_persistent_version_store_stats (KB5023049 - 1943179)¶
CU19 fixes an assertion failure that could occur when running the sys.dm_tran_persistent_version_store_stats Dynamic Management View (DMV) on the secondary replica of an Always On availability group. The assertion failure, indicated by the expression !regularPVSHobt->m_NeedsRefresh && !longtermPVSHobt->m_NeedsRefresh in schemamgr.cpp:1253, signaled an unexpected state in the version store statistics management. Assertion failures are indicative of internal code errors and should be addressed to ensure the stability and reliability of the system.
This fix resolves the condition that triggered the assertion failure when querying sys.dm_tran_persistent_version_store_stats on secondary replicas. By applying CU19, administrators can reliably monitor persistent version store statistics on secondary replicas without encountering this assertion failure.
Corrected cluster_nodename in sys.dm_server_services (KB5023049 - 1990621)¶
After applying CU19, the cluster_nodename column in the sys.dm_server_services DMV will now return valid results in SQL Server 2019. Prior to this fix, in certain cluster configurations, the cluster_nodename might have returned incorrect or null values, hindering the ability to accurately identify the cluster node associated with a SQL Server service instance using this DMV.
This update ensures that the cluster_nodename column in sys.dm_server_services accurately reflects the cluster node name. This correction improves the accuracy and usefulness of this DMV for monitoring and managing SQL Server services in clustered environments.
SQLSTATE Reporting Fix in SQL Server Resource DLL (KB5023049 - 1992694)¶
CU19 addresses a failure within the SQL Server resource DLL (hadrres.dll) to properly report SQLSTATE when retrieving health information from SQL Server. This issue occurred specifically when SQLGetData returned SQL_ERROR. SQLSTATE codes provide standardized error information, and their accurate reporting is crucial for monitoring and troubleshooting SQL Server health and availability, especially in clustered environments.
This update ensures that the SQL Server resource DLL correctly reports SQLSTATE even when SQLGetData encounters an error. This improves the accuracy and completeness of health information reported by the resource DLL, facilitating better monitoring and diagnostics of SQL Server instances within Windows Server Failover Clusters.
Correct Log File Size Counter for Secondary Replicas in AGs (KB5023049 - 2025412)¶
The SQL Server performance counter ‘Log File(s) Size (KB)’ for the SQLServer:Databases object is now correctly updated for secondary replicas in an Always On availability group (AG) after applying CU19. Previously, this counter might not have accurately reflected log growth on secondary replicas, leading to inaccurate performance monitoring and capacity planning.
This fix ensures that the ‘Log File(s) Size (KB)’ performance counter accurately tracks log file size changes on secondary replicas in Always On AGs. This provides accurate performance monitoring data for secondary replicas, enabling better capacity planning and performance analysis in high availability environments.
Access Violation in Empty Conversation List Access on Secondary Replicas (KB5023049 - 2044132)¶
An access violation issue that occurred on the secondary replica of an Always On availability group while accessing an empty conversation list is resolved in CU19. This issue was attributed to a concurrency condition that arose when the system processed messages such as HadrExtendedRecoveryForksMsg or HadrEstablishDB. Concurrency issues can lead to unpredictable behavior and errors like access violations.
This update addresses the concurrency condition that caused the access violation. By improving the synchronization and handling of messages related to availability group recovery and database establishment, CU19 prevents this access violation and enhances the stability of secondary replicas in Always On AGs.
Assertion Failure with Inner FOR JSON and Buffering Operators (KB5023049 - 2023266)¶
CU19 resolves an assertion failure encountered in natively compiled modules when the Inner FOR JSON operator was followed by an operator that buffered the corresponding objects, such as another FOR JSON or ORDER BY operator. The assertion failure, indicated by the expression (*ppilb)->m_cRef == 0 in memilb.cpp, signaled an unexpected reference count issue during query execution.
This fix corrects the memory management within natively compiled modules when using nested FOR JSON operators or FOR JSON with buffering operators like ORDER BY. By resolving the reference counting issue, CU19 eliminates this assertion failure and ensures the stable execution of complex JSON queries within natively compiled modules.
Incorrect Error 41842 for In-Memory OLTP Transactions (KB5023049 - 2069963)¶
Error 41842, indicating “Too many rows inserted or updated in this transaction,” is now correctly reported in CU19. Previously, this error was incorrectly raised even when natively compiled stored procedures or in-memory transactions did not insert a large number of records within a single transaction. The error message falsely suggested a row count limit violation that was not actually occurring.
This update corrects the logic for error 41842. The error is now only raised when the actual row count limit for in-memory tables in a single transaction is exceeded. This fix eliminates false positive error reports and provides accurate error messages for in-memory OLTP workloads.
CONTROL SERVER Permission for sys.sp_xtp_force_gc (KB5023049 - 2087572)¶
After applying CU19, executing the sys.sp_xtp_force_gc procedure now requires at least CONTROL SERVER permission. This change enhances the security and control over this procedure, which is used to force garbage collection in In-Memory OLTP. Furthermore, the implementation of the procedure has been optimized to perform the garbage collection with a single call, improving efficiency. Prior to this update, the procedure needed to be called twice to achieve the same effect.
This update strengthens the security around sys.sp_xtp_force_gc by enforcing a higher permission requirement. It also simplifies the usage and improves the performance of the procedure by optimizing its execution logic.
Extended Events for Primary to Secondary Replica Notification in AGs (KB5023049 - 2147190)¶
CU19 introduces enhanced Extended Events functionality to aid in investigating periodic primary replica to secondary replica notification issues within availability groups for in-memory databases. New events are generated that provide information about the oldest active transaction and end of log values. This detailed tracing is designed to help diagnose errors such as Error 41316, “Restore operation failed for database ‘
These new Extended Events provide valuable diagnostic information for troubleshooting issues related to replica synchronization and data consistency in Always On availability groups with in-memory databases. The added tracing capabilities will significantly assist in identifying and resolving synchronization problems and related errors.
Assertion Failure During Savepoint Cleanup in Hekaton Transactions (KB5023049 - 2153945)¶
An assertion failure, Location: execcoll.cpp:1305; Expression: 'savepointId > HkTxSavePointDefault', that could occur during savepoint cleanup in a Hekaton transaction is resolved in CU19. This assertion failure indicated an unexpected state during transaction processing in In-Memory OLTP.
This fix addresses the underlying condition that triggered the assertion failure during savepoint cleanup in Hekaton transactions. By resolving this issue, CU19 enhances the stability and reliability of In-Memory OLTP transaction processing.
Metadata Consistency Fixes¶
DBCC CHECKDB Error 8992 for CDC Enabled Database Clones (KB5023049 - 2129325)¶
CU19 resolves error 8992, “[Check Catalog Msg 3853, State 1: Attribute (owning_principal_id=DBCC CHECKDB. This error occurred when DBCC CHECKDB was executed against a database clone of a change data capture (CDC) enabled source database that had system-defined roles owned by CDC users. This error indicated metadata inconsistencies within the database catalog.
This update corrects the metadata inconsistency that caused error 8992 in this specific scenario. By applying CU19, DBCC CHECKDB will now run cleanly against database clones of CDC-enabled databases without reporting this catalog consistency error.
PolyBase Enhancements¶
TNS File Support for CREATE EXTERNAL DATA SOURCE with Oracle (KB5023049 - 308163385)¶
Starting with SQL Server 2019 CU19, the CREATE EXTERNAL DATA SOURCE statement now supports the use of TNS (Transparent Network Substrate) files when connecting to Oracle databases. This functionality is enabled through the CONNECTION_OPTIONS parameter. TNS files simplify Oracle database connection configuration by centralizing connection details, making connection management more streamlined and less error-prone.
This enhancement significantly simplifies connecting to Oracle external data sources using PolyBase. By supporting TNS files, CU19 provides a more convenient and robust method for configuring Oracle connections in PolyBase external data source definitions.
Programmability Improvements¶
NullOnInvalid Method for Geometry and Geography Spatial Data Types (KB5023049 - 1021159)¶
CU19 introduces the NullOnInvalid method for geometry and geography spatial data types. This method provides a consistent way to handle invalid spatial data, regardless of whether spatial indexes are used in the query plan. Invalid spatial data can arise due to data entry errors or data transformations, and consistent handling of such data is important for data processing and analysis.
The NullOnInvalid method ensures predictable behavior when dealing with invalid spatial data. It allows developers to explicitly control how invalid spatial data is treated in queries, ensuring consistent results irrespective of query plan variations or spatial index usage.
Query Execution Engine Enhancements¶
FIX: ParameterRuntimeValue Missing from Showplan XML (KB5023049 - 2024688)¶
This update addresses an issue where the ParameterRuntimeValue was missing from the Showplan XML generated by the DMV sys.dm_exec_query_statistics_xml. This missing information hindered performance troubleshooting and query analysis, as runtime parameter values are crucial for understanding query behavior.
CU19 ensures that ParameterRuntimeValue is correctly included in the Showplan XML output of sys.dm_exec_query_statistics_xml. This provides complete and accurate query execution information, facilitating better performance analysis and debugging.
FIX: Scalar UDF Inlining Issues (KB5023049 - 2042998)¶
Scalar User-Defined Function (UDF) inlining issues present in SQL Server 2022 and 2019 are addressed in CU19. Scalar UDF inlining is a performance optimization technique, and issues with its implementation could lead to suboptimal query performance or incorrect query results in certain scenarios.
This update resolves the identified scalar UDF inlining issues, improving the effectiveness of this optimization technique in SQL Server 2019. This leads to potential performance gains for queries that utilize scalar UDFs, especially in complex query scenarios.
Inter-Query Deadlock Auto-Resolution Fix (KB5023049 - 2034115)¶
CU19 fixes a failure to automatically resolve inter-query deadlocks involving parallel resources. While SQL Server typically resolves deadlocks automatically, certain specific conditions prevented automatic resolution in prior versions. In such cases, if xml_deadlock_report Extended Events were collected, continuous deadlock reports would be generated until the problematic session was manually terminated.
This update enhances the deadlock detection and resolution mechanism in SQL Server. It ensures that inter-query deadlocks involving parallel resources are now automatically resolved in scenarios where they were previously not handled. This reduces the need for manual intervention and improves the overall resilience of the SQL Server instance to deadlock situations.
Stack Overflow Error with Deeply Nested APPLY Operations (KB5023049 - 2061830)¶
A stack overflow error that occurred when deeply nesting APPLY operations is resolved in CU19. This error, “Msg 8621, Level 17, State 1, Line APPLY clauses could exceed the query processor’s stack space limitations.
The fix in CU19 increases the allowed nesting depth for APPLY operators, matching or exceeding the functionality available in SQL Server 2017. This allows for more complex queries with nested APPLY operations without encountering stack overflow errors, providing greater flexibility in query design.
Data Type Overflow Error for Large Integer Values in CSV Files (KB5023049 - 2116382)¶
CU19 addresses a failure to raise the proper data type overflow error when a CSV file contained an integer (int) value exceeding the maximum value for the int data type. This issue occurred when running SELECT <integer_column_name> FROM OPENROWSET on such a CSV file. Instead of a data type overflow error, an incorrect or generic error might have been raised, making it harder to diagnose the problem.
This update ensures that a proper data type overflow error is raised when importing CSV data with integer values that exceed the int data type range using OPENROWSET. This improves error reporting and facilitates easier data validation and correction during CSV data import operations.
Transient Error Reporting Fix with Query Store (QDS) Plans (KB5023049 - 2122673)¶
Transient error conditions previously incorrectly reported by @@ERROR when running queries using plans stored in Query Store (QDS) are now suppressed in CU19. These transient errors were false positives and did not represent actual query execution failures. Their reporting could lead to unnecessary error handling or logging.
This update prevents the reporting of these false positive transient error conditions when using Query Store plans. This improves the accuracy of error reporting and reduces noise in application logs related to transient errors that were not actually indicative of problems.
BLOB Trace Ring Buffer Feature for BLOB Assertion Failures (KB5023049 - 2139793)¶
CU19 introduces an improvement that automatically enables the binary large object (BLOB) trace ring buffer feature when a BLOB assertion failure is detected. BLOB assertion failures are indicative of potential issues with BLOB data handling within the SQL Server engine. The trace ring buffer provides a circular buffer of trace information that can be captured and analyzed to diagnose the root cause of such failures.
This enhancement provides proactive diagnostics for BLOB assertion failures. By automatically enabling the BLOB trace ring buffer upon detection of such failures, CU19 facilitates more efficient investigation and resolution of BLOB-related issues.
Self-Deadlock Issue with Internal Update Statistic Transactions (KB5023049 - 2162840)¶
A self-deadlock issue involving internal update statistic transactions is resolved in CU19. This issue occurred because internal update statistic transactions persisted locks, which could lead to unresolved deadlocks with user queries. The lock was not being released as intended after the system ran the update query statistics.
This update corrects the lock management for internal update statistic transactions. After applying CU19, the lock is released appropriately after the update statistics operation completes, preventing self-deadlocks and improving concurrency in scenarios involving automatic update statistics.
Query Optimizer Enhancements¶
FIX: Incorrect Results with Table-Valued Functions and OPTION (OPTIMIZE FOR) (KB5023049 - 2046472)¶
Incorrect results when using table-valued functions with a parameter and the OPTION (OPTIMIZE FOR) clause on the first run are addressed in CU19. This issue could lead to queries returning incorrect data when executed for the first time after compilation or cache invalidation.
This update ensures that table-valued functions used with OPTION (OPTIMIZE FOR) produce correct results even on the first execution. This resolves a potential data correctness issue in queries utilizing this combination of features.
Memory Corruption Vulnerability in CREATE/UPDATE STATISTICS (KB5023049 - 2086069)¶
A security vulnerability where an authenticated attacker could affect SQL Server memory by executing a specially crafted CREATE STATISTICS or UPDATE STATISTICS statement is fixed in CU19. This vulnerability could be exploited to potentially cause denial-of-service or other security impacts.
This update mitigates the memory corruption vulnerability associated with CREATE STATISTICS and UPDATE STATISTICS statements. Applying CU19 is crucial to protect against this potential security risk.
Replication Improvements¶
FIX: Error 20598 After Adding Columns with Default Constraints to Primary Key (KB5023049 - 2016962)¶
Error 20598, encountered after adding columns with default constraints as part of the primary key for an existing table and configuring transactional replication, is resolved in CU19. This error could prevent the successful configuration of transactional replication in this specific schema modification scenario.
This update addresses the replication issue that caused error 20598 in this schema change scenario. Transactional replication can now be configured successfully even after adding columns with default constraints to the primary key of an existing table.
Distribution Agent Connection Failure Message Code Correction (KB5023049 - 2013429)¶
CU19 corrects the error message code returned by the Distribution Agent when it fails to connect to the Subscriber using a non-cached connection. Previously, a general message code 20046 was returned instead of the more specific connection failure message code 20084. The incorrect error code hindered accurate troubleshooting of connection issues.
This update ensures that the Distribution Agent returns the correct error message code 20084 when a connection to the Subscriber fails using a non-cached connection. This provides more accurate error reporting and facilitates easier diagnosis of replication connection problems.
Log Reader Agent Assertion Dump After sp_changearticle Execution (KB5023049 - 2047657)¶
An assertion dump in the Log Reader Agent reader thread is resolved in CU19. This dump could occur when processing log records after executing the sp_changearticle stored procedure to modify article properties on the publisher while data manipulation language (DML) changes were occurring on the published table. The assertion failure, indicated by the expression (LSN)m_curLSN < (LSN)(pSchemas->schema_lsn_begin) in replrowset.cpp, signaled an unexpected state in log processing.
This fix resolves the condition that triggered the assertion dump in the Log Reader Agent. By applying CU19, organizations using transactional replication can avoid this assertion failure and maintain stable replication operations even when modifying article properties during active DML changes.
Log Reader Agent Memory Leak (KB5023049 - 2068768)¶
A gradual memory leak in the SQL Server process, specifically under MEMORYCLERK_SOSNODE, caused by the Log Reader Agent in transactional replication is fixed in CU19. This memory leak could lead to increased memory consumption over time and potential performance degradation if left unaddressed.
This update resolves the memory leak within the Log Reader Agent. By eliminating the memory leak, CU19 helps maintain stable memory usage and prevents potential performance issues associated with long-running transactional replication processes.
Change Tracking Manual Cleanup Issue with Orphaned Records (KB5023049 - 2086544)¶
CU19 fixes an issue with Change Tracking manual cleanup that could result in orphaned records in internal tables. Previously, if the stored procedure performing cleanup encountered a lock timeout on a table, it would not retry cleaning that table and would proceed to the next table in the list. This could lead to tables with lock timeouts being skipped and potentially accumulating orphaned records over time.
This update improves the Change Tracking manual cleanup process. Now, if a lock timeout occurs on a table during cleanup, the table is marked for retry, ensuring that cleanup is attempted again in subsequent cleanup cycles. This reduces the risk of orphaned records and improves the completeness of Change Tracking cleanup operations.
Temporary Linked Server Not Dropped After AG Failover at Distributor (KB5023049 - 2104413)¶
An issue where the temporary linked server created by the Log Reader Agent was not always properly dropped when the publisher was in an Always On availability group (AG) and a failover occurred at the distributor is resolved in CU19. This could leave orphaned linked servers, potentially causing confusion or resource management issues.
This update ensures that the temporary linked server created by the Log Reader Agent is reliably dropped even in AG failover scenarios at the distributor. This prevents the accumulation of orphaned linked servers and maintains a cleaner replication environment.
Query Performance Issue with Change Tracking Cleanup (KB5023049 - 2133575)¶
CU19 resolves a query performance issue affecting both change tracking autocleanup and manual cleanup queries. These cleanup queries could experience performance bottlenecks, especially in large databases with extensive change tracking history.
To improve the performance of change tracking cleanup queries, this update requires enabling trace flags 8286 and 8287. These trace flags force the cleanup query to use the FORCE ORDER and FORCESEEK query hints, which significantly speeds up the cleanup process. By enabling these trace flags, organizations can improve the performance of change tracking cleanup operations.
Primary Key Violation Error in CDC due to Timing Issue (KB5023049 - 2145226)¶
A primary key violation error in change data capture (CDC) caused by a timing issue is fixed in CU19. The CDC capture process could attempt to insert a duplicate start_lsn value into the cdc.lsn_time_mapping table due to a timing condition. This would result in a primary key violation error, preventing the CDC capture process from proceeding.
This update addresses the timing issue that caused the primary key violation error in CDC. By resolving this timing condition, CU19 prevents duplicate start_lsn insertions and eliminates this primary key violation error in CDC operations. This fix covers all known causes of this specific error.
Error 241 in Snapshot Agent with Non-SQL Server Date Format (KB5023049 - 2151106)¶
Error 241, “Conversion failed when converting date and/or time from character string,” occurring while running the Snapshot Agent when the system date format was different from the one used by SQL Server, is resolved in CU19. This error indicated a date format mismatch between the system settings and SQL Server’s expected date format, causing conversion failures in the Snapshot Agent.
This update ensures that the Snapshot Agent correctly handles date formats even when the system date format differs from SQL Server’s default format. This eliminates error 241 in this scenario and ensures reliable operation of the Snapshot Agent regardless of system date format settings.
Security Infrastructure¶
FIX: Database Accessibility Issues with EKM for Encryption and Key Generation (KB5023049 - 2118514)¶
Database accessibility issues encountered with high-volume customer workloads that utilize Extensible Key Management (EKM) for encryption and key generation are addressed in CU19. These issues could manifest as performance bottlenecks or failures to access databases in environments heavily reliant on EKM for security.
This update resolves the database accessibility issues related to EKM usage in high-volume workloads. By optimizing EKM integration and key management operations, CU19 improves the performance and reliability of database access in EKM-enabled environments.
SQL Engine Core¶
Spelling Corrections in Database Engine Error Messages (KB5023049 - 2021484)¶
CU19 includes minor but important improvements by fixing spelling issues in Database Engine error messages in SQL Server 2019. Correcting spelling errors enhances the professionalism and clarity of error messages, making them easier to understand and interpret for users and administrators.
While seemingly minor, these spelling corrections contribute to a more polished and user-friendly experience with SQL Server by ensuring error messages are grammatically correct and professionally presented.
Table Index Partition Enhancements¶
Access Violation in sqlmin.dll!sort_persistresumableprogress with RESUMABLE INDEX (KB5023049 - 2086005)¶
An access violation exception occurring in sqlmin.dll!sort_persistresumableprogress when attempting to run the CREATE INDEX command with the RESUMABLE = ON option is resolved in CU19. This access violation indicated a memory corruption issue during resumable index creation operations.
This update resolves the access violation in sqlmin.dll related to resumable index creation. By applying CU19, organizations can reliably create resumable indexes without encountering this access violation and potential crashes.
Error 692 with RESUMABLE Non-Clustered Index and INCLUDE Clause (KB5023049 - 2116348)¶
Error 692, “Internal error. Buffer provided to write a fixed column value is too large,” encountered when creating a non-clustered index with the RESUMABLE option and an INCLUDE clause under specific conditions, is fixed in CU19. This error occurred when:
- A clustered index already existed on the table.
- The non-clustered index being created was resumable (
RESUMABLE = ON). - The
INCLUDEclause of the non-clustered index contained key columns from the clustered index but in a different order.
This update resolves the internal error that caused error 692 in this specific resumable non-clustered index creation scenario. By applying CU19, organizations can avoid this error when creating resumable non-clustered indexes with INCLUDE clauses, even when the included columns are related to a clustered index.
Lock Escalation Policy Propagation for Spatial Indexes (KB5023049 - 2122726)¶
Lock escalation policy propagation from a user table with spatial columns to the internal table of related spatial indexes is enabled in CU19. This enhancement is designed to minimize the chance of deadlocks in scenarios with highly concurrent data manipulation language (DML) workloads involving spatial data. Lock escalation policy propagation ensures that lock escalation behavior for spatial indexes aligns with the user table’s lock escalation settings.
By enabling lock escalation policy propagation for spatial indexes, CU19 reduces the likelihood of deadlocks in concurrent spatial data DML operations. This improves concurrency and responsiveness in applications that heavily utilize spatial data types and indexes.
Assertion Issue with ALTER TABLE ALTER COLUMN on Tables with Many Indexes (KB5023049 - 2123502)¶
An assertion issue, Location: tabcreat.cpp:16938; Expression: idIS/8 < sizeof(bmIndexId), occurring when running ALTER TABLE ALTER COLUMN on tables with a large number of indexes and statistics is resolved in CU19. This assertion failure indicated an internal error during schema modification operations on tables with complex index structures.
This update resolves the assertion issue encountered during ALTER TABLE ALTER COLUMN operations on tables with many indexes and statistics. By applying CU19, organizations can perform schema modifications on such tables without encountering this assertion failure.
This Cumulative Update 19 for SQL Server 2019 delivers a comprehensive set of fixes and improvements across various components, focusing on enhancing security, stability, performance, and reliability. Organizations running SQL Server 2019 are advised to review the details of these updates and consider applying CU19 to benefit from these enhancements and ensure a more robust and secure database environment.
Feel free to share your experiences and questions regarding SQL Server 2019 CU19 in the comments below!
Post a Comment