首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭BCP窗口而没有看到它完成

关闭BCP窗口而没有看到它完成
EN

Database Administration用户
提问于 2017-05-22 10:59:43
回答 1查看 569关注 0票数 -1

用户在本地执行以下bcp命令将数据导入Server数据库。

bcp TEST_DB.dbo.TEST_TABLE IN TEST_TABLE.dat -N -T

通常,命令提示符窗口可以显示输出消息,如下所示。

( Server数据库使用的是简单恢复模型。)

代码语言:javascript
复制
================================================================================

Starting copy...

1000 rows sent to SQL Server. Total sent: 1000
1000 rows sent to SQL Server. Total sent: 2000
1000 rows sent to SQL Server. Total sent: 3000
1000 rows sent to SQL Server. Total sent: 4000
1000 rows sent to SQL Server. Total sent: 5000
1000 rows sent to SQL Server. Total sent: 6000
1000 rows sent to SQL Server. Total sent: 7000
1000 rows sent to SQL Server. Total sent: 8000
1000 rows sent to SQL Server. Total sent: 9000
1000 rows sent to SQL Server. Total sent: 10000
1000 rows sent to SQL Server. Total sent: 11000
1000 rows sent to SQL Server. Total sent: 12000

12406 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 75     Average : (165413.3 rows per sec.)

================================================================================

问题是,当用户执行bcp将数百万行导入到表中时,他发现需要很长时间才能看到消息"XXXXX行“。就会出现。因此,在bcp完成之前,他决定故意关闭命令提示符窗口(单击窗口右上角的"X“按钮)。没有调用Ctrl击键。

这种出乎意料的行为会引发什么问题?

EN

回答 1

Database Administration用户

发布于 2017-05-23 04:39:31

在根据我的同事描述的情况运行了一些实验之后,我认为可以得出这样的结论:通过在完成之前关闭BCP窗口,BCP进程实际上被终止,并回滚bulk insert命令。但可能需要一些时间来解释为什么他能得到他想要的数据。

根据他的描述和对数据库设置的一些评估,以下是昨天发生的情况:

  1. 数据库中有一个临时表,带有PK约束和一些索引。
  2. 他打开一个命令提示符窗口,并执行BCP将包含大约5000万个数据行的本机格式数据文件导入到暂存表(带有命令选项:-N -T)。
  3. BCP顺利执行,直到最后的“发送到Server的1000行”消息出现。消息"XXXXX行复制“。只是没有出现。
  4. 在这漫长而漫长的等待过程中,他决定通过执行筛选的SELECT命令和NOLOCK提示,尝试将一些数据输入另一个表以供进一步处理。
  5. 在读取完他想要的数据行之后,他立即关闭命令提示符窗口,而没有看到它完成。

根据索引的存在,当使用BCP将数据行导入到表中时,它们将在不同的阶段插入到目标表中。可以通过运行以下SQL语句来检查目标表中的表行数以及BCP的执行情况来很容易地确认这一点。

从TEST_TABLE WITH (NOLOCK)中选择COUNT(*)

由于BCP是在一个有索引的表中大量插入5000万行,所以完成它肯定需要很长的时间。根据他发出筛选后的SELECT语句的确切时间点,他有可能检索他希望看到的数据行。但是,当他关闭运行BCP的命令提示符窗口时,回滚就开始了,当回滚完成时,这些数据行就会消失。因为他需要的数据行已经转移到另一个表中,所以他不会知道在幕后发生了什么。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/174201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档