有没有办法将 SQL Server 2008 mdf 文件转换为 SQL Server Express 版本?

Posted

技术标签:

【中文标题】有没有办法将 SQL Server 2008 mdf 文件转换为 SQL Server Express 版本?【英文标题】:Is there any way to convert SQL Server 2008 mdf file to SQL Server Express version? 【发布时间】:2011-08-17 18:54:46 【问题描述】:

我有一个 mdf 文件,它是 SQL Server 2008 文件。我想将其转换为 SQL Server Express 或 SQL Compact 版本。

有什么工具可以转换吗?

【问题讨论】:

【参考方案1】:

对于 SQL Server - Express 或 Standard/Web/Developer - 文件格式没有区别。来自 SQL Server 2008 的 MDF 无需任何转换或修改即可在 SQL Server 2008(或 2008 R2)Express 上运行。

你可以

从 SQL Server 2008 创建一个备份(到 .bak 文件中)并在 SQL Server 2008 Express 下恢复它

或:

您可以从 SQL Server 2008 中分离 MDF 文件,将文件复制到新位置(或新服务器),然后将它们重新附加到那里安装的 SQL Server 2008 Express。

不过,SQL Server Compact Edition 完全不同 - 它由单个 .SDF 文件组成,无法从现有的 SQL Server 2008 MDF/LDF 文件集轻松创建...。我会如果有任何有用的工具可以将数据从 SQL Server 2008 (MDF/LDF) 迁移到 SQL Server Compact Edition 4.0 (SDF) 格式,我对此感兴趣...

更新:快速搜索发现了一些有趣的候选人:

SQL Server to SQL Server Compact Edition Database Copy Utility (CodeProject) Primeworks Data Port Wizard

【讨论】:

需要注意的是,如果SQL Server版本比那个Express Edition新,很可能无法将db文件附加到后面,需要进行一些下转换。【参考方案2】:

除非您使用 Express Edition 中不支持的功能(例如分区),否则您的 2008 数据库也适用于 SQL Server 2008 Express。如果数据库当前附加在某个地方,您可以使用以下方法检查这些功能:

SELECT feature_name, feature_id
  FROM sys.dm_db_persisted_sku_features;

理想情况下,这将返回 0 行。如果它返回任何行,则很可能您正在使用 Express 中不符合条件的功能。

如果数据库实际上仍附加到 2008 实例,则备份/恢复比分离/附加更安全 - 这样,如果出现问题,您的原始数据库仍然完好无损。因此,如果已附加,您可以在 2008 实例上运行 BACKUP DATABASE 命令,然后在 Express 实例上运行 RESTORE DATABASE(可能使用 WITH MOVE 选项将文件存储在正确的位置)。 (更简单的方法是将数据库设置为离线,复制文件,然后再次将数据库设置为在线 - 但我仍然更喜欢 BACKUP/RESTORE 路线。)

备份:

http://msdn.microsoft.com/en-us/library/ms186865%28SQL.100%29.aspx

恢复:

http://msdn.microsoft.com/en-us/library/ms186858%28SQL.100%29.aspx

如果您只有一个 MDF/LDF 文件,那么在 SQL Server 2008 Express 上您应该能够使用 CREATE DATABASE...FOR ATTACH / FOR ATTACH_REBUILD_LOG。你可以在这里阅读语法:

创建数据库:

http://msdn.microsoft.com/en-us/library/ms176061%28SQL.100%29.aspx

如果您对这些命令中的任何一个有疑问,请发布您尝试过的内容以及收到的错误消息。

至于精简版,不,我不知道任何可以为您转换数据库的工具。两者的功能集甚至某些语言结构都不兼容。

【讨论】:

以上是关于有没有办法将 SQL Server 2008 mdf 文件转换为 SQL Server Express 版本?的主要内容,如果未能解决你的问题,请参考以下文章

windows server 2012 可以安装sql2008 吗

SQL Server 2008 - 从 Float 将列更改为 Varchar 产生科学记数法

使用 SQL Server Report Builder 2008 2.0 重命名 Excel 工作表

在表值函数中使用 SQL Server 2008 中的动态 SQL 语句 [重复]

SQL Server2008 安装失败后的解决办法

sql server 2008 评估期已过期解决办法