最近ラップトップにSQLServer 2012 RC0をインストールし、データベースの縮小によって断片化がどのように発生するかを示すデモを試していました。 ID列にクラスター化されたインデックスであるテーブルを作成し、いくつかのレコードを挿入してから、断片化を確認するために以下を発行しました。
select avg_fragmentation_in_percent from sys.dm_db_index_physical_stats(DB_ID('databasename'),
OBJECT_ID('tablename'), 1, NULL, 'limited')
これは私が得るエラーメッセージです:
Could not find table or object ID 2139154666. Check system catalog.
Sysobjectsからselect *を実行しましたが、オブジェクトはそのobjectIDで存在します。 SQL Serverがそれが存在しないと考えるのはなぜですか?私は何が間違っているのですか?
間違ったデータベースコンテキストにいます。
試してみてください:
select avg_fragmentation_in_percent
from databasename.sys.dm_db_index_physical_stats(DB_ID('databasename'), OBJECT_ID('tablename'), 1, NULL, 'limited')
または、投げることもできます
USE Databasename
最初の行に。
master
などのコンテキストで実行されていると思いますが、探しているOBJECTID
はありません。