2011-06-22 17 views
0

オブジェクトエクスプローラでテーブルを削除したのは間違いです。同じ名前の表を作成しようとしましたが、その名前のオブジェクトがすでに存在するというエラーが発生します。私はサーバーロールシステム管理者を持っていますテーブルの作成/削除ができません

私は以下のコマンドを試しました。

DROP TABLE 'Test' 

結果:それは存在しdoesntのか、権限がありませんので、

は、テーブルを削除することはできません。

select * from INFORMATION_SCHEMA.TABLES order by 3 

結果:

は、テーブル名のテストとは結果がありません

select * from sys.objects where name = 'Test' 

結果:

空白表

DROP TABLEを入力すると、intellisenseはTestという名前の表を表示します。それは権限の問題のようですが、私はsysadminとしてサーバーの役割を持っているので、どのようにすることができるのか分かりません。

この問題についてはわかりませんが、ステージングサーバーからこのdbをインポートしました。

+0

が、それは名前で* *テーブルだと確信しあなたは 'テストIntelliSenseが示すデータベースではありませんか? –

+0

このSSMSインテリセンス、またはサードパーティ(Redgateなど)ですか?SSMSの 'DROP TABLE 'のインテリセンスを得ることができません。また、Andriyのように、私はそれが他のオブジェクトタイプ、つまりスキーマかもしれないと思われます。 –

答えて

2

あなたはすべての操作

表がに存在するデータベースを見つけるためには正しいと同じデータベースコンテキストにあることを確認してください:

EXEC sys.sp_MSforeachdb 'USE ? SELECT DB_NAME() FROM sys.objects WHERE name = ''Test'' ' 
+1

または、 'EXEC sys.sp_MSforeachdb 'IF OBJECT_ID(' '??Customer' ')はNULLではありません。PRINT' '?' '''(ただし、スキーマは考慮されません)。 –

+1

@Andriy M:私はOPが今すぐ「テスト」と呼ばれるものを見つけてうれしいと思う:-) – gbn

0

使用SYSOBJECTSがXTYPE列を使用します。

select * from sys.objects where name = 'Test' and xType = 'U' 

はたぶん同じ名前のオブジェクトは、ユーザー表がある場合、「U」の私たちが知ることができる= XTYPEを使用して、そこにあります。