我正在尝试获取结果EXEC
查询并将它们放入我的 SQL Server 2017 数据库中的表中。
我知道以前也有人问过类似的问题here, here, and here,但我还没有找到有效的解决方案。
The 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
但出现以下错误:
返回链接服务器“OLAP”的 OLE DB 提供程序“OraOLEDB.Oracle”
消息“无法加入交易。”。消息 7391,16 级,
状态 2,第 208 行 无法执行操作,因为 OLE DB
链接服务器“OLAP”的提供程序“OraOLEDB.Oracle”无法
开始分布式事务。
尝试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 数据库,我对该数据库只有读取权限,无法更改任何安全设置。
如有任何帮助,我们将不胜感激。