Запрос dm_db_index_usage_stats возвращает пустую строку - PullRequest
0 голосов
/ 27 марта 2019

У меня есть пользователь, который сообщает мне, что некоторые данные в нашем приложении изменились.

Используя этот пример , я выполнил следующий запрос к таблице, которая заполняет данные в приложении:

SELECT OBJECT_NAME(OBJECT_ID) AS TableName,
 last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'Mydatabase')
AND OBJECT_ID=OBJECT_ID('mytable')

Я не получаю никаких строк назад, поэтому кажется, что в таблице нет истории данных как обновленных?

Я запустил

SELECT OBJECT_NAME(OBJECT_ID) AS TableName,
 last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'Mydatabase')

и я получил 13 строк, хотя некоторые из них имели нулевое значение для TableName.

1 Ответ

1 голос
/ 27 марта 2019

Первая точка:

Счетчики инициализируются для сброса при запуске службы SQL Server (MSSQLSERVER).Кроме того, всякий раз, когда база данных отключается или закрывается (например, потому что для AUTO_CLOSE установлено значение ON), все строки, связанные с базой данных, удаляются.

Так что, если ваш сервер был перезапущен или что-то ещеу вас нет статистики.

Вторая точка:

Используйте параметр database_id при вызове функции OBJECT_NAME:

SELECT OBJECT_NAME(OBJECT_ID, DB_ID( 'Mydatabase')) AS TableName,
 last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'Mydatabase')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...