Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Sintaxe incorreta perto de '(' ao verificar a fragmentação do índice


Seu banco de dados provavelmente está configurado com nível de compatibilidade 80 (SQL Server 2000) e as funções DB_ID e OBJECT_ID não podem ser usadas como parâmetro para função de gerenciamento dinâmico.

Você deve alterar o nível de compatibilidade para algo mais recente ou usar variáveis ​​antes da consulta:
USE StockSystem;
GO
DECLARE
    @database_id INT = DB_ID(),
    @object_id   INT = OBJECT_ID(N'dbo.StockItems');

SELECT a.index_id, name, avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats (@database_id ,@object_id , NULL, NULL, NULL) AS a
JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id;