代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

SQL Server Management Studio:导入99.9%的数据

  •  15
  • Ian Boyd  · 技术社区  · 14 年前

    问题

    Import Data 编辑 (1-26/49325)*100 = 99.9%

    在enterprisemanager中正确使用DTS将带来所有49325行。

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

    这个 STRTransactions

    enter image description here

    ContosoFrobManager 上的数据库 lithium :

    enter image description here

    目的地是 Grob 上的数据库 ;

    enter image description here

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

    alt text

    我想复制 表格: alt text

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

    alt text

    alt text

    我设法在它转移49325行时抓住了它,大约在1公里处: alt text

    alt text

    报告如下:

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

    • 设置SQL命令(成功)

    • 设置目标连接(成功)

    • 验证(成功)消息警告0x80049304:数据流任务1: 不可用。要解决此问题,请运行 以管理员身份访问此包,或 在系统控制台上。(SQL Server) 导入和导出向导)警告 打开输出列“timestamp”(158) 组件“源-STRTransactions” (1) 以后不用于 数据流任务。删除此未使用的 输出列可以增加数据流 和导出向导)

    • 准备执行(成功)

    • 预执行(成功)

    • 执行(成功)

    • 正在复制到[dbo]。[STRTransactions](成功)已传输49325行

    消息信息0x402090df:数据 “组件”中的数据插入 已经开始了。(SQL Server导入和 导出向导)信息 0x402090e0:数据流任务1: 在“组件”目的地- STRTransactions“(163)”已经结束。 (SQL Server导入和导出向导)

    • STRTransactions“(163)”写道49325 排。(SQL Server导入和导出) 向导)

    写了49325行

    只写了26行:

    enter image description here

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

    每次正好是26排,不多不少。但是哪一个被摧毁了,主人,还是圣母?

    但为了证明我没有做错什么,我们会用 企业经理

    使用enterprisemanager导入

    我已经从列表中删除了26行 桌子。我可以提供一个屏幕截图,说明我是从一张空桌子开始的;或者你可以相信我。由于向导几乎完全相同,您将看到几乎相同的屏幕截图。对不起,没有证据没人会相信我的。

    我想从中国出口 上的数据库

    enter image description here

    我想导入到 上的数据库

    enter image description here

    我要复制表:

    alt text

    我要复制STR Transactions表:

    enter image description here

    您可以继续并将行附加到现有的表中(反正它是空的)。我要你插入标识值。不要试图插入 timestamp 值时,仍将抛出一个错误:

    enter image description here

    现在就跑,当然:

    alt text

    是的,你要做的是:

    enter image description here

    我设法在导入过程中捕获了它,大约有12k行:

    enter image description here

    全部完成,成功复制49325行:

    enter image description here

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

    enter image description here


    为什么SSMS这个已经积极开发了6年的工具现在还没有得到正确的应用?而EnterpriseManager在最初的开发团队中几乎没有bug?这是SSMS中的另一个严重错误示例。我发现的最后一个关键错误 was that it does not script all objects .

    我们能让Enterprise Manager开发团队重新编写SSMS吗?


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

    • 您在Microsoft Connect上报告过吗?
    • 呼叫PSS

    当然,我有一个解决方法,停止使用SQLServerManagementStudio。但是我已经不得不在XP模式下运行32位兼容的enterprisemanager了(你可以从我的Aero主题桌面上的Luna主题窗口看到)

    Me: 我让它工作了 Colleague: 我: 我用过企业经理 同事: 嘲笑 好。 那我可能得安装了。

    编辑: 如果你讨厌SSMS就按喇叭

    如果你讨厌SSMS就按喇叭。

    游戏

    我创造了一个 ticket on Microsoft Connect . 把赌注押在这个问题何时解决上 Closed as not reproducible . 编辑此问题,添加您的姓名和日期。最接近的一个不经过将赢得100代表!(我将捐赠我的代表)如果你没有足够的代表编辑问题,把你的猜测放在评论中,我会添加它。

    猜测

    • 伊恩·博伊德:2011年5月1日

    更新:

    5 回复  |  直到 7 年前
        1
  •  6
  •   momo    10 年前

    答案是:

    1. 拿把枪。
    2. 追查责任人。。。
    3. 开玩笑而已。但是 需要站起来为他们的垃圾负责,你不觉得吗?我们不会真的射杀他们,但我们不希望有时我们可以面对面地与人或团队,并要求他们回答为什么他们做了这么糟糕的工作?!?!

        2
  •  2
  •   Community CDub    7 年前

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

        3
  •  2
  •   Ian Boyd    14 年前

    只有两种方法可以让SSIS正确地执行任何操作。

    第二种方法是先将其导入msaccess,然后再将其导入sqlserver。

    看到了吗 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

    他们声称这些问题将在下一个SQLServer版本中得到解决。坦白说,除非他们解雇了负责这个特性的整个团队,否则我不相信他们。

        4
  •  1
  •   gerleim    14 年前

    我不知道这是否有助于你,它可能有问题的PKs和身份插入。

    引自链接: “启用标识插入”在某些情况下也被忽略

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

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

    很奇怪很烦人。

        5
  •  1
  •   ryan Sparce    13 年前

    我遇到了一个类似的问题,从540K行只传输了291行,但是导入向导显示成功(我从SQLServer2008到2005)。

    解决方案:我更改了数据源:

    • 发件人:
    • 收件人: 提供程序

    成功了。

    作为旁白: 如果我正确理解你的屏幕截图,你也在使用 当SSIS导入向导失败时,您正在使用 提供程序 当使用Enterprise Manager时。

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