sql >> Databasteknik >  >> RDS >> Sqlserver

Fel syntax nära '(' vid kontroll av indexfragmentering

Din databas är förmodligen inställd på kompatibilitetsnivå 80 (SQL Server 2000) och funktionerna DB_ID och OBJECT_ID kan inte användas som en parameter för dynamisk hanteringsfunktion.

Du bör antingen ändra kompatibilitetsnivån till något nyare eller använda variabler före fråga:

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;


  1. använder subquery istället för tabellnamnet

  2. Skicka värden som läses från en fil som indata till en SQL-fråga i Oracle

  3. SQL Server Update Databas Statistics

  4. GRUPPER EFTER månad i fältet DATETIME