从每个数据库的同一个表中选择信息的SQL脚本?
我想知道如何编写一个SQL脚本来从表1中获取10多个数据库的信息,我该如何做呢? 换句话说,我有10多个数据库,它们都有一个完全相同的表,称为Table1,我如何编写脚本而不重复代码从每个数据库的同一个表中选择信息的SQL脚本?,sql,sql-server,Sql,Sql Server,我想知道如何编写一个SQL脚本来从表1中获取10多个数据库的信息,我该如何做呢? 换句话说,我有10多个数据库,它们都有一个完全相同的表,称为Table1,我如何编写脚本而不重复代码 SELECT name, dbo.tDBVersion FROM MASTER.dbo.sysdatabases WHERE NAME LIKE 'AAA%' 我尝试了上述方法,但问题是弹出窗口:“无法绑定多部分标识符dbo.tDBVersion” 我想要的结果是两列:名称和旁边的dbversion编号 编辑:我
SELECT name, dbo.tDBVersion FROM MASTER.dbo.sysdatabases WHERE NAME LIKE 'AAA%'
我尝试了上述方法,但问题是弹出窗口:“无法绑定多部分标识符dbo.tDBVersion”
我想要的结果是两列:名称和旁边的dbversion编号
编辑:我的所有数据库都以AAA开头有一个名为
sp_MSforeachdb
的存储过程。这将在每个数据库中运行相同的命令-例如:
EXEC sp_MSforeachdb 'IF EXISTS(SELECT 1 FROM sys.tables WHERE name = ''tDBversion'') SELECT db_name(), col1, col2 FROM tDBversion'
我继续手动操作,然后玩弄临时表,得到了我想要的以下内容:
USE AAA
SELECT DB_Name() 'Database', Version, CodeVersion INTO #TempTable FROM tDBVersion
USE AAB
INSERT INTO #TempTable
SELECT DB_Name() 'Database', Version, CodeVersion FROM tDBVersion
USE AAC
INSERT INTO #TempTable
SELECT DB_Name() 'Database', Version, CodeVersion FROM tDBVersion
SELECT * FROM #TempTable
-- ORDER BY "Version" asc
DROP TABLE #TempTable
-- My info sticks in the result pane while the table is dropped so that I don't forget to drop it
我明白了,这让我达到了50%,现在我只需要在结果旁边的一列中显示被查询的数据库的名称,有没有办法做到这一点?更新的答案-结合使用db_name()函数我正在尝试,但我得到的是“无效对象名”dbo.tDBversion。EXEC sp_MSforeachdb“SELECT DB_NAME(),Version FROM dbo.tDBVersion”该表在一个或多个数据库中不存在。您需要先更改命令检查表是否存在-请参阅更新的应答刚才注意到发生了什么。我执行了USE master,SP仅在主数据库上运行10次。一旦我运行USE AAA database,我就没有任何错误,但我现在有10次相同的DB,而不是10次不同的DB