我在 2 个不同的 SQL Server 实例上有 2 个数据库,它们不在同一个本地网络区域中。
我需要的是当我对数据库 A 中的表 A 进行更改时,我想更新数据库 B 中的表 B。
所以我决定链接这些服务器,但我的问题是,如果服务器之间的连接丢失并且我在数据库 A 上获得更新/插入/删除,那么当连接再次可用时,如何在数据库 B 上应用这些更改?我会为此获得任何自动生成的日志吗?
谢谢你的帮助。
我在 2 个不同的 SQL Server 实例上有 2 个数据库,它们不在同一个本地网络区域中。
我需要的是当我对数据库 A 中的表 A 进行更改时,我想更新数据库 B 中的表 B。
所以我决定链接这些服务器,但我的问题是,如果服务器之间的连接丢失并且我在数据库 A 上获得更新/插入/删除,那么当连接再次可用时,如何在数据库 B 上应用这些更改?我会为此获得任何自动生成的日志吗?
谢谢你的帮助。
您应该将更新分成两部分(1-st - 用于第一台服务器,2-nd - 用于链接的服务器)并在单个事务中执行每个部分。如果第二个事务失败,请将您的更新参数插入到一些失败更新表中。安排此表每小时(或每天)尝试执行 UPDATE,并在成功时从失败更新表中删除更新记录。
更新
BEGIN TRANSACTION
BEGIN TRY
--UPDATE
COMMIT TRANSACTION
END TRY
BEGIN CATCH
--INSERT INTO UpdateFail TABLE
ROLLBACK TRANSACTION
END CATCH
这被称为离线应用程序...最近我做了这样的应用程序,如果没有与其他数据库的连接,它将离线运行,这意味着它将保存在本地数据库中,稍后当连接恢复时,我正在使用 openrowset 在其他数据库上传输数据作为表结构的一侧在两侧是相同的
我正在检查另一边是否存在该行然后我插入,否则我将更新我已经为我正在暂停连接参数的存储过程创建了存储过程