Я пытаюсь взять результаты запроса EXEC
и поместить их в таблицу в моей базе данных SQL Server 2017.
Мне известно, что подобные вопросы задавались ранее, например здесь , здесь и здесь , но я не нашел решения, которое работает.
Запрос EXEC
отлично работает сам по себе и приводит именно к тем данным, которые я ищу:
-- EXEC master.dbo.sp_serveroption @server=N'OLAP', @optname=N'rpc out', @optvalue=N'true'
DECLARE @sqlcode VARCHAR(MAX)
SET @sqlcode = 'code'
EXEC (@sqlcode) AT OLAP
Я не могу использовать OPENQUERY
из-за того, что SQL превышает ограничение в 8000 символов.
Попытка 1:
DECLARE @sqlcode VARCHAR(MAX)
SET @sqlcode = 'sqlcode'
DROP TABLE IF EXISTS [jerry].[dbo].[purchases]
truncate table [jerry].[dbo].[purchases]
insert into [jerry].[dbo].[purchases]
exec ( @sqlcode ) at OLAP
Но получите:
Не удается найти объект «покупки», так как он не существует или вы делаете
нет прав.
Попытка 2:
SELECT * INTO [jerry].[dbo].[purchases] FROM OPENROWSET('EXEC (@sqlcode) AT OLAP')
но получите ошибку
Неверный синтаксис рядом с ')' `.
Попытка 3
CREATE TABLE [jerry].[dbo].[purchases] ([Transaction_Date] DATE, [Requirement_Date] DATE, [Element] NVARCHAR(256), [Trx_Quantity] NVARCHAR(256), [Part_Number] NVARCHAR(256), [NHA_Part_Number] NVARCHAR(256), [Group] NVARCHAR(256), [Details] NVARCHAR(256)); INSERT INTO [jerry].[dbo].[purchases] EXEC (@sqlcode) AT OLAP
но получите ошибку:
Поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера "OLAP" возвращен
сообщение "Невозможно зачислить в транзакцию." Сообщение 7391, уровень 16,
Состояние 2, строка 208 Операция не может быть выполнена из-за OLE DB
провайдеру "OraOLEDB.Oracle" для связанного сервера "OLAP" не удалось
начать распределенную транзакцию.
Попытка 4
DECLARE @sqlcode VARCHAR(MAX)
SET @sqlcode = 'sql'
DROP TABLE IF EXISTS [jerry].[dbo].[report]
CREATE TABLE [jerry].[dbo].[report] ([Transaction_Date] DATE, [Requirement_Date] DATE, [Element] NVARCHAR(256), [Trx_Quantity] NVARCHAR(256), [Part_Number] NVARCHAR(256), [NHA_Part_Number] NVARCHAR(256), [Group] NVARCHAR(256), [Details] NVARCHAR(256));
insert into [jerry].[dbo].[report]
exec ( @sqlcode ) at OLAP
Но я получаю ошибку:
Сообщение 7391, уровень 16, состояние 2, строка 209 Операция не может быть
выполнено потому что поставщик OLE DB "OraOLEDB.Oracle" для связанного сервера
«OLAP» не смог начать распределенную транзакцию.
И, когда я пытаюсь изменить значение «Включить продвижение распределенных транзакций на False» для этой записи , я получаю ошибку другого разрешения.
Короче, мне просто нужны результаты первого запроса EXEC
, введенного в базу данных SQL Server. Запрос EXEC
затрагивает внешнюю базу данных Oracle, на которую у меня есть ТОЛЬКО разрешения на чтение, и я не могу изменить какие-либо параметры безопасности.
Любая помощь приветствуется.