2015-06-30 67 views
0

當我運行以下查詢時,我得到了預期的結果。查找數據庫中的表格

select * from [Beep].[Bopp] 

然後,我運行下面的查詢來「查找」表。

select * from sys.objects 
where type='U' 
and name like '%Bopp%' 

它找到表並列出描述它的行。但是,我看不到任何提及嗶嗶聲那裏。這個名字只包含Bopp,所以我在猜測那裏有一個我需要查找的密鑰,但是我不知道哪一列是哪一列,也不知道該查找哪一個表。

編輯

根據該意見,我提高了查詢,但我仍然不知道在看什麼表了架構的實際名稱。下面讓我waaay許多命中(和設置類型實際上並沒有給我任何東西蜂鳴樣。

select * from sys.tables t 
left join sys.objects s 
    on t.schema_id = s.schema_id 
where t.name like '%Bopp%' 

我檢查的對象爲像這樣的具體名稱。

select * from sys.objects 
where name like '%Beep%' 

令我驚訝的是,我沒有看到在所有的任何命中。如果是小蜂鳴 -y東西隱藏?

+1

嗶聲模式。檢查schema_id。爲什麼你用'sys.objects'而不是'sys.tables'呢? 'sys.objects'包含通用信息 –

+0

@PanagiotisKanavos我正在使用,因爲[這個原因](http://stackoverflow.com/questions/175415/how-do-i-get-list-of-all-tables -in-a-database-using-tsql)(首先在Google上搜索「sql server table name」)。你的情況可能會更好 - 不知道。 –

+0

@PanagiotisKanavos請查看編輯。 –

回答

1

蜂鳴是你應該附加其他SYS表像這樣的模式名稱:

select sys.schemas.name as schema_name, sys.objects.name as object_name 
from sys.objects 
INNER JOIN sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id 
where type='U' 
and sys.objects.name like '%Bopp%' 
4

可以使用對schema_idsys.objects,像這樣schema_name()功能:

select schema_name([schema_id]) from sys.objects where [name] like '%Bopp%'; 

或者,您也可以查詢INFORMATION_SCHEMA.TABLES,其中有一個TABLE_SCHEMA列,使該模式,而不是它的id的名稱。

select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'Bopp'; 
+0

其實,你也解決了我的問題,但我已經接受@emacsuser的回覆,它不會讓我改變它(儘管你會在這裏獲得道德勝利,因爲我看到你的帖子是在他們的前一個小時過賬的)。不知道我該如何錯過它。抱歉。 –

+0

不用擔心!我很高興這很有幫助。 –