+ -
当前位置:首页 → 问答吧 → sqlserver怎么查询所有的数据库里的记录?

sqlserver怎么查询所有的数据库里的记录?

时间:2011-11-09

来源:互联网

服务器里有好几个数据库,
我想把字段abcd=1234的记录都查询出来,
请问要怎么操作呢

先谢谢了

作者: xiaoqin1999   发布时间: 2011-11-09

什么叫做好几个数据库?
是数据库,还是表?

作者: qianjin036a   发布时间: 2011-11-09

数据库
一共有8个数据库
每个数据库里有N个表

作者: xiaoqin1999   发布时间: 2011-11-09

SQL code
EXEC sp_MSforeachtable 'select * from ? where id=1'

作者: Beirut   发布时间: 2011-11-09

估計是所有庫表的數據?

作者: roy_88   发布时间: 2011-11-09

SQL code
USE master
go

CREATE TABLE sp_test(TabName NVARCHAR(200))
go
USE db1
go
DECLARE @s NVARCHAR(max)
SET @s=''
SELECT 
    @s=@s+' select '+DB_NAME()+'.dbo.'+a.Name+' from '+a.NAME+ ' where abcd=1 '
FROM sysobjects AS a,syscolumns AS b 
WHERE a.ID=b.ID AND a.xtype='U' --AND b.Name='abcd'

INSERT sp_test EXEC(@s)


這樣一個個DB循環執行,最好 select * from sp_test

作者: roy_88   发布时间: 2011-11-09

恐怕你还是一个个查比较好.
提供一个思路,用use命令转到要查的表,然后用这个语句找出这个数据库中有字段为abcd 的表,然后再去查:
SQL code
select name 
from sys.objects a 
where type='U' and exists(select 1 from sys.columns where name='abcd' and object_id=a.object_id)

用上面的语句查出含字段abcd的表名称后,用
select * from 你查到的表名 where abcd=1234
然后,再use 另一个数据库,用同样的方法进行查询.
由于不同的数据表,列可能是不一样的,因此不能一次将它们都查出来合并到同一个地方.
这样查法,你也能了解一下各个数据库的结构.

作者: qianjin036a   发布时间: 2011-11-09

在一个库里,可以用下面语句来查出所有含列 abcd 且值为 1234 的表的记录:
SQL code
declare @str nvarchar(max)
select @str=ISNULL(@str+'; ','')+' select * from '+name+' where abcd=1234'
from sys.objects a 
where type='U' and exists(select 1 from sys.columns where name='abcd' and object_id=a.object_id)
exec(@str)

作者: qianjin036a   发布时间: 2011-11-09

所有的库??有难度 如果是一个库还可以结合系统表来写。

作者: fredrickhu   发布时间: 2011-11-09