我目前正在使用 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 文章 https://learn.microsoft.com/en-us/sql/t-sql/functions/openquery-transact-sql?view=sql-server-2017
我参考了这些网站:
-
- MSDN 一 https://social.msdn.microsoft.com/Forums/en-US/19022658-6a0c-416c-a524-234bd7c2b05e/openquery-limitation-max-8000-character?forum=transactsql - MSDN 二 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/0847ad24-0dfe-4ae1-9788-5516c7830f40/using-openquery-with-variables-in-the-argument?forum=transactsql
并了解到我可以使用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
是我们的 DBA 和其他人提供的正确名称OPENQUERY
函数工作得很好(使用更短的 SQL 语句)。
- 我无法编辑 SQL 查询
- 我无法编辑外部 OLAP 的数据库权限(我不是 DBA,也不在安全组中)
非常感谢任何帮助。
不带括号的 EXEC 运行存储过程。
So try:
truncate table [jerry].[dbo].[purchases]
insert into [jerry].[dbo].[purchases]
exec ( @sqlcode ) at olap
See execute https://learn.microsoft.com/en-us/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-2017/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)