在SQL Server中的不同数据库上连接两个结果集

时间:2013-07-19 09:56:47

标签: sql sql-server sql-server-2008 tsql

可能这个问题是多余的,但我发布它是因为我无法得到确切的解决方案(请阅读实际情景)。 我有以下脚本返回所有表和相应的否。行。

    SELECT
        sysobjects.Name, sysindexes.Rows
    FROM
        sysobjects
        INNER JOIN sysindexes
        ON sysobjects.id = sysindexes.id
    WHERE
        type = 'U'
        AND sysindexes.IndId < 2 ORDER BY ([Rows])

现在,我想在不同的数据库(具有相同的结构)上将此结果集与类似的结果集连接起来。我无法使用sysobjects进行四次分区命名。它给出了错误:The multi-part identifier "My_Database1.sysobjects.Name" could not be bound.

实际场景:我有一个重复的数据库,想知道哪些表数据尚未从原始数据库移动。

任何替代解决方案也会有所帮助。

3 个答案:

答案 0 :(得分:1)

将.dbo放在“My_Database1。和sysobjects.Name”之间,如

My_Database1.dbo.sysobjects

答案 1 :(得分:1)

你应该在不同的数据库上查询sys表而不是你所连接的数据库(当然,只要它们在同一个实例上)。检查你的sysntax,我相信你缺少模式名称sys所以它会是:

SELECT * FROM My_Database1.sys.sysobjects

答案 2 :(得分:0)

请将sys对象用于系统数据表:

select sys_obj.* from DatabaseName.Sys.sysobjects sys_obj