Ric*_*ich 29 sql-server sql-server-2008 sql-server-2012
我在 SQL Sever 2012 实例上有一个数据库,我想将其复制到 2008 服务器。2008 服务器无法恢复 2012 服务器创建的备份(我试过)。
我在 2012 年找不到任何选项来创建 2008 兼容的备份。我错过了什么吗?
有没有一种简单的方法可以将架构和数据导出为与版本无关的格式,然后我可以将其导入到 2008 中?
该数据库不使用任何 2012 特定功能。它包含表、数据和存储过程。
我在 2012 服务器上尝试了Tasks → Generate Scripts,并且能够将架构(包括存储过程)生成为 SQL 脚本。不过,这不包括任何数据。
在我的 2008 机器上创建该架构后,我能够在 2012 机器上打开“导出数据”向导,在将 2012 配置为源机器并将 2008 配置为目标机器后,我看到了一个表列表,我可以复制。我选择了我所有的表(300+),然后点击向导。不幸的是,它花费了很长时间来生成脚本,然后失败并出现诸如“插入只读列‘FOO_ID’失败”之类的错误。
我还尝试了“复制数据库向导”,它声称可以“从 2000 或更高版本复制到 2005 或更高版本”。它有两种模式:
“分离并附加”,失败并出现错误:
Message: Index was outside the bounds of the array.
StackTrace: at Microsoft.SqlServer.Management.Smo.PropertyBag.SetValue(Int32 index, Object value)
...
at Microsoft.SqlServer.Management.Smo.DataFile.get_FileName()
Run Code Online (Sandbox Code Playgroud)因错误而失败的 SQL 管理对象方法
无法读取属性 IsFileStream。此属性在 SQL Server 7.0 上不可用。”
Ric*_*ich 40
在 2012 SQL Management Studio 中右键单击数据库,然后选择“任务 -> 生成脚本”。点击欢迎屏幕,选择“脚本整个数据库和所有数据库对象”。在“指定应如何保存脚本”页面上,单击“高级”。在弹出的属性页面的“General”下,将“Types of data to script”从“Schema only”改为“Schema and data”,将“Script for Server Version”从“2012”改为“2008”。
然后,我必须找到某种方法来编辑这个庞大的 SQL 文件的开头,以调整数据库的创建方式——请参阅此 q:https : //stackoverflow.com/questions/102829/best-free-text-editor -支持超过 4GB 的文件
最后,我必须找到某种方法来运行 SQL 脚本,该脚本太大而无法在 SQL Management Studio 中打开 - 请参阅此问题:https : //stackoverflow.com/questions/431913/how-do-you-run- a-300mb-ms-sql-sql-file
小智 12
对于 SQL 迁移,请使用免费的开源 SQL 数据库迁移向导。
我有一个 5GB 的数据库,其中包含大约 1000 万条记录,并通过生成脚本尝试了该路由,然后使用 sqlcmd.exe 运行它。首先,生成的脚本并不总是正常工作。其次,sqlcmd.exe 也可能在处理大文件时失败,抱怨可用内存。osql.exe 可以工作,但需要很长时间(并且具有相同的命令行参数)。
然后我遇到了一个很棒的工具,可以将 SQL Server 迁移到 SQL Azure 数据库。这也适用于 SQL Server 到 SQL Server,例如,如果您想将 SQL 2012 数据库迁移到 2008 R2。它使用 bcp.exe,它使用大容量复制。有可用的 GUI 和命令行(批处理)版本,并且它是开源的。请参阅http://sqlazuremw.codeplex.com/。就我而言,手术耗时 16 分钟。
在高级屏幕中,您可以选择目标是 SQL Server,而不是 SQL Azure。
| 归档时间: |
|
| 查看次数: |
109527 次 |
| 最近记录: |