最近遇到一个特别的情形:用户应用系统在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 数据库中通过执行脚本的方式,恢复数据库

具体可见下面的屏幕截图:

clip_image002