将 SQL Server 2008 降级到 SQL Server 2005

Posted

技术标签:

【中文标题】将 SQL Server 2008 降级到 SQL Server 2005【英文标题】:Downgrading SQL server 2008 to SQL Server 2005 【发布时间】:2010-10-25 09:09:26 【问题描述】:

从 SQL Server 2008 备份数据库,然后将其导入 SQL Server 2005 是否有任何问题?我已经升级到 SQL Server 2008,但是 2008 似乎问题太大,所以现在我想降级。这样做有什么问题吗?

【问题讨论】:

SQL Server 2008 有什么特别的问题吗? 【参考方案1】:

好吧,您将无法将 2008 备份恢复到 SQL 2005 服务器。

最简单的方法是使用“生成 SQL Server 脚本”向导创建一个脚本(包括架构和数据),您可以在 SQL 2005 上运行该脚本来创建数据库。见http://www.devx.com/dbzone/Article/40531

但回到最初的问题:SQL 2008 有什么问题?

【讨论】:

Sql 2008 的全文搜索很糟糕。 关于 FTS 问题绝对正确。它仍然有它们(4 个月后)。【参考方案2】:

另一种方法是通过对象浏览器连接到两台服务器,并将数据从一个导入另一个。

但是,执行此操作时,有些内容无法正确传输。例如,我必须手动重置主键和外键设置,以及自动增量设置。不过,要让所有数据发挥作用,这是一个很小的代价。

【讨论】:

【参考方案3】:

我同意这是什么问题?如果它与应用程序有关,你能不能在 SQL 2005 兼容模式下运行数据库。如果你必须移动到 2005,你不能只将数据库从 08 恢复到 05。

如果您的数据库大于 50mb 左右,我会使用脚本生成向导为您的数据库架构编写脚本,为您的所有键、索引、触发器、排序规则和任何没有数据的全文索引编写脚本。只需记住检查 sql 2005 版本选项的脚本即可。运行该脚本以在您的 sql server 2005 上创建一个新数据库。

如果您的表上有触发器,您需要在导入数据之前将它们全部禁用。这些脚本将为您做到这一点。 这些将为您做到这一点

-- Disable Triggers
While @i <= @MaxI
Begin
      Select @dsql =  'DISABLE Trigger ' + TriggerName + ' ON ' + TableName
      From @DisableTriggers
      Where MyRowCount = @i
      Exec sp_executesql @dsql
      Select @i = @i + 1
End

-- Enable Triggers
While @i <= @MaxI
Begin
      Select @dsql =  'Enable Trigger ' + TriggerName + ' ON ' + TableName
      From @DisableTriggers
      Where MyRowCount = @i
      Exec sp_executesql @dsql
      Select @i = @i + 1
End

然后使用导入/导出向导将数据导入您的数据库;根据我的经验,这比编写脚本要快得多。

【讨论】:

【参考方案4】:

您无法恢复从 SQL Server 2008 获取的 SQL Server 数据库备份并在 SQL Server 2005 上恢复它,因为 Microsoft 不支持这样做。要了解更多为什么不能将数据库从较高版本恢复到较低版本,请阅读以下 article。如果要降级数据库,则可以使用 SQL Server Integration Services。以下article中提到了将 SQL Server 2008 数据库降级到 SQL Server 2005 的示例。

【讨论】:

以上是关于将 SQL Server 2008 降级到 SQL Server 2005的主要内容,如果未能解决你的问题,请参考以下文章

将数据库从 SQL Server 2012 转移到 SQL Server 2008 [关闭]

如何转换SQL Server 2008数据库到SQL Server 2005

ms sql2012 能否安装在win2008 server

如何把高版本的sqlserver 还原到低版本的 sqlserver

为啥我的SQL Server 2008把数据库分离出来后就附加不进去了呢?

如何将所有数据库(快速)自 sql server 2008 express 传递到 sql server 2008 R2(无 express)