SQL Server Management Studio中的查询无法将日期传递到链接的InterSystems服务器



我有一个SQL Server和Cache服务器,需要组合一些数据。大多数函数都在工作,除非我试图用变量或参数传递日期。

下面是我进行的一个测试(其中之一)。

declare @myDate datetime
set @myDate = convert(datetime,'2012-02-01',120)
select * from ccms..dbo.dcdnstat where timestamp > '2012-02-01'  -- WORKS
exec( 'select * from dbo.dcdnstat where cdn = ?', 21004) at ccms  -- WORKS
exec( 'select * from dbo.dcdnstat where timestamp > ?',@myDate) at ccms  -- ERROR 7213
select * from ccms..dbo.dcdnstat where timestamp > @myDate  -- ERROR 7322

Msg 7213,级别16,状态1,第9行提供程序尝试将远程存储过程参数传递到远程服务器"ccms"失败。验证参数的数量、顺序和传递的值是正确的。消息7322,级别16,状态2,第11行A向OLE DB访问接口提供参数信息时出错链接服务器"ccms"的"MSDASQL"。

我尝试了不同的日期格式,如上所示,我可以用变量查询其他字段,如果我使用特定的值,我可以查询日期。

不要使用存储过程参数的"DATETIME"类型,只需使用"DATE"

(只要您不需要时间要求)

我今天遇到了类似的问题。这与调用服务器和链接服务器不是同一版本有关。一个是SQLServer2005,另一个是SQLServer 2008。出现此问题的原因是,在远程端(2008)查询的列是datetime2,而调用服务器(2005)不支持datetime2。

我知道这有点晚了,但我偶然发现它在寻找与Cache系统类似的东西。看起来我们在同一个后端系统上工作。我的是Avaya CCMS系统。以下是我将日期作为变量传递的方法:

DECLARE @myDate DATETIME
SET @myDate = CAST('2012-07-01' AS DATETIME) 
SELECT SUM(CallsOffered), SUM(CallsAnswered), SUM(SkillsetAbandonedAftThreshold)
FROM AvayaCCMS..dbo.mSkillsetStat
WHERE Timestamp = @myDate

我使用Sybase数据库作为链接服务器进行了类似的操作。正如MobileMon所说,我可以将日期时间更改为日期,现在效果很好。

declare @myDate date
set @myDate = convert(datetime,'2012-02-01',120)

相关内容

  • 没有找到相关文章

最新更新