如何在Microsoft SQL Server Management Studio 2005中找到一个表所在的数据库,您知道该名称(例如dbo.mytable1)?

时间:2008-10-03 13:03:01

标签: sql-server database sql-server-2005

我知道要查找的表的名称。我正在使用Microsoft SQL Server Management Studio 2005,我想搜索我在工作室中附加的数据库服务器中的所有数据库。这可能吗?我是否需要查询系统表?

4 个答案:

答案 0 :(得分:3)

您可以使用sp_MSforeacheachdb。

sp_MSforeachdb'IF EXISTS(SELECT * FROM sys.tables WHERE [Name] =''TableName'')PRINT''?''';

答案 1 :(得分:3)

如上所述但使用系统功能而非系统表

EXEC sp_MSForEachDB 'USE [?] IF OBJECT_ID(''dbo.mytable'') IS NOT NULL PRINT ''?'''

答案 2 :(得分:1)

使用主

DECLARE @db_name varchar(128) DECLARE @DbID int DECLARE @sql_string nvarchar(4000) DECLARE @TableName varchar(30)

选择@TableName =''

上设置nocount

CREATE TABLE [#tllDatabaseName](     [DbName] [varchar](128)NOT NULL,     [TableName] [varchar](128)NOT NULL)

声明db_cursor游标forward_only
SELECT  name, DbID 
FROM    master..sysdatabases
WHERE   name NOT IN ('northwind', 'pubs')
AND     (status & 32) <> 32        --loading.
AND (status & 64) <> 64        --pre recovery.
AND (status & 128) <> 128      --recovering.
AND (status & 256) <> 256      --not recovered.
AND (status & 512) <> 512      --Offline
AND (status & 32768) <> 32768  --emergency mode.
AND     DbID > 4

打开db_cursor

从db_cursor获取下一个到@db_name,@ DbID

而@@ FETCH_STATUS = 0 开始

set @sql_string = ''
+'  Insert into #tblDatabaseName '
+'  select  ''' + @db_name + ''' as ''DbName'',  '
+'          o.name as ''TableName''  '
+'  from               [' + @db_name + ']..sysobjects   o with(nolock)  '
+'  where   o.name like ''' + @TableName + '''  ' 

execute sp_executesql @sql_string

fetch next from db_cursor into @db_name, @DbID

结束

取消分配db_cursor

从#tblDatabaseName

中选择*

drop table #tblDatabaseName

答案 3 :(得分:1)

sp_MSForEachDB是一个未记录的proc,可以为您执行此操作。获得输出有点困难,所以我会留给你。

EXEC sp_MSForEachDB 'USE [?] IF EXISTS(SELECT * FROM Sys.Objects WHERE Type = ''U'' AND Name = ''Product'') PRINT ''?'''