2011-06-22 146 views
0

我犯了通過對象資源管理器刪除表的錯誤。我試圖創建一個具有相同名稱的表,並且我得到一個錯誤,即具有該名稱的對象已經存在。我有服務器角色系統管理員無法創建/刪除表

我試過以下命令。

DROP TABLE 'Test' 

結果:

無法除去表,因爲它不存在,或者您沒有權限。

select * from INFORMATION_SCHEMA.TABLES order by 3 

結果:

沒有與表名測試沒有結果

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

結果:

空白表

當我鍵入DROP TABLE時,intellisense會顯示一個名爲Test的表。這似乎是一個權限問題,但因爲我有服務器角色作爲系統管理員,我不知道如何可以。

我不知道這是否重要,但我從分段服務器導入了此數據庫。

+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'')IS NOT NULL PRINT''?''''(但是這並不考慮模式)。 –

+1

@Andriy M:我認爲OP會很高興現在找到所謂的'測試':-) – gbn

0

當使用系統對象使用的xtype柱:

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

也許存在具有相同名稱的對象,使用的xtype =「U」,我們可以知道,如果有一個用戶表。