在SQL Server中的不同数据库上联接两个结果集
可能这个问题是多余的,但我张贴它,因为我无法得到一个确切的解决方案(请阅读实际情况)。 我有下面的脚本,它返回所有表和相应的行数在SQL Server中的不同数据库上联接两个结果集,sql,sql-server,sql-server-2008,tsql,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'
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.Name,sysindex.Rows
从…起
系统对象
内部联接系统索引
在sysobjects.id=sysindexes.id上
哪里
类型='U'
和sysindexes.IndId<2 ORDER BY([行])
现在,我想将这个结果集与不同数据库(具有相同结构)上的类似结果集连接起来。我无法对sysobjects使用四分区命名。它给出错误:无法绑定多部分标识符“My_Database1.sysobjects.Name”。
实际场景:我有一个重复的数据库,想知道哪些表中的数据没有从原始数据库中移动
任何替代解决方案也会有所帮助。将.dbo放在“My_Database1.和sysobjects.Name”之间,如中所示
请对系统数据表使用sys对象:
select sys_obj.* from DatabaseName.Sys.sysobjects sys_obj
您应该能够在不同于所连接数据库的数据库上查询sys表(当然,只要它们位于同一实例上)。检查您的sysntax,我认为您缺少模式名称sys,因此它可能是:
SELECT * FROM My_Database1.sys.sysobjects
谢谢我缺少架构名称。dbo和sys都能工作。我缺少架构名称。dbo和sys都工作了
SELECT * FROM My_Database1.sys.sysobjects