KB4522126 - 修复:在 SQL Server 2016 中查询sys.database_scoped_configurations时可能会收到错误的结果

应用对象
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

症状

运行将 sys.database_scoped_configurations 的输出插入到 Microsoft SQL Server 2016 中的表变量或临时表,然后从该表变量或临时表中进行选择的查询时,如下面的示例所示,可能会注意到每个数据库只有一个条目。

如果存在,则删除表 #h

CREATE TABLE #h (configuration_id INT, name sysname, value SQL_VARIANT, value_for_secondary SQL_VARIANT)

INSERT INTO #h (configuration_id、名称、值、value_for_secondary)

SELECT * FROM sys.database_scoped_configurations D'

SELECT * FROM #h H

或者

DECLARE @database\_scoped\_configurations TABLE (x INT) ;

INSERT INTO @database\_scoped\_configurations

选择configuration_id

FROM sys.database_scoped_configurations;

SELECT * FROM @database\_scoped\_configurations

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

解决方法

此问题已在 SQL Server 的累积更新中进行了修复:

关于 SQL Server 的累积更新:

SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

解决方法

若要解决此问题,您可以在插入的 SELECT 部分添加 TOP 子句以获得正确的结果。 此处为一个示例:

DECLARE @database_scoped_configurations TABLE (x INT) ;

INSERT INTO @database_scoped_configurations

SELECT TOP 100 configuration_id

FROM sys.database_scoped_configurations

参考资料

了解 Microsoft 用于描述软件更新的术语。