如何通过链接服务器确保插入完成
How to be sure the inserts are complete via linked server
我在 'my' 服务器中有一个 table。我正在连接到链接服务器并通过 openquery 将数据从我的 table 插入到远程 table 中的 table。插入完成后,我想截断我的 table (在我的服务器中)。我在一个程序中这样做。我在插入之前检查链接服务器是否可用sys.sp_testlinkedserver。但是,如果链接服务器在我插入时脱机或不可用,会发生什么情况。假设我的 table 中有 100 行,当第 50 行被插入远程 table 时,远程服务器脱机或出现问题。我如何构造它,以便我知道我的所有记录都已插入远程 table,如果不是所有记录都已传输,我将不会截断我的 'local' table? (两者都是 SQL 服务器 2008 r2)
基本上,您只需要一个 single insert
语句,它将数据从一台服务器传输到另一台服务器。
你不需要“openquery
”(你在做什么?你是在循环写记录吗?那根本没有必要,甚至会非常非常慢)。
嗯,你的单insert
语句就是一个交易。此事务要么作为一个整体完成,要么失败。如果失败,您可以捕获错误,并仅在插入完成时执行截断。
我在 'my' 服务器中有一个 table。我正在连接到链接服务器并通过 openquery 将数据从我的 table 插入到远程 table 中的 table。插入完成后,我想截断我的 table (在我的服务器中)。我在一个程序中这样做。我在插入之前检查链接服务器是否可用sys.sp_testlinkedserver。但是,如果链接服务器在我插入时脱机或不可用,会发生什么情况。假设我的 table 中有 100 行,当第 50 行被插入远程 table 时,远程服务器脱机或出现问题。我如何构造它,以便我知道我的所有记录都已插入远程 table,如果不是所有记录都已传输,我将不会截断我的 'local' table? (两者都是 SQL 服务器 2008 r2)
基本上,您只需要一个 single insert
语句,它将数据从一台服务器传输到另一台服务器。
你不需要“openquery
”(你在做什么?你是在循环写记录吗?那根本没有必要,甚至会非常非常慢)。
嗯,你的单insert
语句就是一个交易。此事务要么作为一个整体完成,要么失败。如果失败,您可以捕获错误,并仅在插入完成时执行截断。