2014-10-06 3 views
1

Я использую SQL Server с сервером Sybase, настроенным как связанный сервер.Sybase - SQL Linked server: параметр является неправильным при использовании переменной

я могу запросить таблицы связанного сервера с помощью этой

SELECT * FROM [LinkDb].[Database].[dbo].TABLENAME 

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

я сузил его до этого запроса:

declare @dateVal nvarchar(90) 
set @dateVal = (select convert(varchar, getdate(), 126) + '0000') 

select * from [LinkDb].[Database].[dbo].TABLENAME 
where datevalue >= '2014-10-06T00:00:00.0000000' 
and datevalue <= @dateVal 

который возвращает сообщение о ошибки:.

OLE DB provider "Sybase.ASEOLEDBProvider" for linked server "SSE" returned message "The parameter is incorrect. »

Не уверен, что должно быть галочкой здесь, но это параметры поставщика для моего подключения Sybase.

Server Provider Settings

Любая помощь очень ценится.

+0

Можете ли вы запросить другой столбец в разделе where? –

+0

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

+0

Будет ли эта работа: выбрать * из [LinkDb]. [База данных]. [Dbo] .TABLENAME где datevalue> = '2014-10-06T00: 00: 00.0000000'. Вы предоставляете 7 цифр за миллисекунды. Формат определяется шестью: ГГГГ-ММ-ДДХ: ММ: СС: SSSSSS. Это проблема? –

ответ

1

Мне удалось обойти это, используя вложенный запрос.

Может работать для тех, кто испытывает то же самое.

select * from [LinkDb].[Database].[dbo].TABLENAME 
where datevalue >= '2014-10-06T00:00:00.0000000' 
and datevalue <= (SELECT MAX(datevalue) FROM [LinkDb].[Database].[dbo].TABLENAME) 
Смежные вопросы