我有一个查询
select * into NewTab from OpenQuery(rmtServer, 'select c1, c2 from rmtTab')
当我查看执行计划时,它告诉我它执行'表假脱机/急切假脱机''将数据存储在临时表中以优化倒带'
现在我预计不会有任何回忆。如果出现某种崩溃,我可以放弃newTab并重新开始。
有什么方法可以阻止它将数据存储在临时表中?
答案 0 :(得分:4)
这可能是导致它的开放式问题。
没有关于行数,没有统计数据的信息,没有任何内容,因此SQL Server将简单地假设结果以允许它评估我怀疑的后续位。这是基本的想法。
我建议分开newtab的创建和填充。
顺便说一下,倒带不会回滚。倒带与交易安全无关。它是SQL Server期望重用行。这是正确的,因为openquery是一个黑盒子。
看看这个Simple Talk article的底部附近是否有回弹。你有一个“远程查询”。
修改强>
基于我上周发现的一件事,请看sp_tableoption。
与OPENROWSET批量一起使用时 rowset提供程序将数据导入到 没有索引的表,TABLOCK启用 多个客户端同时加载 数据进入目标表 优化日志记录和锁定
尝试填充TABLOCK。我们与使用.net SQLBulkCopy的客户端开发人员一起玩得非常有趣。
同样来自Kalen Delaney
这不直观。
答案 1 :(得分:1)
首先创建NewTab,然后从openquery插入到....