1

我有一个 SQL Server 和缓存服务器,需要合并一些数据。大多数功能都在工作,除非我尝试使用变量或参数传递日期。

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

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

消息 7213,级别 16,状态 1,第 9 行提供程序尝试将远程存储过程参数传递给远程服务器“ccms”失败。验证参数的数量、顺序和传递的值是否正确。消息 7322,级别 16,状态 2,第 11 行 向链接服务器“ccms”的 OLE DB 提供程序“MSDASQL”提供参数信息时发生故障。

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

4

4 回答 4

1

而不是存储过程参数的“DATETIME”类型,只需使用“DATE”

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

于 2014-10-14T12:30:05.490 回答
0

我知道这有点晚了,但我偶然发现它正在寻找与缓存系统类似的东西。看起来我们正在使用相同的后端系统。我的是 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
于 2012-08-16T15:51:57.557 回答
0

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

于 2012-05-14T20:05:18.007 回答
0

我正在使用 Sybase 数据库作为链接服务器做一些非常相似的事情。正如 MobileMon 所说,我能够更改日期时间,现在它工作正常。

declare @myDate date
set @myDate = convert(datetime,'2012-02-01',120)
于 2017-10-19T12:24:15.323 回答