![我可以将 SQL 2008 数据库还原到 SQL 2005 服务器吗?](https://linux22.com/image/492882/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%20SQL%202008%20%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%98%E5%8E%9F%E5%88%B0%20SQL%202005%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%97%EF%BC%9F.png)
我有一个装有 SQL Server 2008 的生产机箱,我希望将我的 DEV 服务器与另一个运行 2005 的服务器合并。所以我的问题是,是否有任何选项可以设置,允许我将 2008 年的生产转储恢复到 SQL 2005 上的新开发服务器?
谢谢!
答案1
不可以。数据库格式不兼容。您能做的最好的事情就是编写数据库脚本并导出数据。但请注意,SQL 2008 中的一些新内容(例如某些数据类型)会让您的 2005 实例陷入混乱。
答案2
简单的答案是“不可以”,您无法将 SQL Server 2008 备份恢复到 SQL Server 2005 或更早版本。
以下是详细的答案。
SQL Server 在主数据库的启动文件中维护大量有关数据库的元数据(包括创建数据库的版本),当您将数据库连接到服务器并根据服务器的版本进行检查时,将读取此信息。请注意,此内部版本不同于 2000、2005 和 2008 等软件的版本。当将较低版本的数据库连接到较高版本(服务器)时,数据库的内部版本会立即升级,还原/连接会正常进行,但是当您将较高版本的数据库连接到较低版本的数据库时,SQL Server 会无法通过所需的验证。原因之一是,元数据和系统内部表和结构会从一个 SQL Server 版本更改为另一个版本,而较低版本无法处理较高版本的结构。
您可以使用以下命令非常轻松地检查此信息。
DBCC DBINFO 带有表结果
您需要查找 dbi_createVersion DBINFO STRUCTURE:DBINFO @0x467BEEE8 dbi_createVersion 655
SQL 服务器 7.0 : 515 SQL 服务器 2000 : 539 SQL 服务器 2005 : 611/612 SQL 服务器 2008 : 655
现在谈到解决方案,我不得不同意 gbn 的观点,您可以在开发箱上并排安装 SQL Server 2008,尽管通过 SSIS 将模式/数据编写到 SQL Server 2005 实例并不是太麻烦,但没有必要返回到以前的版本,而且重要的是,您始终希望将生产和开发保持在相同的版本和服务包上,否则您可能会在开发和生产之间看到令人惊讶的结果。
答案3
如上所述,不是。
为什么不将 SQL 2008 也安装到开发机上,这样您就同时拥有 SQL 2005 和 2008 实例。否则,如果您想定期将产品复制到开发机或使用 SQL 2008 功能,那将是一件非常痛苦的事情。