我遇到问题:我有1个sql server已经在Windows中安装了SQL Server 2014 Express,在另一个服务器中安装了1个Oracle数据库服务器11g。
现在我想通过链接服务器将数据从SQL服务器插入到Oracle数据库中。 我能够成功地进行SELECT,UPDATE,INSERT。 但是当我尝试执行具有事务的存储过程时,我收到以下错误:链接服务器“UGOV”的OLE DB提供程序“OraOLEDB.Oracle”返回消息“无法在事务中登记。”。
程序的结构如下:
USE [payroll]
GO
/****** Object: StoredProcedure [dbo].[InsertPayrollUGOVDocumentsHead] Script Date: 12/1/2016 4:27:28 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--EXEC master.dbo.sp_serveroption @server='UGOV', @optname = 'remote proc transaction promotion', @optvalue = 'false'
--GO
ALTER PROCEDURE [dbo].[InsertPayrollUGOVDocumentsHead]
(
@ID_KARAKTERISTIKE INT,
@MUAJI INT,
@VITI INT,
@USER_ID VARCHAR(50)
)
AS
BEGIN
BEGIN TRY
BEGIN DISTRIBUTED TRANSACTION insertDocumentsHead
INSERT INTO........
...
....
COMMIT TRANSACTION insertDocumentsHead
PRINT 'Transaction success'
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION insertDocumentsHead
PRINT 'Transaction wrong'
END CATCH
END
如果我在没有事务的情况下执行查询就可以了。当我使用事务时,我得到错误。
我的想法是从我网站上的一个按钮调用此过程,并将数据插入到oracle DB中。
我所做的事情是:
请帮我解决这个问题。我真的很感激。 非常感谢你。
岸堤
答案 0 :(得分:1)
在“链接服务器”中,进入“服务器”选项,并将启用对分布式事务RPC的升级设置为 False