Forum Widgets
Latest Discussions
Complete rewrite of the SQL Server R2DBC driver – seeking collaboration
I’ve completed a full rewrite of the R2DBC driver for SQL Server, focused on resolving performance, stability, and feature gaps in the current driver. I’m looking to connect with people who can help move this work forward — whether through feedback, collaboration, or introductions within the R2DBC and SQL Server engineering communities. Would you be open to a brief conversation or pointing me toward the right people? Thank you.kbnicholasAug 24, 2026Copper Contributor32Views0likes0CommentsSQL Server 2022 (Compatibility Level 160): GetSchemaTable() returns null
We have encountered a reproducible metadata derivation issue on some customer installations after moving databases to SQL Server 2022 compatibility level 160. The issue occurs during ADO.NET schema discovery when DbCommandBuilder attempts to derive base-table and key information in order to automatically generate INSERT/UPDATE/DELETE commands. Environment SQL Server 2022 (different releases) Database compatibility level 160 Microsoft.Data.SqlClient (different versions) as well as System.Data.SqlClient ADO.NET DbCommandBuilder Parameterized SELECT statements Identical database schema across customers Symptoms For some customers (7 so far, since 2023) for certain tables and columns, DbDataReader.GetSchemaTable() returns null. As a consequence, automatic command generation fails with errors similar to: Dynamic SQL generation is not supported against a SelectCommand that does not return any base table information. The underlying SELECT statement itself works correctly and returns rows when executed normally. The issue only occurs during metadata derivation. Example The following pattern triggers the problem: SELECT * FROM SomeTable WHERE SomePrimaryKeyColumn = @Parameter GetSchemaTable() returns null. However, if we use a constant value instead of a parameter or cast the value of the column explicitly, GetSchemaTable() returns valid metadata. SELECT * FROM SomeTable WHERE SomePrimaryKeyColumn = 0 or SELECT * FROM SomeTable WHERE CAST(SomePrimaryKeyColumn AS int) = @Parameter Characteristics of the issue The behavior is deterministic. It always affects the same primary key column(s) of a composite primary key. It is independent of the SELECT list. It depends on the presence of a parameterized predicate. The actual parameter value does not matter. NULL, DBNull.Value and non-null integer values all show the same behavior. The parameter type is always int. The issue currently affects only few tables. Different tables for different customers. Other columns in the same tables may work correctly. Metadata retrieval mode The issue only occurs when the command is executed using: CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo which is the mode internally used by DbCommandBuilder to derive schema and key information If SchemaOnly is removed, metadata retrieval succeeds. Observed behavior: SchemaOnly | KeyInfo -> GetSchemaTable() returns null KeyInfo only -> Metadata returned correctly Normal execution -> Query executes and returns metadata correctly Therefore the problem appears to be specific to SQL Server's metadata-only derivation path rather than normal query execution. Things we verified Database schema The database schema is identical across customer installations. The issue cannot be correlated with schema differences. Query text / Select list The issue is independent of the projection. For example: SELECT * and SELECT ColumnA show the same behavior. Only the predicate appears to matter. Execution vs metadata retrieval The query executes successfully. Only metadata discovery fails. Plan cache The behavior does not appear to be related to plan cache reuse. The same affected predicate consistently fails during schema discovery. SQL Profiler observations During schema derivation we observed the following with SQL Profiler (re-worked to an example and reformatted to make it more easily readable for a human being): exec sp_executesql N'SET FMTONLY OFF; SET NO_BROWSETABLE ON; SET FMTONLY ON; SELECT SomeColumn FROM SomeTable WHERE PrimaryKeyColumn1 = @PrimaryKeyColumn1 AND PrimaryKeyColumn2 = @PrimaryKeyColumn2 AND PrimaryKeyColumn3 = @PrimaryKeyColumn3 AND PrimaryKeyColumn4 = @PrimaryKeyColumn4 ' ,N'@PrimaryKeyColumn1 int,@PrimaryKeyColumn2 int,@PrimaryKeyColumn3 int,@PrimaryKeyColumn4 int' ,@PrimaryKeyColumn1=NULL,@PrimaryKeyColumn2=NULL,@PrimaryKeyColumn3=NULL,@PrimaryKeyColumn4=NULL The issue occurs only in the metadata-only path used by SchemaOnly | KeyInfo. When the same query is actually executed, metadata and result data are returned correctly. Compatibility level observations The issue is reproducible at: COMPATIBILITY_LEVEL = 160 only. It disappears when the database compatibility level is lowered to: COMPATIBILITY_LEVEL = 150 or smaller. More interestingly, the database can remain at compatibility level 160 while the problem disappears if the query is compiled using compatibility level 150 (or smaller) optimizer behavior: OPTION (USE HINT('QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_150')) With this hint, GetSchemaTable() successfully returns metadata. Additional observations The following query hints also make schema derivation succeed: OPTION (RECOMPILE) and OPTION (OPTIMIZE FOR UNKNOWN) This suggests that the metadata derivation path is sensitive to optimizer behavior, despite the fact that the query is not actually executed. Question Has anyone encountered a SQL Server 2022 / Compatibility Level 160 issue where: GetSchemaTable() returns null the command is executed with SchemaOnly | KeyInfo the underlying query executes normally the problem only occurs for specific parameterized predicates compatibility level 150 or smaller works QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_150 also works while the database remains at level 160 If so, do you have any idea on how to solve this?SolvedAnna_HeinemannAug 06, 2026Tin Contributor191Views0likes7CommentsCan anyone explain this error and maybe even suggest how to avoid it?
I came across a very strange and unexpected error today, and while I managed to make it "go away" I cannot for the life of me understand why it happened in the first place. And I would like to invite a discussion on what could have caused it, whether it's possible to recognise the situation if it occurs again, and how to prevent it happening in future. I cannot use proprietary data so I can only describe the problem in generic terms I am transferring data between two Azure databases. To do this, I use an external data source. The "from" and "to" tables have the exact same layout, so: Step 1, I create a "work" table by doing a SELECT INTO SELECT TOP 0 [Column1], [Column2], [Column3] INTO [KII].[KIIWorkTable] FROM [dbo].[maintable] Step 2, I add the [$ShardName] column ALTER TABLE [KII].[KIIWorkTable] ADD [$ShardName] NVARCHAR(128) NOT NULL Step 3, read the data from the external data source which also has the maintable with an identical definition INSERT INTO [KII].[KIIWorkTable] EXEC sp_execute_remote [externaldatasource], N'SELECT [Column1], [Column2], [Column3] FROM [dbo].[maintable] Step 4, remove the shard name. I don't need it anymore ALTER TABLE [KII].[KIIWorkTable] DROP COLUMN [$ShardName] So far everything worked perfectly, but now something really bizarre happens Step 5, insert the additional rows: INSERT INTO [dbo].[maintable] ([Column1], [Column2], [Column3]) SELECT [KID].[Column1], [KID].[Column2], [KID].[Column3] FROM [KII].[KIIWorkTable] [KID] And SQL complains that the columns in the insert do not match the columns in the select. Of course in my real world scenario the tables have a lot more columns and the situation is much more complex, but I eventually narrow it down by starting with just one column and slowly trying it again and again, adding more columns as I go on INSERT INTO [dbo].[maintable] ([Column1]) SELECT [KID].[Column1] ..... Works perfectly I keep going until I hit [Column2] and the problem resurfaces I skip [Column2] INSERT INTO [dbo].[maintable] ([Column1], [Column3]) SELECT [KID].[Column1], [KID].[Column3] ...... It works perfectly. It doesn't work if I keep [Column2] between the first and last column, but INSERT INTO [dbo].[maintable] ([Column1], [Column3], [Column2]) SELECT [KID].[Column1], [KID].[Column3], [KID].[Column2] ...... What the..... NOW it works!?!! So obviously there is something not quite right with [Column2]. I look at the table and I see [Column2] is nullable and it contains NULLs in some rows. And I happen to know that it's an integer, and the database design is not ideal, but for our business logic NULL and 0 are interchangeable so I run an update UPDATE [dbo].[maintable] SET [Column2] = 0 WHERE [Column2] IS NULL And now the original statement works as expected. While doing this fixed the problem, I know NULL values aren't the problem. I have done the same thing for several other tables and even this table has other columns that are nullable and that contain nulls, and the same thing doesn't happen for those. I can keep the columns in the order they are defined in the DB schema and the inserts just work, nulls or no nulls. So I'm just wondering what the underlying reason for this could be. Is there anything I can run in t-sql to recognise the scenario if it occurs so I can fix it BEFORE it causes an issue?SolvedrozeboosjeagainJul 31, 2026Copper Contributor124Views0likes2Commentsservices.exe D:\MSSQL\MSSQL17.MSSQLSERVER\MSSQL\Binn\SQLAGENT.EXE ACCESS DENIED
I've been getting failed installs with SQL Server Developer Standard Edition on Windows 2025 Standard edition, error has been: services.exe 1000 QueryOpen D:\MSSQL\MSSQL17.MSSQLSERVER\MSSQL\Binn\sqlceip.exe ACCESS DENIED services.exe 1000 QueryOpen D:\MSSQL\MSSQL17.MSSQLSERVER\MSSQL\Binn\SQLAGENT.EXE ACCESS DENIED I ended up granting local admin rights to the service account I'm using for the SQL Server, whcih allowed the install to complete but still had the same error on sqlceip.exe. I'm logged in to the server the install is running on, as a Domain Admin. The detail file from the setup bootstrap files shows these errors, see below. Any idea why this is happening? 2026-07-26 13:54:31 Slp: Prompting user if they want to retry this action due to the following failure: (01) 2026-07-26 13:54:31 Slp: ---------------------------------------- (01) 2026-07-26 13:54:31 Slp: The following is an exception stack listing the exceptions in outermost to innermost order (01) 2026-07-26 13:54:31 Slp: Inner exceptions are being indented (01) 2026-07-26 13:54:31 Slp: (01) 2026-07-26 13:54:31 Slp: Exception type: Microsoft.SqlServer.Configuration.Sco.ScoException (01) 2026-07-26 13:54:31 Slp: Message: (01) 2026-07-26 13:54:31 Slp: Attempted to perform an unauthorized operation. (01) 2026-07-26 13:54:31 Slp: HResult : 0x84bb0001 (01) 2026-07-26 13:54:31 Slp: FacilityCode : 1211 (4bb) (01) 2026-07-26 13:54:31 Slp: ErrorCode : 1 (0001) (01) 2026-07-26 13:54:31 Slp: Data: (01) 2026-07-26 13:54:31 Slp: DisableRetry = true (01) 2026-07-26 13:54:31 Slp: Inner exception type: System.UnauthorizedAccessException (01) 2026-07-26 13:54:31 Slp: Message: (01) 2026-07-26 13:54:31 Slp: Attempted to perform an unauthorized operation. (01) 2026-07-26 13:54:31 Slp: HResult : 0x80070005 (01) 2026-07-26 13:54:31 Slp: Stack: (01) 2026-07-26 13:54:31 Slp: at Microsoft.SqlServer.Configuration.Sco.Service.StartService(String[] startParams) (01) 2026-07-26 13:54:31 Slp: ---------------------------------------- (01) 2026-07-26 13:54:33 Slp: User has chosen to retry this action (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to close service handle for service SQLSERVERAGENT (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to close SC Manager (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to open SC Manager (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to open service handle for service SQLSERVERAGENT (01) 2026-07-26 13:54:33 Slp: Prompting user if they want to retry this action due to the following failure: (01) 2026-07-26 13:54:33 Slp: ---------------------------------------- (01) 2026-07-26 13:54:33 Slp: The following is an exception stack listing the exceptions in outermost to innermost order (01) 2026-07-26 13:54:33 Slp: Inner exceptions are being indented (01) 2026-07-26 13:54:33 Slp: (01) 2026-07-26 13:54:33 Slp: Exception type: Microsoft.SqlServer.Configuration.Sco.ScoException (01) 2026-07-26 13:54:33 Slp: Message: (01) 2026-07-26 13:54:33 Slp: Attempted to perform an unauthorized operation. (01) 2026-07-26 13:54:33 Slp: HResult : 0x84bb0001 (01) 2026-07-26 13:54:33 Slp: FacilityCode : 1211 (4bb) (01) 2026-07-26 13:54:33 Slp: ErrorCode : 1 (0001) (01) 2026-07-26 13:54:33 Slp: Data: (01) 2026-07-26 13:54:33 Slp: DisableRetry = true (01) 2026-07-26 13:54:33 Slp: Inner exception type: System.UnauthorizedAccessException (01) 2026-07-26 13:54:33 Slp: Message: (01) 2026-07-26 13:54:33 Slp: Attempted to perform an unauthorized operation. (01) 2026-07-26 13:54:33 Slp: HResult : 0x80070005 (01) 2026-07-26 13:54:33 Slp: Stack: (01) 2026-07-26 13:54:33 Slp: at Microsoft.SqlServer.Configuration.Sco.Service.StartService(String[] startParams) (01) 2026-07-26 13:54:33 Slp: ---------------------------------------- (01) 2026-07-26 13:54:33 Slp: User has chosen to retry this action (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to close service handle for service SQLSERVERAGENT (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to close SC Manager (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to open SC Manager (01) 2026-07-26 13:54:33 Slp: Sco: Attempting to open service handle for service SQLSERVERAGENT (01) 2026-07-26 13:54:33 Slp: Prompting user if they want to retry this action due to the following failure: (01) 2026-07-26 13:54:33 Slp: ---------------------------------------- (01) 2026-07-26 13:54:33 Slp: The following is an exception stack listing the exceptions in outermost to innermost order (01) 2026-07-26 13:54:33 Slp: Inner exceptions are being indented (01) 2026-07-26 13:54:33 Slp: (01) 2026-07-26 13:54:33 Slp: Exception type: Microsoft.SqlServer.Configuration.Sco.ScoException (01) 2026-07-26 13:54:33 Slp: Message: (01) 2026-07-26 13:54:33 Slp: Attempted to perform an unauthorized operation. (01) 2026-07-26 13:54:33 Slp: HResult : 0x84bb0001 (01) 2026-07-26 13:54:33 Slp: FacilityCode : 1211 (4bb) (01) 2026-07-26 13:54:33 Slp: ErrorCode : 1 (0001) (01) 2026-07-26 13:54:33 Slp: Data: (01) 2026-07-26 13:54:33 Slp: DisableRetry = true (01) 2026-07-26 13:54:33 Slp: Inner exception type: System.UnauthorizedAccessException (01) 2026-07-26 13:54:33 Slp: Message: (01) 2026-07-26 13:54:33 Slp: Attempted to perform an unauthorized operation. (01) 2026-07-26 13:54:33 Slp: HResult : 0x80070005 (01) 2026-07-26 13:54:33 Slp: Stack: (01) 2026-07-26 13:54:33 Slp: at Microsoft.SqlServer.Configuration.Sco.Service.StartService(String[] startParams) (01) 2026-07-26 13:54:33 Slp: ---------------------------------------- (01) 2026-07-26 13:54:34 Slp: User has chosen to cancel this actionFirmbyteJul 26, 2026Copper Contributor104Views0likes1CommentSQL Server Audit Specification
Is it possible to predicate an Event in a Specification on a Principal Name? The Specification 'Properties' dialogue box seem to indicate filtering on is possible, including 'Object Class', Object Schema', 'Object Name', a but the Syntax doesn't show how.TimSQLJul 15, 2026Copper Contributor106Views0likes2CommentsSome Questions About `log_send_rate`, `log_send_queue_size`, `redo_queue_size`, and `redo_rate`.
Hello, I've recently been trying to monitor the latency of the Available Group. Regarding logsend latency and redo latency, I hope to monitor them using the `log_send_queue_size` / `log_send_rate` and `redo_queue_size` / `redo_rate` metrics in the `dm_hadr_database_replica_states` DMV. However, in the process, I noticed that even in busy systems, `log_send_queue_size` and `log_send_rate` are often 0, whereas in idle systems, `redo_rate` is never 0. Could you please explain the specific definitions of `log_send_rate` and `redo_rate`? Why is `redo_rate` not zero when no data synchronization is taking place? In a system where data synchronization is occurring, `log_send_rate` and `log_send_queue_size` may be zero. My understanding is that log sends occur very quickly, while the monitoring granularity is not fine-grained enough—is that correct? Hope someone from the community comment on this.hfjiaJun 25, 2026Copper Contributor106Views0likes2CommentsSQL 2025 Fabric Mirroring
We have setup fabric mirroring in SQL 2025 on top of a replicated subscriber using azure arc, this is just for a proof of concept, the mirroring seems to work but there is a microsoft document https://learn.microsoft.com/en-us/fabric/mirroring/sql-server-limitations#database-level-limitations advising CDC and replication is not supported in 2025 for fabric mirroring, We observed with CDC enabled it did not allow fabric mirroring to be configured, but with replication it still allowed, we noticed change feed doesnt seem to work as there was a latecy of atleast 30 secs to mirror data to fabric. Is this something to do with replication being enabled we dont know, we still havent tested a plain database (without replication and/or cdc enabled) Following details are shared to our BI team about the current situation in an email Current Observations When executing the following command on the source database: EXEC sp_help_change_feed; the engine returns: Change Feed or Fabric Link is not enabled on database 'ourdb'. Additionally: SELECT [name], is_data_lake_replication_enabled FROM sys.databases WHERE [name] = 'ourdb'; returns: 0 Based on these results, the SQL Server 2025 Change Feed engine does not appear to be enabled for the database under test. Mirroring Behavior Despite the Change Feed status indicating disabled, data continues to be synchronized successfully to Fabric. This suggests that Fabric Mirroring is currently obtaining changes through an alternative mechanism rather than through the native SQL Server 2025 Change Feed feature. We also observed an approximate latency of 30 seconds, even for single-row insert or update operations. Further clarification from Microsoft may be required to determine the exact mechanism being used and whether this behavior is expected when SQL Server Replication is present. Production Considerations While the functionality appears to work in a test environment, several questions remain regarding production suitability: If the native SQL Server 2025 Change Feed engine cannot be enabled alongside replication, it is unclear how Fabric guarantees change retention and recovery during periods of high transaction volume. Additional validation is required to determine whether transaction log truncation, checkpoints, or backup activity could affect Fabric's ability to capture all changes consistently. Fabric Mirroring may introduce additional background workload against the source database, resulting in increased read I/O and resource consumption on a server already processing replication activity. Conclusion At present, data is successfully reaching Fabric; however, the native SQL Server 2025 Change Feed functionality does not appear to be active. The key question requiring clarification is whether SQL Server Replication prevents or alters Change Feed operation, and whether the current mirroring behavior is a fully supported production configuration. Until this is confirmed, we should treat the current implementation as a successful proof of concept rather than confirmation of a supported production architecture. Next Step: test a plain database with some rapid data insertion mechanism to see if change feed kicks in to push data to fabric at near real time speed. --Can someone from the community comment on this.baloocc1Jun 23, 2026Copper Contributor79Views0likes1CommentFeature Proposal: Ability to Exclude a column/subset of Columns in Select.
Summary I would like to propose a new T-SQL feature that allows developers to select all columns from a table while explicitly excluding a small subset of columns. Currently, when a table contains many columns and only one or two need to be omitted, developers are forced to mention every remaining column manually in the "Select" SQL. This leads to verbose queries, reduced maintainability, and a higher chance of mistakes when the schema evolves. Motivation Consider a table with 20 or more columns. Current approach, SELECT EmployeeId, FirstName, LastName, Department, Designation, Email, PhoneNumber, DateOfBirth, Address, City, State, Country, PostalCode, ManagerId, JoiningDate, LastModifiedDate, Status, IsActive, CreatedDate FROM Employees; If the intention is simply to exclude a single sensitive column such as Salary, the query becomes unnecessarily long. A more concise alternative could be: SELECT * FROM Employees EXCLUDE (Salary); The engine would expand * internally and remove the specified columns before execution. Benefits 1. Reduces boilerplate code. 2. Improves readability for wide tables. 3. Makes queries easier to maintain as schemas evolve. 4. Reduces the likelihood of accidentally omitting newly added columns. 5. Makes it simpler to exclude sensitive or internal-use columns from result sets. Expected Behavior Single column exclusion SELECT * FROM Employees EXCLUDE (Salary); Returns all columns except Salary. Multiple column exclusion SELECT * FROM Employees EXCLUDE (Salary, PasswordHash); Returns all columns except Salary and PasswordHash. Suggested Validation Rules 1. Every excluded column must exist in the projected result set. If an excluded column does not exist, compilation should fail with an appropriate error. 2. Duplicate column names in the exclusion list should either: be ignored, or produce a validation error. 3. If the exclusion list removes every projected column, the statement should fail. Example: SELECT * FROM Employees EXCLUDE (Employee, Name, Salary); If these are the only columns in the table, an error could be raised such as: The EXCLUDE clause cannot eliminate all columns from the SELECT list. Returning a zero-column result set would likely be confusing and less useful. Additional Considerations This syntax could also be valuable when selecting from joins, views, or derived tables, where developers frequently want "everything except a few fields." Closing Thoughts I believe this would be a practical quality-of-life enhancement for T-SQL that addresses a common developer pain point while remaining simple to understand and implement. It would reduce repetitive code and improve maintainability without affecting existing queries.venkata-subramanianJun 18, 2026Copper Contributor127Views0likes1CommentSSRS reports not working
Hi Microsoft team, We are looking for tech support on an issue with SSRS reports that are used in one of our applications. The details of the issue are as foll: When Trying to access an SSRS ReportServer instance (either through the SOAP Service, or directly from the browser) does not work. There are Errors observed in the log files as well as the user interface . The error message is An error occurred within the report server database. This may be due to a connection failure, timeout or low disk condition within the database. The user interface fails to load Report as a result Attached are the SSRS log files from the last month from one of the servers. The last time reports were successfully accessed was on Friday, June 15th. Starting this Monday all functionality stopped working. This environment has 4 SSRS servers under an High Availability AGL. RSManagement log files indicate that the ReportServer schemas may be in an inconsistent state |FATAL|8|Database upgrade failed!! The database may now be in an inconsistent state. Further research indicates that this may be corrected by the following procedure… Stop SSRS services Backup and delete ReportServer and ReportServerTempDB databases Start the SSRS services Use the wizard to create a new ReportServer set of databases Stop the SSRS services Delete the new (empty ReportServer) database Restore the backup of the ReportServer (from step 2 - do not restore the temp database) Fix schema of ReportServer.dbo.Catalog.PropertyField and ReportServer.dbo.Segment.Content (change columns from ntext to nvarchar(max)) Start the SSRS services (Monitor the RSManagement log file) Verify Backout if fail: (Stop Services, Restore the databases, Restart Services) This may also include refreshing of encryption keys and removing servers from the AGL prior to this procedure Can you please help identify what could be a possible root cause for this issue, confirm if the steps listed below present a plausible solution, and advise on any additional triaging steps or corrective procedures? Thanks in AdvanceNishantApturkarJun 18, 2026Copper Contributor118Views0likes1CommentSQL Server 2022 Database Engine Crash During Startup on Intel Core Ultra 5 / Windows 11 25H2
SQL Server Database Engine crashes during startup on HP OmniBook X Flip 14-fm0xxx (Intel Core Ultra 5 226V, Windows 11 25H2 Build 26200.8655). Reproduced on SQL Server 2019 RTM, SQL Server 2022 RTM, and SQL Server 2022 CU25 (16.0.4255.1). Installation completes successfully, but MSSQLSERVER fails to start with Error 1067 and "Wait on the Database Engine recovery handle failed." Event Viewer shows sqlservr.exe crashing in ntdll.dll (0xc0000005). Crash occurs after master database and CLR initialization.Marvel05Jun 15, 2026Copper Contributor171Views0likes1Comment
Tags
- sql server81 Topics
- Data Warehouse73 Topics
- Integration Services66 Topics
- sql61 Topics
- Reporting Services47 Topics
- Business Intelligence42 Topics
- Analysis Services33 Topics
- analytics25 Topics
- ssms23 Topics
- Business Apps22 Topics