web-dev-qa-db-ja.com

インデックスの物理統計DMV-オブジェクトID /テーブルが見つかりません

最近ラップトップに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がそれが存在しないと考えるのはなぜですか?私は何が間違っているのですか?

2
RK Kuppala

間違ったデータベースコンテキストにいます。

試してみてください:

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はありません。

3
JNK