В настоящее время я использую 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).
Любая помощь приветствуется.
EXEC без круглых скобок запускает хранимую процедуру.
Так что постарайтесь:
truncate table [jerry].[dbo].[purchases]
insert into [jerry].[dbo].[purchases]
exec ( @sqlcode ) at olap
См. выполнять
Похоже, у пользователя нет прав на изменение связанного сервера. Обычно эту команду запускает системный администратор.
как я могу обновить свою таблицу, используя EXEC
здесь, можете ли вы отредактировать свой ответ, чтобы показать это, чтобы я мог принять?
как я могу обновить свою таблицу, используя EXEC
здесь, можете ли вы отредактировать свой ответ, чтобы показать это, чтобы я мог принять? В настоящее время это показывает мне правильные строки, но не создает таблицу [jerry].[dbo].[purchases]
Вместо SELECT .. INTO вы просто усекаете таблицу и запускаете INSERT ... EXEC
Большое спасибо за ваше предложение @DavidBrowne. Как ни странно, он говорит мне, что я не могу его найти или у меня нет разрешений (что невозможно, поскольку я тот, кто его настроил). Но я продолжу исследования. Вздох... Спасибо!!
Если вы уронили таблицу, вам придется создать ее заново.
Не уверен, но эта ссылка содержит много информации о связанном сервере, который вы используете, и можете ли вы его проверить. sqlshack.com/ссылка-sql-сервер-оракул-база данных