SQLServer2008中的链接服务器

SQLServer2008中的链接服务器,sql,sql-server,ssms,sql-server-2008,Sql,Sql Server,Ssms,Sql Server 2008,新手。温柔一点或是做父母的 我正试图为报表生成一个查询。从实例AWDATA SQL Server 2008中,我有一个链接服务器GGIAPP01,其中包含一个ACCPAC数据库 当我运行以下命令,并注释掉行时,一切都很好 当我取消注释时,我没有得到任何参数,查询运行时,BW_AK.NR_RECHNUNG、BW_AP.ID、BW_AS.POS_NR返回为NULL 此外,BW_AUFTR_KOPF是一对多BW_AUFTR_POS,BW_AUFTR_POS是一对多BW_AUFTR_STKL,但记录计数

新手。温柔一点或是做父母的

我正试图为报表生成一个查询。从实例AWDATA SQL Server 2008中,我有一个链接服务器GGIAPP01,其中包含一个ACCPAC数据库

当我运行以下命令,并注释掉行时,一切都很好

当我取消注释时,我没有得到任何参数,查询运行时,BW_AK.NR_RECHNUNG、BW_AP.ID、BW_AS.POS_NR返回为NULL

此外,BW_AUFTR_KOPF是一对多BW_AUFTR_POS,BW_AUFTR_POS是一对多BW_AUFTR_STKL,但记录计数保持不变

我怀疑第一个BW连接是罪魁祸首,但我不确定如何准确地验证。如果没有强制转换,我会得到一个类型不匹配,因为IDINVC是char22,NR_RECHNUNG是int

任何反馈都将不胜感激。这是我的一个新领域

谢谢,

马特


与您的问题无关,我的反馈是使用openquery。原因是,按照您使用的语法,链接服务器表中的所有记录都首先进入sql server。where子句随后被应用,听起来像是查询返回时没有错误,但是数据不是预期的那样。是这样吗?如果是这样,那么设置链接服务器似乎不是问题。如果找不到服务器或表,它会通知您。这可能是一个数据或t-sql设计问题。这有意义吗?要调试,不要同时启用所有3个联接。在BW_AK表中注释,并将其他注释忽略。在没有匹配行的情况下,空值是左连接中的预期行为,因此我认为select永远不会找到与AROBP.idivcs匹配的BW_AK.NR_RECHNUNG。尝试从AROBP中选择IDINVC,并从GGIMAIN.SYSADM.BW\u AUFTR\u KOPF中选择CASTBW_AK.NR\u RECHNUNG as varchar。对应的行看起来相同吗?还是有一些细微的差别?只是确认一下,您确定AROBP.IDINVC中的数据将与BW_AUFTR_KOPF.NR_RECHNUNG中的数据相匹配?您已经查看了这两列,并且可以看到应该匹配的行?谢谢大家。一切看起来都是协作链接,但被记录为INT类型的实际上是FLOAT类型。所以AROBP.idivc是char22,BW_AK.NR_RECHNUNG是FLOAT。指示的CAST语句有一组尾随的0。尝试各种组合,当我将转换更改为castnr_RECHNUNG作为INT作为CHAR22作为INVINTCHAR时,SELECT显示的非常可爱,但是JOIN根本不喜欢它。有没有关于解决办法的想法?
declare @FiscalPeriod integer = 03, @FiscalYear integer = 2014

select
      AROBP.IDINVC,  AROBP.AMTPAYMTC, AROBP.TRANSTYPE, AROBP.TRXTYPE,
      AROBP.FISCPER, AROBP.FISCYR,    AROBP.DATEBTCH,  AROBP.IDCUST,
      ARCUS.NAMECUST,
      ARIBH.TEXTTRX, ARIBH.DATEINVC, ARIBH.AMTINVCTOT,
      ARSAP.NAMEEMPL,
--          BW_AK.NR_RECHNUNG,
--          BW_AP.ID,
--          BW_AS.POS_NR
from      GGIAPP01.GGI.dbo.AROBP       AROBP
left join GGIAPP01.GGI.dbo.ARCUS       ARCUS on AROBP.IDCUST    = ARCUS.IDCUST
left join GGIAPP01.GGI.dbo.ARIBH       ARIBH on AROBP.IDINVC    = ARIBH.IDINVC
left join GGIAPP01.GGI.dbo.ARSAP       ARSAP on ARCUS.CODESLSP1 = ARSAP.CODESLSP
--left join GGIMAIN.SYSADM.BW_AUFTR_KOPF BW_AK on AROBP.IDINVC = CAST(BW_AK.NR_RECHNUNG as
--varchar)
--left join GGIMAIN.SYSADM.BW_AUFTR_POS  BW_AP on BW_AK.ID = BW_AP.ID
--left join GGIMAIN.SYSADM.BW_AUFTR_STKL BW_AS on BW_AP.ID = BW_AS.ID and BW_AP.POS_NR =
--BW_AS.POS_NR
where     AROBP.IDINVC NOT LIKE 'PY%'
  AND AROBP.FISCPER = @FiscalPeriod
  AND AROBP.FISCYR  = @FiscalYear
order by  AROBP.IDINVC, ARSAP.NAMEEMPL, AROBP.IDCUST