Sintomas
Quando se faz uma consulta que insere a saída de sys.database_scoped_configurations a uma tabela variável ou temporária de tabela no Microsoft SQL Server 2016 e, em seguida, selecione a partir dessa tabela variável ou temporária tabela como visto no exemplo abaixo, você pode notar que há apenas uma entrada para cada base de dados.
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
ou
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
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Resolução
Esta emissão é corrigida na seguinte atualização cumulativa para o SQL Server:
Sobre as atualizações cumulativas para o SQL Server:
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Solução
Para contornar este problema, pode adicionar uma cláusula TOP na parte SELECT da sua inserção para obter o resultado correto. Aqui está um exemplo:
DECLARE @database_scoped_configurations TABLE(x INT);
INSERT INTO @database_scoped_configurations
SELECT TOP 100 configuration_id
FROM sys.database_scoped_configurations
Referências
Conheça a terminologia que a Microsoft utiliza para descrever atualizações de software.