【问题标题】:SQL Server Management Studio: Import quietly ignoring 99.9% of dataSQL Server Management Studio:导入忽略 99.9% 的数据
【发布时间】:2011-04-10 21:58:33
【问题描述】:

问题

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

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

为什么 SSMS 没有导入所有行,报告它传输 49,325 成功,并且没有遇到错误?为什么 Enterprise Manager 能够正确导入所有 49,325 行?

Microsoft SQL Server Management Studio 版本:10.0.1600.22(来自 SQL Server 2008,今天安装在新的 Windows 7 机器上,应用了 SP1)

证明 - 使用 SSMS 导入

STRTransactions 表最初是空的:

来源是lithium上的ContosoFrobManager数据库:

目标是lithium 上的Grob 数据库;

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

我想复制STRTransactions 表:

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

立即运行,没关系:

是的,你要做的事情:

当它传输 49,325 行时,我设法抓住了它,大约 1k 标记:

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

报告如下:

执行成功

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

  • 初始化连接(成功)

  • 设置 SQL 命令(成功)

  • 设置源连接(成功)

  • 设置目标连接(成功)

  • 验证(成功)消息警告 0x80049304:数据流任务 1: 警告:无法打开全局共享 内存与性能沟通 动态链接库;数据流性能计数器 不可用。要解决,请运行 此软件包以管理员身份,或 在系统的控制台上。 (SQL 服务器 导入和导出向导)警告 0x80047076:数据流任务 1: 输出列“时间戳”(158) 输出“OLE DB 源输出”(11) 和 组件“源 - 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 行,不多也不少。但是哪个被毁了,师父还是徒弟?

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

证明 - 使用 Enterprise Manager 导入

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

我想从lithium 上的ContosoFrobManager 数据库导出:

我想导入到lithium 上的Grob 数据库:

我想复制表格:

我想复制 STR Transactions 表:

您可以继续将行追加到现有表(无论如何它都是空的)。我希望你插入身份值。并且不要尝试插入 timestamp 值,否则你只会抛出错误:

现在运行,当然:

是的,你将要做一些事情:

我设法在导入过程中捕捉到它,大约 12k 行:

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

我们从表格中选择来查看行:


为什么SSMS这个积极开发了6年的工具到现在还没有落地呢?虽然 Enterprise Manager 在最初的开发团队中几乎没有错误?这是 SSMS 中严重错误的另一个示例。我发现的最后一个严重错误was that it does not script all objects


我怀疑我能看到的唯一答案是

  • 使用其他工具
  • 您在 Microsoft Connect 上报告过吗?
  • 呼叫 PSS

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

Me: 我让它工作了 Colleague: 怎么样? Me:我用的是企业管理器 Colleague: 嘲笑好吧。 Colleague: 那我可能需要安装它。

我创建了一个ticket on Microsoft Connect,但几周后它就关闭了。

