SQL Server Management Studio:静默导入,忽略99.9%的数据

Ian*_*oyd 15 sql-server etl ssms sql-server-2000 enterprise-manager

问题

我正在尝试使用SQL Server Management Studio的Import Data任务将数据导入表中.它只带来了26行,原来的49,325行.(编辑:这是99.9%来自的地方:(1-26/49325)*100 = 99.9%

在企业管理器中正确使用DTS会带来所有49,325行.

为什么SSMS没有导入所有行,报告它成功传输了49,325,并且没有遇到任何错误?为什么企业管理器能够正确导入所有49,325行?

Microsoft SQL Server Management Studio版本:10.0.1600.22(从SQL Server 2008开始,今天安装在全新的Windows 7计算机上,应用了SP1)

证明 - 使用SSMS导入

STRTransactions表最初是空的:

在此输入图像描述

Source是以下ContosoFrobManager数据库lithium:

在此输入图像描述

目的地是Grob数据库lithium;

在此输入图像描述

我想从一个(或多个)表复制数据:

替代文字

我想复制STRTransactions表格: 替代文字

您可以附加到现有表,这很好(它是空的).我想启用身份插入.并且不要尝试导入时间戳(因为你无论如何都会抱怨): 替代文字

马上跑,没关系: 替代文字

是的,你要做的事情: 替代文字

我设法在传输49,325行时捕获它,大约在1k标记处: 替代文字

全部完成.成功复制了所有49,325行: 替代文字

这是报告:

执行成功

  • 初始化数据流任务(成功)

  • 初始化连接(成功)

  • 设置SQL命令(成功)

  • 设置源连接(成功)

  • 设置目标连接(成功)

  • 验证(成功)消息警告0x80049304:数据流任务1:警告:无法打开全局共享内存以与性能DLL通信; 数据流性能计数器不可用.要解决此问题,请以管理员身份运行此程序包,或在系统控制台上运行.(SQL Server导入和导出向导)警告0x80047076:数据流任务1:输出"OLE DB源输出"(11)上的输出列"timestamp"(158)和组件"Source - STRTransactions"(1)随后未使用在数据流任务中.删除此未使用的输出列可以提高数据流任务性能.(SQL Server导入和导出向导)

  • 准备执行(成功)

  • 预执行(成功)

  • 执行(成功)

  • 复制到[dbo].[STRTransactions](成功)传输49325行

消息信息0x402090df:数据流任务1:"组件"目标中的数据插入的最终提交 - STRTransactions"(163)"已启动.(SQL Server导入和导出向导)信息0x402090e0:数据流任务1:"组件"目标中的数据插入的最终提交 - STRTransactions"(163)"已结束.(SQL Server导入和导出向导)

  • 后执行(成功)消息信息0x4004300b:数据流任务1:"组件"目标 - STRTransactions"(163)"写入49325行.(SQL Server导入和导出向导)

优秀.全部完成." 写了49325行 ".

除了它只写了26行:

在此输入图像描述

显然我并不疯狂.我做的一切都很正确.即使我没有,SSMS也没有任何问题的迹象.我重复了8次这样的步骤:

  • 我自己5次
  • 两次向两位不同的同事示范
  • 一次截图这个SO问题的过程

每次它恰好是26行,不多也不少.但是哪个被摧毁了,主人还是aprentice?

但为了证明我没有做错任何事,我们将再次尝试使用Enterprise Manager.十年前编写的优秀工具:

证明 - 使用Enterprise Manager导入

我已从STRTransactions表中删除了26行.我可以提供一个截图,我从一个空表开始; 或者你可以相信我.由于向导几乎完全相同,因此您将看到几乎相同的屏幕截图.对于那个很抱歉; 但没有证据,没有人会相信我.

我想从ContosoFrobManager数据库导出lithium:

在此输入图像描述

我想导入到Grob数据库lithium:

在此输入图像描述

我想复制表格:

替代文字

我想复制STR Transactions表:

在此输入图像描述

您可以继续将行追加到现有表中(无论如何它都是空的).我希望您插入标识值.并且不要尝试插入timestamp值,你只需抛出一个错误:

在此输入图像描述

现在运行,确定:

替代文字

是的,你要做的事情:

在此输入图像描述

我设法在导入中间捕获它,大约12k行:

在此输入图像描述

全部完成,49,325行已成功复制:

在此输入图像描述

我们从表中选择以查看行:

在此输入图像描述


为什么SSMS,一个已经积极开发了6年的工具现在仍然没有得到正确的解决方案?虽然最初的开发团队的企业管理器几乎没有错误?这是SSMS中的关键错误的另一个例子.我发现的最后一个关键错误是它没有编写所有对象的脚本.

我们可以让企业管理器开发团队重新编写SSMS吗?


可以肯定地说,我将看到的唯一答案是

  • 使用不同的工具
  • 你有没有在Microsoft Connect上报告它?
  • 打电话给PSS

当然,我有一个解决方法,停止使用SQL Server Management Studio.但我已经不得不在XP模式32位兼容性事物中运行企业管理器(正如您在我的Aero主题桌面上的Luna主题窗口所看到的那样)

Me:我得到它工作 Colleague:怎么样? Me:我使用企业管理器 Colleague: scoff嘛. Colleague:那么我可能必须安装它.

编辑:在ServerFault上阅读我的旧问题,关于SSMS默默地没有编写数据库中某些表的脚本,我最后说," 如果你讨厌SSMS,那就开心吧 ".所以:

如果你讨厌SSMS,请致词.

游戏

在Microsoft Connect上创建了一张票.如果出现此问题,请下注Closed as not reproducible.编辑此问题,添加您的姓名和日期.距离最近的人不会超过100人!(我将捐赠我的代表)如果你没有足够的代表编辑问题,请将你的猜测放在评论中,我会添加它.

猜测

  • Ian Boyd:2011年5月1日

更新:它于2011年3月18日关闭.休息43天.

Eri*_*ikE 6

答案:

  1. 拿枪
  2. 追查那些负责任的人......
  3. 开玩笑.但有人需要站起来为自己的垃圾负责,你不觉得吗?我们不会真的拍它们,但我们不希望有时候我们可以与这个人或团队面对面,并要求他们回答为什么他们做了这么糟糕的工作?!?!

我同意最新的微软产品中有一些真正的垃圾.在SSRS中,当您单击现有文本中间的文本框并按下粘贴时,粘贴操作后,光标位于所有文本的末尾,而不是粘贴文本的末尾(中间).SSRS和SSIS就像这样充斥着各种各样的废话.

  • +1这个答案很有用.特别是第1步和第2步. (4认同)