Обход ограничения символов в случае невозможности использования OPENQUERY EXECUTE - PullRequest
3 голосов
/ 30 мая 2019

В настоящее время я использую SQL Server Management Studio 17 для подключения к экземпляру базы данных Oracle, а затем извлекаю некоторые данные и вставляю их в имеющуюся таблицу SQL Server.

Я пытался сделать следующее:

DROP TABLE IF EXISTS [jerry].[dbo].[purchases]
SELECT * INTO [jerry].[dbo].[purchases] FROM OPENQUERY(OLAP, '

    proprietary sql code

');

Однако код SQL составляет около 9500 символов и, таким образом, OPENQUERY дает сбой, что поддерживается статьями MSDN

Я ссылался на эти сайты:

и узнал, что я могу использовать EXEC для достижения своей цели. Я попытался реализовать следующее:

EXEC master.dbo.sp_serveroption @server=N'OLAP', @optname=N'rpc out', @optvalue=N'true'
DECLARE @sqlcode VARCHAR(MAX)
SET @sqlcode = 'sql code'


DROP TABLE IF EXISTS [jerry].[dbo].[purchases]
EXEC @sqlcode AT OLAP

Тем не менее, я все еще получаю ошибку Invalid Syntax near OLAP. Я подтвердил, что OLAP - правильное имя нашего администратора баз данных, а другие OPENQUERY функции работают очень хорошо (с гораздо более короткими операторами SQL).

  • Я не могу редактировать запрос SQL
  • Я не могу редактировать разрешения для внешних баз данных OLAP (я не администратор баз данных и не нахожусь в группе безопасности)

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

1 Ответ

3 голосов
/ 31 мая 2019

EXEC без скобок запускает хранимую процедуру.

Так что попробуйте:

truncate table [jerry].[dbo].[purchases]

insert into [jerry].[dbo].[purchases]
exec ( @sqlcode ) at olap

См. Выполнить

...