【问题标题】:Join two result sets on different databases in SQL Server在 SQL Server 中连接不同数据库上的两个结果集
【发布时间】:2013-07-19 09:56:46
【问题描述】:

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

    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.

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

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

【问题讨论】:

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


    【解决方案1】:

    将 .dbo 放在“My_Database1. 和 sysobjects.Name”之间,如下所示

    My_Database1.dbo.sysobjects
    

    【讨论】:

    • 谢谢。我错过了架构名称。 dbo 和 sys 都有效
    【解决方案2】:

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

    SELECT * FROM My_Database1.sys.sysobjects
    

    【讨论】:

    • 谢谢。我错过了架构名称。 dbo 和 sys 都有效
    【解决方案3】:

    系统数据表请使用sys对象:

    select sys_obj.* from DatabaseName.Sys.sysobjects sys_obj
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多