【发布时间】: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