报告和更正 sysindexes 表的不正确内容,该内容可能会导致通过 sp_spaceused 系统存储过程产生不正确的空间使用报表。
DBCC UPDATEUSAGE
( { 'database_name' | 0 }
[ , { 'table_name' | 'view_name' }
[ , { index_id | 'index_name' } ] ]
)
[ WITH [ COUNT_ROWS ] [ , NO_INFOMSGS ]
]
'database_name' | 0
是要对其空间使用统计信息进行报告和更正的数据库名称。数据库名称必须符合标识符的规则。有关更多信息,请参见使用标识符。如果指定 0,则使用当前数据库。
'table_name' | 'view_name'
是要对其空间使用统计信息进行报告和更正的表名或索引名。表名和视图名称必须符合标识符规则。
index_id | 'index_name'
是要使用的索引标识 (ID) 号或索引名。如果未指定,该语句就对指定表或索引的所有索引进行处理。
COUNT_ROWS
指定使用表或视图中的行数计数来更新 sysindexes 的 rows 列。这只适用于其 indid 为 0 或 1 的 sysindexes 行。该选项可能会影响大表和索引视图的性能。
NO_INFOMSGS
禁止显示所有信息性消息。
DBCC UPDATEUSAGE 对表和聚集索引中 sysindexes 表的 rows、used、reserved 和 dpages 列进行更正。不对非聚集索引的大小信息进行维护。
如果 sysindexes 中没有不正确的内容,DBCC UPDATEUSAGE 则不返回数据。如果发现不正确的内容,并对其进行更正,同时没有使用 WITH NO_INFOMSGS 选项,UPDATEUSAGE 就会返回 sysindexes 中所更新的行和列。
使用 UPDATEUSAGE 以与空间使用计数器同步。DBCC UPDATEUSAGE 在大表或大数据库上运行可能会需要一些时间,所以通常只在怀疑 sp_spaceused 所返回的值不正确时使用。返回表或索引的空间信息之前,sp_spaceused 接受可选参数以运行 DBCC UPDATEUSAGE。
DBCC UPDATEUSAGE 返回 Northwind 数据库的以下结果集(值可能会有变化):
DBCC UPDATEUSAGE: sysindexes row updated for table 'Orders' (index ID 4):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table 'Orders' (index ID 5):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
'...'
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC UPDATEUSAGE 权限默认授予 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员且不可转让。
下例为数据库名称指定 0,而 Microsoft® SQL Server™ 报告有关当前数据库的信息。
DBCC UPDATEUSAGE (0)
GO
下例将 pubs 指定为数据库名称,并禁止显示所有信息性消息。
DBCC UPDATEUSAGE ('pubs') WITH NO_INFOMSGS
GO
下例报告有关 authors 表的信息。
DBCC UPDATEUSAGE ('pubs','authors')
GO
下例使用索引名 UPKCL_auidind。
DBCC UPDATEUSAGE ('pubs', 'authors', 'UPKCL_auidind')相关文章