У меня есть этот запрос, который включает таблицу с другого сервера:
select count(serialno), max(convert(varchar(10),Crtd_DateTime,101))
from tblSBox tsb (nolock)
inner join tblMBox tmb (nolock) on tsb.idMaster = tmb.idMaster
inner join [server_2].fdb.dbo.sns_in_out sio
on tsb.serialno = sio.lotsernbr and invtMult='-1' and RefNbr like 'I%'
where tmb.WO=34612
, но этот запрос выполняется вечно, и я не могу указать индекс или подсказку блокировки для удаленного источника данных, поэтому я посмотрел наи я обнаружил, что могу использовать это:
SELECT * FROM OpenQuery(server, 'Select * from sometable with (nolock)')
, который работает нормально, но, как вы можете видеть, у меня есть связь между tsb.serialno
и sio.lotsernbr
, и когда я размещаю все это внутри'', как показано ниже:
select serialno,
(SELECT *
FROM OpenQuery([server_2], 'select convert(varchar(10), Crtd_DateTime, 101)
from fdb.dbo.sns_in_out sio (nolock)
where (tsb.serialno = sio.lotsernbr
and invtMult=''-1'' and RefNbr like ''I%'')')) as crtDate
from tblSBox tsb (nolock)
inner join tblMBox tmb (nolock) on tsb.idMaster = tmb.idMaster
where tmb.WO=34612
Я получаю эту ошибку:
[Поставщик OLE / DB возвратил сообщение: отложенная подготовка не может быть завершена.]
Сообщение8180, Уровень 16, Состояние 1, Строка 1
Оператор (ы) не может быть подготовлен.
Сообщение 4104, Уровень 16, Состояние 1, Строка 1
Может быть составной идентификатор "tsb.serialno"не быть связанным.
Есть идеи, как этого добиться?