Запрос в SQL Server Management Studio не может передать дату на связанный сервер InterSystems - PullRequest
1 голос
/ 07 февраля 2012

У меня есть сервер 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

Сообщение 7213, уровень 16, состояние 1, строка 9 Попытка провайдера передать параметры удаленной хранимой процедуры удаленному серверу «ccms» не удалась.Убедитесь, что количество параметров, порядок и значения переданы правильно.Сообщение 7322, уровень 16, состояние 2, строка 11 Произошла ошибка при передаче информации о параметрах поставщику OLE DB "MSDASQL" для связанного сервера "ccms".

Я пробовал разные форматы даты и каккак показано выше, я могу запрашивать другие поля с переменными, и я могу запрашивать дату, если я использую определенное значение.

Ответы [ 4 ]

1 голос
/ 14 октября 2014

Вместо типа «DATETIME» для параметра хранимой процедуры просто используйте «DATE»

(если вам не нужны временные требования)

0 голосов
/ 19 октября 2017

Я делал нечто очень похожее, используя базу данных Sybase в качестве связанного сервера.Как и сказал MobileMon, я смог изменить дату и время на дату, и теперь она отлично работает.

declare @myDate date
set @myDate = convert(datetime,'2012-02-01',120)
0 голосов
/ 16 августа 2012

Я знаю, что это немного поздно, но я наткнулся на это, ища что-то похожее с системой 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
0 голосов
/ 15 мая 2012

У меня была проблема, подобная этой сегодня. Это было связано с тем, что вызывающий сервер и связанный сервер не были одной и той же версией. Одним из них был SQL Server 2005, а другим - SQL Server 2008. Проблема заключалась в том, что столбец, к которому запрашивался удаленный конец (2008), был datetime2, а вызывающий сервер (2005) не поддерживает datetime2.

...