【问题讨论】:

  • 您可能拥有撰写问题所花费时间最多的记录。也可能是有史以来最长的问题,也是单个问题的大多数屏幕截图。
  • @Mark Byers。不,我还有另一个问题,详细说明了 DwmGetColorizationColor 函数的错误,我花了 很多 更多时间。问题是我必须实际编写代码,然后手动编写截图。在这里,我可以简单地使用 Window 的 Snipping Tool
  • 只是吹毛求疵:您在这里使用的是 SQL Server Integration Services (SSIS) - 它刚刚从 Mgmt Studio 启动,但它不是 Mgmt Studio 本身。甚至不要让我开始讨论旧的 EM/QA 组合的所有缺点和 UI 可用性噩梦............
  • @marc_s 我很想知道你不喜欢 EM 的什么地方。我仍然希望有一个单独的 QA 工具。因为现在我必须启动完整的类似 Visual Studio 的膨胀。我真的希望他们把东西放回模态窗口,而不是标签。如果我们必须有标签,至少按时间顺序排列它们,如 IE、FF、Chrome;而不是伪随机顺序。
  • @Mark Byers:我猜你对最长的问题是正确的。我的 DWM 问题 (stackoverflow.com/questions/3560890/…) 可能需要更长的时间来撰写,但最终会更短(这就是她所说的

标签: sql-server ssms etl sql-server-2000


【解决方案1】:

答案:

  1. 拿枪。
  2. 追查肇事者并...
  3. 开个玩笑。但是有人需要站出来为他们的垃圾负责,你不觉得吗?我们不会真的向他们开枪,但有时我们不希望我们能与个人或团队面对面并要求他们回答为什么他们做得这么糟糕吗?!?!

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

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,仅从 540K 行传输了 291 行,但导入向导显示成功(我从 SQL Server 2008 转到 2005)。

    解决办法:我换了数据源:

    • 来自:SQL Server Native Client 10.0
    • 致:Microsoft OLE DB Provider for SQL Server

    在源和目标上(在导入向导中),然后 成功了。

    顺便说一句: 如果我正确理解您的屏幕截图,那么当它失败时,您还在 SSIS 导入向导中使用 SQL Server Native Client 10.0,但您使用的是 Microsoft OLE DB Provider for SQL Server 当它工作时使用企业管理器。

    我过去在使用 SQL Server Native Client 时没有遇到任何问题,因此我怀疑由于将数据从 SQL Server 2008 复制到 2005,因此需要更改为 Microsoft OLE DB Provider for SQL Server。

    你在屏幕截图上做得很好,你的问题真的帮助了我 - 所以谢谢:)

    【讨论】:

    • 这可能是个好消息;下次我有足够的耐心来处理它时,我会尝试一下。
    【解决方案3】:

    我似乎也遇到了同样的问题。无法追查真正的问题。 我不知道这是否对您有帮助,PK 和身份插入可能存在问题。

    引用自链接: ""启用身份插入"在某些情况下也会被忽略"

    “导出向导“跳过”应导出的记录”

    “启用“针对多个表进行优化”时,将忽略启用标识插入。不幸的是,该选项确保导入操作遵守外键连接表之间的引用完整性”

    http://connect.microsoft.com/SQLServer/feedback/details/135905/mappings-settings-not-working-in-export-data-wizard

    非常奇怪和烦人。 这些是边缘情况吗?只是因为 SSIS 本身用于安静的大型项目/数据库,而我以前从未遇到过这种情况。

    【讨论】:

      【解决方案4】:

      只有两种方法可以让 SSIS 正确执行任何操作。
      首先是将数据放入一个全新的表中。
      第二种是先将其导入MS Access,然后再将其从那里导入sql server。

      坦率地说,自从他们摆脱 DTS 以来,我一直很不高兴。至少 DTS 始终如一地工作。

      my Microsoft Connect bug on this

      https://connect.microsoft.com/SQLServer/feedback/details/386948/simple-ssis-import-from-excel-2007-consistently-fails-with-useless-error-messages

      他们声称这些问题将在下一个 Sql Server 版本中得到解决。坦率地说,除非他们解雇了负责此功能的整个团队,否则我不相信他们。

      【讨论】:

      • 你很幸运——至少你收到了错误消息。有时它会默默地失败而不会抛出异常。
      【解决方案5】:

      我有几个这样的问题。那个巫师绝对不靠谱。如果这是一次性任务,我会导出到 csv,然后从 csv 导入。如果需要定期运行,请自己编写代码。We recently had a similar discussion: Should programmers use SSIS, and if so, why?

      【讨论】:

      • *哭*天啊。真的吗? CSV? *哭*
      • 我真的我真的真的不想这样做。 :(
      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 2010-11-10
      • 2011-11-18
      • 2010-12-12
      • 1970-01-01
      • 2014-04-24
      • 2012-07-06
      • 1970-01-01
      相关资源
      最近更新 更多