已备份数据库的磁盘结构版本为611,服务器支持版本为539,无法还原或升级数据库。REST+ORE FILELIST+ 操作异常结束。(MicrosoftSQL Server,错误:3169)
可以看到这里有两个版本号,不是我们平时看到的服务器版本号(select @@version),而是SQLServer内部数据库版本号。这些版本号是没有官方文档的。不过我们可以使用DAT+ABASEPROPERT+YEX ‘Version’选项获得这个版本号。
select DAT+ABASEPROPERTYEX('master','version')
这里我从网上找到了所有SQLServer版本对应的内部数据库版本号的配置表(ternal SQL Server Database Version Numbers):
Target SQL Server Version |
Source SQL Server Version |
Internal Database Version |
SQL Server 2008 R2 |
SQL Server 2008 R2 |
665 |
SQL Server 2008 |
661 |
|
SQL Server 2005 with vardecimal enabled |
612 |
|
SQL Server 2005 |
611 |
|
SQL Server 2000 |
539 |
|
SQL Server 2008 |
SQL Server 2008 |
661 |
SQL Server 2005 with vardecimal enabled |
612 |
|
SQL Server 2005 |
611 |
|
SQL Server 2000 |
539 |
|
SQL Server 2005 SP2+ |
SQL Server 2005 with vardecimal enabled |
612 |
SQL Server 2005 |
611 |
|
SQL Server 2000 |
539 |
|
SQL Server 7 |
515 |
|
SQL Server 2005 |
SQL Server 2005 |
611 |
SQL Server 2000 |
539 |
|
SQL Server 7 |
515 |
|
SQL Server 2000 |
SQL Server 2000 |
539 |
SQL Server 7 |
515 |
|
SQL Server 7 |
SQL Server 7 |
515 |
通过这张配置表可以看到出错原因是尝试将2005的备份文件还原到2000。如果没有2005版本的话,只能将2005的数据库脚本导出在2000上重建然后将数据导入。
MSDN上DATABASEPROPERTYEX‘Version’选项的解释:用于创建数据库的SQL Server 代码的内部版本号。仅供 SQLServer工具在内部用于升级处理。