現象
出力を挿入するクエリを実行した場合 Microsoft SQL Server 2016 でテーブル変数または一時テーブルに sys.database_scoped_configurations し、そのテーブル変数または一時的なテーブルを選択します。 次の例に示すように、各データベースには1つのエントリしか存在しないことがわかります。
DROP TABLE IF EXISTS #h
CREATE TABLE #h(configuration_id INT, name sysname, value SQL_VARIANT, value_for_secondary SQL_VARIANT)
INSERT INTO #h(configuration_id, name, value,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
SELECT configuration_id
FROM sys.database_scoped_configurations;
SELECT * FROM @database_scoped_configurations
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで修正されています。
SQL Server の累積更新プログラムについて:
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
回避策
この問題を回避するには、insert の SELECT 部分に TOP 句を追加して、正しい結果を得ることができます。 次に例を示します。
DECLARE @database_scoped_configurations TABLE(x INT);
INSERT INTO @database_scoped_configurations
SELECT TOP 100 configuration_id
FROM sys.database_scoped_configurations
参照情報
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。