Meh*_*ali 6 t-sql sql-server oracle linked-server openquery
我正在使用 SQL Server Express,我创建了一个到 Oracle 数据库的链接服务器。
正如标题所示,我想将从本地表中选择的数据插入到链接服务器上的表中。
我尝试了很多查询,但没有一个能按我想要的方式工作。
我使用的下面的查询有效,但仅适用于静态值,但我想从本地数据库上的表动态插入数据。
INSERT OPENQUERY (ORTEST, 'SELECT * FROM reservation')
VALUES (2, '2', 3);
Run Code Online (Sandbox Code Playgroud)
它不能与 openquery 一起使用是正常的。要写入远程表,您必须在服务器级别设置链接服务器。这适用于 Oracle,除非您的 sql 版本太旧了。以下是在服务器端设置链接服务器的方法:
exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'AllowInProcess', 1
go
exec sp_addlinkedserver @server = 'MyOracleServer', @srvproduct = 'Oracle', @provider = 'OraOLEDB.Oracle', @datasrc = 'MyOracleLinkedServer'
go
exec master.dbo.sp_serveroption @server=N'MyOracleServer', @optname=N'rpc out', @optvalue=N'true'
go
sp_addlinkedsrvlogin @rmtsrvname = N'MyOracleServer', @useself = 'false', @locallogin = NULL, @rmtuser = 'myRemoteUser', @rmtpassword ='myRemotePassword'
go
Run Code Online (Sandbox Code Playgroud)
然后您可以继续进行常规查询:
insert into [MyOracleServer]..[MyRemoteSchema].[MyRemoteTable](
[MyRemoteField1],
[MyRemoteField2]
)
select
t.Field1,
t.Field2
from
[dbo].[MyLocalTable] as t
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多详细信息,请查看以下两个链接:https: //www.mssqltips.com/sqlservertip/4396/creating-a-sql-server-2014-linked-server-for-an-oracle -11g-数据库/
您应该能够使用链接服务器名称作为限定表名称的一部分,然后只需在 select 中执行正常插入即可:
INSERT INTO ORTEST.[dbname].[dbo].[reservation]
SELECT * from [dbname].[db].[reservation]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13925 次 |
| 最近记录: |