我正在使用两个SQL Server,一个是SQL Server 2000,另一个是SQL Server 2005。
当SQL Server 2000中的table1被更新/插入/删除时,我需要在SQL Server 2005中更新另一个表。能否通过触发器实现?如果不行,有哪些可能的选项?
谢谢,祝您愉快!
我正在使用两个SQL Server,一个是SQL Server 2000,另一个是SQL Server 2005。
当SQL Server 2000中的table1被更新/插入/删除时,我需要在SQL Server 2005中更新另一个表。能否通过触发器实现?如果不行,有哪些可能的选项?
谢谢,祝您愉快!
如果您必须同步执行它们,或者您只是决定将整个操作作为单个事务包装起来,我会将逻辑放在一个存储过程中以保持清洁。您可以从2000创建一个链接服务器到2005,并在那里引用表作为SERVER.DATABASE.SCHEMA.TABLE。或者,您可以在远程服务器上执行存储过程来进行插入/更新/删除操作。
如果您不想使用SQL复制,您可以考虑通过触发器将从2000中的插入/更新/删除操作写入同一数据库中的单独表中。然后,有一个单独的作业将这些更改写入2005,然后从表中删除它们。这意味着您可以批量处理更改,原始表格的更新速度更快,可以更好地处理两个服务器之间的连接丢失。但是,您将无法保证更新实际应用于2005服务器,并且必须运行一个sql作业的额外复杂性。因此,这是一种权衡。一旦您开始编写和维护这种逻辑,您就会意识到这就是为什么微软编写了复制工具,以便您不必这样做。
是的,您可以使用联接服务器和数据库上正在更新的触发器来实现此操作。
因此,在触发器内部,您需要执行以下操作。
UPDATE linkedserver.Database1.dbo.myTable
SET ...
WHERE ---
将“set”和“WHERE”中的值替换为您自己的值。
现在,唯一需要注意的是2000年和2005年之间链接服务器的设置,您需要首先尝试一下。