我在'my'服务器上有一张桌子。我正在连接到链接服务器并通过openquery将数据从我的表插入到远程表中的表中。插入完成后,我想截断我的表(在我的服务器中)。我在一个程序中这样做。我在插入之前检查链接服务器是否可用于sys.sp_testlinkedserver。但是如果链接服务器在我插入时脱机或变得不可用会发生什么。假设我的表中有100行,而第50行正在插入远程表,远程服务器会脱机或出现问题。我如何构造这个以便我知道我的所有记录都插入到远程表中,如果不是所有记录都被传输,我不会截断我的“本地”表? (两者都是SQL server 2008 r2)
答案 0 :(得分:2)
基本上,您只需要一个单个 insert
语句,该语句将数据从一个服务器传输到另一个服务器。
你不需要“openquery
”(你在做什么?你是在一个循环中逐个记录吗?这根本不是必需的,它甚至会非常慢)。
那么,您的单个 insert
语句就是一个事务。此事务作为一个整体完成,或者失败。如果失败,您可以捕获错误,并仅在插入完成时执行截断。