【问题标题】:sqlcmd error Unclosed quotation marksqlcmd错误未闭合的引号
【发布时间】:2013-05-07 14:12:42
【问题描述】:

我想使用 SQLCMD 将 sql server db 从 sql server 2012 恢复到 sql server 2008 R2。

sqlcmd -S localhost -E -I -d abc -i d:\db\abc.sql >> 运行良好,直到 33399 行。 abc.sql 大小为 3.4 GB。

 Msg 105, Level 15, State 1, Server SERVER1, Line 590
    Unclosed quotation mark after the character string '
    <h1 class="calibre18" id="calibre_pb_1"><span class="blah blah....

我不知道如何让它恢复。该文件非常大,由带有选项 script for server 2008 R2 的 sqlserver 2012 management studio 生成,带有数据的架构。

由于版本兼容性问题,我无法直接从 abc.bak 分离/附加或恢复。我什至不能手动编辑文件。

另外,我尝试使用脚本生成数据库关系(仅模式),然后使用 SSMS 导出数据 => 重复身份

【问题讨论】:

  • 为什么不使用Export/Import feature of Management Studio,直接从2012数据库转到2008R2数据库,而不是先转到SQL脚本?
  • 但它会删除所有的主键和关系。不知何故,我从来没有成功使用它来传输数据。
  • 好的,所以您在导出数据之前也重新创建了关系。您可以让 SSMS 为您生成它们。右键单击数据库,转到 Tasks -> Generate Scripts 只需在导出前运行它即可创建表。
  • 在写这个问题之前我也这样做了。如果您在使用 Export/Import 之前创建数据库关系,Export/import 将不会让您传输数据,因为冲突主标识
  • 您必须选中 Identity Insert 的复选框才能复制标识列的值。此外,您可能需要弄清楚自己做表格的顺序。 DTS 向导不会知道 forgen 键约束,因此请确保先复制父表,然后再返回并复制从属表。

标签: c# .net sql-server sqlcmd


【解决方案1】:

简单的回答是,如果您无法修改脚本,则无法修复此问题。

建议使用“导入和导出数据”应用程序将数据从一台服务器传输到另一台服务器,而不是使用 sqlcmd。

试试这个,去运行,输入 DTSWizard.exe 然后回车看看你的机器上是否安装了 Import Export App。

【讨论】:

  • 请注意,您需要右键单击源数据库并使用Tasks -&gt; Generate Scripts 功能获取 sql 脚本以生成所有原始数据库模式,以便可以在目的地创建它。如果您让 DTSWizard 创建表,则不会在目的地重新创建表约束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 2017-12-19
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多