Как использовать «Заполнитель» в запросе T-SQL для связанного сервера, подключенного к SAP-HANA? - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно извлечь данные из табличного представления, расположенного в Hana, в таблицу MS-SQL. От команды HANA мне сказали, что я должен использовать «заполнитель», чтобы предотвратить одновременную загрузку журнала изменений и активной таблицы.

Это запрос:

Declare @querytext nvarchar(1000)
Set @querytext ='
Insert into stagingtable
Select * from Openquery(LinkedServer,
''Select Field1, Field2, Field3 
From "SYSBI"."testdata.view/viewname"(''Placeholder''=(''$$Value1$$'',''00000''), ''Placeholder''=(''$$Value2$$'',''F'')); 
Where Field1 in (''ab'',''cd'',''ef''));''
'
EXEC(@querytext)

Связанный сервер работает (тестовое соединение работает). Выполнение этого запроса в Hana (или SAP) работает. Однако при выполнении запроса в SSMS с Openquery я получаю синтаксическую ошибку:

Неверный синтаксис рядом с 'placeholder'

Я попробовал все варианты "," или "или вообще не учел их, но, похоже, ничего не помогло. У кого-нибудь есть идея?

1 Ответ

0 голосов
/ 08 марта 2019

В синтаксисе было несколько опечаток, и все еще есть проблемы с помещением всего в строку для переменной.Однако:

Insert into stagingtable
Select * from Openquery(LinkedServer,
'Select Field1, Field2, Field3 
From "SYSBI"."testdata.view/viewname"(''Placeholder''=(''$$Value1$$'',''00000''), 
''Placeholder''=(''$$Value2$$'',''F'')) 
Where Field1 in (''ab'',''cd'',''ef''));')

работает как задумано.Теперь мне «всего лишь» нужно обернуть весь запрос в строку, чтобы поместить его в переменную.

...