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

时间:2011-08-17 18:54:47

标签: sql-server sql-server-express sql-server-ce

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

有转换它的工具吗?

2 个答案:

答案 0 :(得分:5)

对于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)格式,我会感兴趣吗...

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

答案 1 :(得分:3)

除非您使用在Express Edition中不起作用的功能(例如分区),否则您的2008数据库也符合SQL Server 2008 Express的条件。如果数据库当前已附加到某处,您可以使用以下方法检查这些功能:

SELECT feature_name, feature_id
  FROM sys.dm_db_persisted_sku_features;

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

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

<强> BACKUP:

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

<强> RESTORE:

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

如果您遇到任何这些命令的问题,请发布您尝试过的内容以及收到的错误消息。

对于Compact Edition,不,我不知道任何可以为您转换数据库的工具。功能集甚至一些语言结构在两者之间是不兼容的。