我在一个sql server上有两个数据库,我必须将两个表从一个DB服务器链接到另一个DB服务器的两个表,以获取我需要的信息.问题是当我尝试从第二个DB服务器链接两个表时,查询返回1000或更多的重复.如何在两个数据库上运行单个查询?所有表都具有common_ord列.有人可以帮帮我吗?谢谢.
服务器1 = CXADMIN
服务器2 = SAADMIN
这是我的查询到目前为止
SELECT RF.REPAIR_ORD,RH.RECV_UNIT,RH.RECV_SERIAL_NBR,RP.FAULT_CODE,RP.REPAIR_ACTION_CODE,CG.TASK_CODE FROM CXADMIN.RO_FAILURE_DTL RF,CXADMIN.RO_HIST RH,saadmin.sa_repair_part@elgsad rp,saadmin.sa_code_group_task_dtl@elgsad cg WHERE RF.REPAIR_ORD = RH.REPAIR_ORD AND RP.REPAIR_ORD = CG.REPAIR_ORD AND RF.FAILURE_CODE ='DISK' AND RH.CURR_FACILITY_ID ='23' AND RF.CREATED_DATE >'1-JUN-2010' AND RF.CREATED_DATE < '1-JUL-2010' AND ( CG.TASK_CODE ='PHMD' OR CG.TASK_CODE ='PHSN' OR CG.TASK_CODE ='CHMD' OR CG.TASK_CODE ='CHSN')
解决方法
我认为重复的问题不是加入这两个数据库,而是加入到第一个.我想你可能需要一个INNER或OUTER连接来处理链接.至于从两个不同的数据库获取数据,语法相当简单.您只需添加服务器名称点数据库名称点所有者名称dot表名.
例如:
SELECT firstdb.*,seconddb.* FROM Server1.Database1.dbo.myTable AS firstdb INNER JOIN Server2.Database2.dbo.myTable AS seconddb ON firstdb.id = seconddb.id
在你的例子中,听起来你正在获得链接的工作,但是在repair_ord字段上有一个加入问题.虽然我不知道你的架构,我猜这个链接应该是内在的.如果您只是在FROM语句中添加两个表,并且不能正确地执行WHERE语句,那么您将遇到麻烦,就像您所描述的那样.