2015-06-30 43 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

不用担心!我很高兴这很有帮助。 –