如何在两个不同的服务器(Oracle和SQL)上执行相同的DML语句

时间:2014-06-08 17:00:35

标签: sql oracle

我有两台服务器ORACLE和SQL。

我在两台服务器上都有相同的数据库。

我想执行DML(插入,更新,删除)。

如何同时在两台服务器上执行相同的DML语句?

如果我在SQL Server中插入一个语句,那么应该在oracle数据库中更新相同的语句。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用MS SQL(和Oracle可能有类似的东西)来创建链接服务器。 请参考以下链接:

这基本上允许您像往常一样使用MS SQL,但是您可以通过此功能引用完全不同的系统。

假设您有以下简单表格方案:

CREATE TABLE Tbl
(
 ID int,
 SOMETHING NVARCHAR(100)
);

我不想调用两个不同的INSERT语句,因此我会编写一个存储过程代表我进行插入。

让我们假设存储过程名称是SP_MyTest并且有两个参数:@ ID,@ SOMETHING。我会使用一个事务,以确保我总是插入两个表。 但请记住 - 这种实现是同步的,这意味着:如果一个插入需要"永远"然后,除非你做一些补充,否则申请将持续该时间。

CREATE PROCEDURE SP_MyTest
    @ID INT,
    @SOMETHING NVARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    BEGIN TRANSACTION TRN
    INSERT INTO Tbl(ID,SOMETHING) VALUES(@ID,@SOMETHING);
    INSERT INTO <LinkedServerName>.<LinkedServerDBName>.<schema>.<table>(ID,SOMETHING) VALUES(@ID, @SOMETHING);

    COMMIT TRANSACTION TRN
END

之后,我会称之为:

EXEC SP_MyTest 1, 'Test1'
EXEC SP_MyTest 2, 'Test2'
EXEC SP_MyTest 3, 'Test3'