I am trying to create a trigger on my MSSQL 2k5 server so that when a record is inserted, a replicated record is created in a table on an Oracle 11g database on a Linux server (Oracle Linux 6).
Creating the trigger is easy, but when I test it I am getting an error stating the following:
.NetSqlClient Data Provider The operation could not be performed because OLE DB Provider 'OraOLEDB.Oracle'for linked server "<myserver>"
was unable tobegin thedistributedtransaction.
OLEDB Provider "OraOLEDB.Oracle"for linked server "<myserver>" returned:"New transaction cannot enlist in the specified
transaction coordinator"
Here is the trigger (MSSQL):
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE insert_aban8_state
@an8 int,
@st nvarchar(3)
AS
BEGIN
SET NOCOUNT ON;
declare @c numeric
select @c = count(*) from [e9db]..[CRPDTA].[ABAN8_STATE$] where alan8=@an8 and aladds=@st
if(@c =0)
begin
insert into [e9db]..[CRPDTA].[ABAN8_STATE$]
values(@an8, @st)
end
END
GO
After reviewing the MS Transaction Coordinator, I am now totally confused. I checked the services and have the MS DTC enabled and running, but am not sure what to do on the Linux side.
Does the Oracle Services for Microsoft Transaction Server (OraMTS) work on Linux? I could only find references for this for Oracle 11g on Windows.
What do I need to do to enable this replication via mssql table trigger to Oracle11g on Linux?