简单的答案是否定的,您无法将 SQL Server 2008 备份还原到 SQL Server 2005 或更早版本。
这是详细的答案。
SQL Server 在主数据库的引导文件中维护大量有关数据库的元数据(包括创建它的版本),当您将数据库附加到服务器并检查服务器的版本时,会读取此信息。请注意,此内部版本与 2000、2005 和 2008 等软件的版本不同。当将较低版本的数据库附加到较高版本(服务器)时,数据库的内部版本会立即发生碰撞,恢复/附加会继续很好,但是当您将较高版本的数据库附加到较低版本的数据库时,SQL Server 无法通过所需的验证。原因之一是元数据和系统内部表和结构从一个 SQL Server 版本更改为另一个版本,并且较低版本无法处理较高版本的结构。
不,你不能。数据库格式不兼容。您能做的最好的事情就是编写数据库脚本并导出数据。但请注意,SQL 2008 中的一些新事物(如某些数据类型)会使您的 2005 实例陷入困境。
简单的答案是否定的,您无法将 SQL Server 2008 备份还原到 SQL Server 2005 或更早版本。
这是详细的答案。
SQL Server 在主数据库的引导文件中维护大量有关数据库的元数据(包括创建它的版本),当您将数据库附加到服务器并检查服务器的版本时,会读取此信息。请注意,此内部版本与 2000、2005 和 2008 等软件的版本不同。当将较低版本的数据库附加到较高版本(服务器)时,数据库的内部版本会立即发生碰撞,恢复/附加会继续很好,但是当您将较高版本的数据库附加到较低版本的数据库时,SQL Server 无法通过所需的验证。原因之一是元数据和系统内部表和结构从一个 SQL Server 版本更改为另一个版本,并且较低版本无法处理较高版本的结构。
您可以使用以下命令非常轻松地检查此信息。
带有 TABLERESULTS 的 DBCC DINFO
你需要寻找 dbi_createVersion DBINFO STRUCTURE: DBINFO @0x467BEEE8 dbi_createVersion 655
SQL Server 7.0:515 SQL Server 2000:539 SQL Server 2005:611/612 SQL Server 2008:655
http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/07/28/database-version-vs-database-compatibility-level.aspx
现在谈到解决方案,我必须同意 gbn 的观点,即您可以在开发盒上并排安装 SQL Server 2008,尽管通过 SSIS 将架构/数据写入 SQL Server 2005 实例并没有太多麻烦,但这不是必需的回到以前的版本,重要的是,您始终希望使用 servcie 包将生产和开发保持在相同的版本上,否则您可能会在开发和生产之间看到令人惊讶的结果。
如前所述,没有。
为什么不将 SQL 2008 也安装到开发盒上,这样您就有了 SQL 2005 和 2008 实例。否则,如果您想定期将 prod 复制到 dev 或使用 SQL 2008 功能,那将是一件非常痛苦的事情。