最近遇到一个特别的情形:用户应用系统在SQL Server 2012 sp1数据库中的数据,因为某种原因,要恢复到低版本数据库(例如SQL Server 2008 R2)中。
当采用常规的备份-恢复等操作的时候,发现数据库无法完成恢复操作。
从某种意义上讲,这和由低版本向高版本升级相反,但也都涉及到数据库兼容性级别(Database Compatibility Level)及高版本新增对象等因素。可以参考:http://social.technet.microsoft.com/wiki/contents/articles/7009.sql-server-2012-upgrade-and-application-compatibility.aspx
SQL Server 版本
Database Compatibility Level
SQL Server 7
70
SQL Server 2000
80
SQL Server 2005
90
SQL Server 2008
100
SQL Server 2008 R2
105
SQL Server 2012
110
但逆向操作,在某些场景确是不支持的。可以参考:http://www.mytechmantra.com/LearnSQLServer/Unable_to_Restore_Database_From_Backup.html
一个变通的做法是:
· 在SQL Server 2012种打开SQL Server Management Studio · 选择要备份的数据库,然后点击鼠标右键,在弹出菜单中选择“任务” · 选择“产生脚本”,在对话框中,注意请选择“高级选项”,在对话框中选择将生成脚本的服务器版本,这个时候可以选择相关低版本SQL Server 数据库 · 在低版本SQL Server 数据库中通过执行脚本的方式,恢复数据库
· 在SQL Server 2012种打开SQL Server Management Studio
· 选择要备份的数据库,然后点击鼠标右键,在弹出菜单中选择“任务”
· 选择“产生脚本”,在对话框中,注意请选择“高级选项”,在对话框中选择将生成脚本的服务器版本,这个时候可以选择相关低版本SQL Server 数据库
· 在低版本SQL Server 数据库中通过执行脚本的方式,恢复数据库
具体可见下面的屏幕截图: