从下面的脚本中,我获得了需要更新统计信息的表的列表。
SELECT [sch].[name] + '.' + [so].[name] AS [TableName] ,
[ss].[name] AS [Statistic],
[sp].[last_updated] AS [StatsLastUpdated] ,
[sp].[rows] AS [RowsInTable] ,
[sp].[rows_sampled] AS [RowsSampled] ,
[sp].[modification_counter] AS [RowModifications]
FROM [sys].[stats] [ss]
JOIN [sys].[objects] [so] ON [ss].[object_id] = [so].[object_id]
JOIN [sys].[schemas] [sch] ON [so].[schema_id] = [sch].[schema_id]
OUTER APPLY [sys].[dm_db_stats_properties]([so].[object_id],
[ss].[stats_id]) sp
WHERE [so].[type] = 'U'
AND [sp].[modification_counter] > 0
上面的查询返回结果表“ dbo.LoginHistory”。
要执行统计信息更新,我已在查询中执行以下操作。
UPDATE STATISTICS [dbo.LoginHistory] WITH FULLSCAN;
但是它返回一个错误,表明表'dbo.LoginHistory'不存在。
当我执行SELECT * FROM dbo.LoginHistory时,它将返回数据(这意味着该表存在)。
您知道为什么我在运行统计信息时会看到错误吗?
答案 0 :(得分:0)
删除方括号[]。 使用dbo.LoginHistory代替[dbo.LoginHistory]
UPDATE STATISTICS dbo.LoginHistory WITH FULLSCAN;