我有一张表,在DatabaseB中表名是AADatatimeBB。
我的SQL服务有多个数据库DatabaseA,DatabaseB,DatabaseC,DatabaseD
如果我不知道表:AADatatimeBB 在哪个数据库中,我该如何搜索?
如果我知道表在哪个数据库中,我可以使用以下查询来搜索表。
在可用的数据库列表中选择数据库名称并运行查询
SELECT * FROM INFORMATION_SCHEMA.TABLES 其中 table_name 像 '%DATASET%'
答案 0 :(得分:0)
通过以下查询,您可以检索所有数据库的名称。
SELECT name, database_id, create_date
FROM sys.databases ;
GO
OR-----------------------------------
SELECT *
FROM sys.databases ;
GO
如果你想要数据库中表的名字,你可以使用下面的查询
USE master
GO
SELECT *
FROM information_schema.tables
GO
OR----------------------------
USE model
GO
SELECT *
FROM information_schema.tables
GO
OR-----------------------
USE ...
GO
SELECT *
FROM information_schema.tables
GO
以下代码在while循环中检索所有数据库并返回每个数据库的所有表。
Declare @tempTable Table
(
name varchar(100)
)
--Container to Insert records in the inner select for final output
Insert into @tempTable
SELECT name
FROM sys.databases
-- Keep track of @tempTable record processing
Declare @name varchar(100)
Declare @SQL VarChar(1000)
While((Select Count(*) From @tempTable)>0)
Begin
Set @name=(Select Top 1 name From @tempTable)
--get all db tables
SELECT @SQL = 'USE ' + QUOTENAME(@name) + ' SELECT * FROM information_schema.tables'
Exec (@SQL)
Delete @tempTable Where name=@name
End
如果您想使用SQL LIKE Operator
,请按照下面的代码
SELECT @SQL = 'USE ' + QUOTENAME(@name) + ' SELECT * FROM information_schema.tables WHERE table_name LIKE ''%a%'''