首页 > 解决方案 > 在 2 个不同的服务器上加入 2 个表

问题描述

两台服务器已链接,但尝试运行时出现错误:

消息 208,级别 16,状态 1,第 1 行
无效的对象名称“COI_port.Mess.agent_data”

SQL 代码:

SELECT 
    DATEPART(Hour, Chat) AS Interval, Chat,
    msg.RepRegion, msg.AgentRole,
    msg.Person, msg.Chat, msg.ChatStart, ChatEnd,
    --columns needed
    [AgentMessages], [ConsumerMessages],
    [ResolutionHrs], [FirstRespSecs], [Abandoned],
    --get interval online time    
    away.ntlogin, away.report_dt, away.int_interval,
    away.backsoonsecs, away.awaysecs, away.onlinesecs
FROM 
    [REGIONAL_OI].[east].[MsgDetails] (nolock) msg  
--join tables    
FULL OUTER JOIN
    [COI_port].[Mess].[agent_data](nolock) away ON msg.Interval = away.int 
                                                AND msg.Person = away.login  
WHERE 
    msg.Chat >= GETDATE() - 14

标签: sqlsql-serverjoin

解决方案


在您的查询中,您使用[COI_port].[Mess].[agent_data]从另一台服务器调用表。但是您需要在数据库名称和表名称之间使用dbo ,如下所示:

[COI_port].[混乱].dbo.agent_data

所以查询将是:

SELECT 
    DATEPART(Hour, Chat) AS Interval, Chat,
    msg.RepRegion, msg.AgentRole,
    msg.Person, msg.Chat, msg.ChatStart, ChatEnd,
    --columns needed
    [AgentMessages], [ConsumerMessages],
    [ResolutionHrs], [FirstRespSecs], [Abandoned],
    --get interval online time    
    away.ntlogin, away.report_dt, away.int_interval,
    away.backsoonsecs, away.awaysecs, away.onlinesecs
FROM 
    [REGIONAL_OI].[east].[MsgDetails] (nolock) msg  
--join tables    
FULL OUTER JOIN
    [COI_port].[Mess].dbo.agent_data(nolock) away ON msg.Interval = away.int 
                                                AND msg.Person = away.login  
WHERE 
    msg.Chat >= GETDATE() - 14

推荐阅读