AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 47
Accepted
Sevki
Sevki
Asked: 2011-01-04 14:32:12 +0800 CST2011-01-04 14:32:12 +0800 CST 2011-01-04 14:32:12 +0800 CST

从 SQL Server 2008 降级到 2005

  • 772

使用 SQL 2008 构建的数据库文件与 2005 不兼容。有解决方法吗?

sql-server-2008 sql-server-2005
  • 5 5 个回答
  • 12196 Views

5 个回答

  • Voted
  1. Jeremiah Peschka
    2011-01-04T14:55:34+08:002011-01-04T14:55:34+08:00

    您可以将数据从一个 SQL Server 实例 BCP 到另一个实例。这将是将数据从一个版本复制到另一个版本的最快方法。根据数据量,可能需要很长时间。

    • 16
  2. Best Answer
    BradC
    2011-01-05T08:09:20+08:002011-01-05T08:09:20+08:00

    无需第三方工具。SQL Server 2008 Management Studio 为我们提供了一个非常强大的工具来向下转换数据库,因为他们在“脚本数据库”向导中添加了“脚本数据”选项。

    只需右键单击 SQL2008 SSMS 中的数据库,然后转到任务,然后“生成脚本”

    浏览向导,确保在表格/视图选项下为“脚本数据”选择“真”。选择所有对象,然后运行它在 2005 服务器上创建的脚本。(请记住,如果原始数据库非常大,创建的脚本可能会很大!)

    请注意,您甚至可以针对 SQL2005 服务器运行该向导,以将 SQL2005 数据库下转换为 SQL2000(当然,您需要在工作站上安装 2008 工具)。

    • 16
  3. David Spillett
    2011-01-04T15:14:04+08:002011-01-04T15:14:04+08:00

    不幸的是,据我所知,没有直接的方法可以将数据库从 2008 年的格式降级到 2005 年的格式。

    我过去这样做的方式(实际上是使用旧版本的 SQL Server,但过程是相同的)是:

    1. 在 SQL2008 实例上恢复数据库(如果尚未完成)
    2. 在 SQL2005 实例上构建具有正确结构(表、索引、约束、视图、过程、触发器等)的空数据库。希望您可以从现有的构建过程和/或源代码中执行此操作,但如果没有,您可以使用 SQL Server 管理器为 2005 数据库中的所有内容创建脚本,并在 2008 实例中的空白处运行结果。
    3. 确保两个实例可以互相看到(即,如果实例位于不同的机器上,则没有防火墙阻止连接)并使用sp_addlinkedserver链接它们。
    4. 将所有数据从一个数据库复制到另一个数据库。如果触发器中没有外键约束和类似问题需要担心,您可以将 DB 链接在一起并在表列表中游标(从 sys.objects 中选择它们)并运行
      INSERT destinationserver.destinationdb.schema.table SELECT * FROM sourcedb.schema.table
      (或者INSERT schema.table SELECT * FROM sourceserver.sourcedb.schema.table如果您已经以这种方式链接了实例)
      对于每个表。如果您确实有表间一致性强制约束和触发器,那么您当然需要对这些操作的顺序更加聪明,特别是如果您有循环约束,例如具有基于自身的约束的表(一个持有层次结构数据,作为一个可能的例子)。

    首先复制数据并在第 3 步之后添加所有其他结构(索引、过程、触发器等)可能更有效。这避免了由约束和触发器引起的行插入排序问题,并在end 理论上应该比在添加所有数据时构建它们更快 - 尽管如果您的表上有任何聚集索引,请在添加数据之前创建这些索引,因为事后创建它们不会更快。

    当然,这一切都假设您的任何对象都没有使用 SQL 2008 特定功能 - 如果他们这样做,您将希望在重建模式时出现错误时发现并修复此类问题。如果您的任何代码依赖于官方未定义的行为,而这些行为恰好在 SQL Server 版本之间有所不同,那么您可能会有一些更微妙和难以捉摸的错误需要在以后寻找和解决。

    • 15
  4. CoderHawk
    2011-01-04T21:30:01+08:002011-01-04T21:30:01+08:00

    我遇到了类似的情况,并使用数据库发布向导从 SQL Server 2008 数据库为 SQL Server 2005 编写模式和数据脚本。

    SQL Server 托管 Web 服务(和工具包)

    数据库发布向导

    • 7
  5. Mbongeni
    2013-02-01T06:21:39+08:002013-02-01T06:21:39+08:00

    您首先必须编写数据库脚本并确保在版本上您指定了要降级到的类型。并将数据从较高版本复制到较低版本 SQL 数据比较将为您解决问题。

    祝你好运!

    • 1

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve