Обход ограничения на количество символов в OPENQUERY при неудачном использовании EXECUTE

В настоящее время я использую 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 (я не являюсь администратором баз данных и не вхожу в группу безопасности)

Любая помощь приветствуется.

Не уверен, но эта ссылка содержит много информации о связанном сервере, который вы используете, и можете ли вы его проверить. sqlshack.com/ссылка-sql-сервер-оракул-база данных

Avi 30.05.2019 23:05
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
1
351
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Так что постарайтесь:

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

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

См. выполнять

Похоже, у пользователя нет прав на изменение связанного сервера. Обычно эту команду запускает системный администратор.

David Browne - Microsoft 30.05.2019 23:14

как я могу обновить свою таблицу, используя EXEC здесь, можете ли вы отредактировать свой ответ, чтобы показать это, чтобы я мог принять?

artemis 30.05.2019 23:55

как я могу обновить свою таблицу, используя EXEC здесь, можете ли вы отредактировать свой ответ, чтобы показать это, чтобы я мог принять? В настоящее время это показывает мне правильные строки, но не создает таблицу [jerry].[dbo].[purchases]

artemis 31.05.2019 00:01

Вместо SELECT .. INTO вы просто усекаете таблицу и запускаете INSERT ... EXEC

David Browne - Microsoft 31.05.2019 16:29

Большое спасибо за ваше предложение @DavidBrowne. Как ни странно, он говорит мне, что я не могу его найти или у меня нет разрешений (что невозможно, поскольку я тот, кто его настроил). Но я продолжу исследования. Вздох... Спасибо!!

artemis 31.05.2019 16:32

Если вы уронили таблицу, вам придется создать ее заново.

David Browne - Microsoft 31.05.2019 18:11

Другие вопросы по теме