将 SQL Server 2008 数据库还原到 SQL Server 2000

发布于 2024-08-11 19:54:12 字数 337 浏览 4 评论 0原文

我必须将整个数据库从 SQL Server 2008 计算机移动到 SQL Server 2000 计算机。

我使用 Management Studio 2008 创建了一个备份,将其复制到 2000 盒子的硬盘驱动器,然后从 Management Studio 2008 中选择“将数据库还原到 2000 盒子”。

我收到一条错误消息,指出“设备上的媒体系列...格式不正确。SQL Server 无法恢复此媒体系列”。

如果我使用 Enterprise Manager 2000,我会得到同样的错误。

有没有办法将整个数据库从较新的 SQL Server 迁移到较旧的 SQL Server?

I have to move an entire database from a SQL Server 2008 machine to a SQL Server 2000 machine.

I created a backup using Management Studio 2008, copied it to the hard drive of the 2000 box, and from withing Management Studio 2008, I choose Restore Database to the 2000 box.

I get an error message stating, "The media family on device ... is incorrectly formed. SQL Server cannot restore this media family".

If I use Enterprise Manager 2000 I get the same error.

Is there a way to move a whole database from the newer SQL server to the older?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

娇俏 2024-08-18 19:54:12

我唯一能想到的是重新创建整个结构,然后从实时数据库复制数据。因此,创建将创建表、视图和 sp 的脚本,然后创建脚本以从现有数据库复制数据。

The only thing I can think of is to recreate the whole structure and then copy data from a live database. So, create scripts that will create the tables, views, and sp's, and then create scripts to copy the data from the existing database.

℡Ms空城旧梦 2024-08-18 19:54:12

正如其他人已经说过的,没有默认的方法可以做到这一点。只是不支持而已。以下是有关如何正确执行此操作并避免任何迁移问题的更多详细信息。

您需要为结构和数据生成脚本,然后在 SQL 2000 上执行这些脚本(就像其他人已经说过的那样),但有一些事情需要考虑。

在 SSMS 中生成脚本

  • 确保选中 SQL 2000 的脚本数据选项,以避免在尝试在 SQL 2000 上创建地理类型列等内容时出现问题。
  • 确保检查脚本的执行顺序,以避免基于依赖关系

对于中小型数据库来说,这是一个很好的选择,并且需要一些 SQL Server 知识(依赖性、版本之间的差异等)

第三方工具

  • 想法是使用第三方数据库比较工具,例如 ApexSQL 差异数据差异
  • 好的一面是这些将处理脚本执行和版本之间的差异
  • 不太好的事实是您需要在试用结束后付费
  • 我已经使用了这些两种工具都取得了成功,但使用市场上的任何其他工具都不会出错。 此处是此类别中其他工具的列表。

As others already said there is no default way to do this. It’s just not supported. Here are more extensive details on how to do this properly and avoid any migration issues.

You need to generate scripts for structure and data and then execute these on SQL 2000 (like others already said) but there are couple things to take into account.

Generate scripts in SSMS

  • Make sure to check option for scripting data for SQL 2000 to avoid issues when trying to create something like geography type column on SQL 2000.
  • Make sure to review execution order of scripts to avoid dependency based errors

This is a great option for small to medium size databases and requires some knowledge of SQL Server (dependencies, differences between versions and such)

Third party tools

  • Idea is to use third party database comparison tools such as ApexSQL Diff or Data Diff
  • Good side is that these will take care of script execution and differences between versions
  • Not so good is the fact that you’ll need to pay for these after trial ends
  • I’ve used these two tools successfully but you can’t go wrong with any other tool on the market. Here is a list of other tools in this category.
你是暖光i 2024-08-18 19:54:12

您无法将备份从较新版本移动到较旧版本,在这种情况下,您可以编写数据库脚本,在 2000 框中执行它,然后您可以使用标准数据传输来传输您想要的任何数据

you can't move backups from a newer version to an older, in that case you can script your database, execute it in the 2000 box, then you can use the standard data transfer to transfer any data you want

素食主义者 2024-08-18 19:54:12

前提是您在使用 SSIS 的计算机之间有网络连接。容易得多,也少了很多麻烦。

Provided you have a network connection between the machines use SSIS. Much easier and a lot less messing around.

无名指的心愿 2024-08-18 19:54:12

您可以为您的数据库使用脚本生成器,然后在属性表单中选择:常规->服务器版本的脚本:SQL Server 2000。

脚本生成器将向您显示与您的服务器版本不兼容的内容。

You can use Script Generator for your database and then select in the properties form : General-> Script for server version : SQL Server 2000.

The script generator will show you things which not compatible with your server version.

骄傲 2024-08-18 19:54:12

我听说您只能通过从数据库管理工具生成 SQL 语句转储并在目标旧数据库上重新运行这些查询来完成此操作。

I've heard you can only do it by generating the SQL statement dump from the DB administrator tool and re-running those queries on the target older database.

瀞厅☆埖开 2024-08-18 19:54:12

您可以生成一个脚本来重新创建所有对象并传输所有数据...只要数据库中的所有内容在 SQL 2000 中都有效。因此没有 ROW_NUMBER()、没有 PARTITION、没有 CTE、没有 datetime2、层次结构或多个其他字段类型,没有 EXECUTE AS,以及许多其他优点。基本上,除非您的数据库非常基本,否则很有可能这是不可能的。

You can generate a script that will recreate all the objects and transfer all the data...as long as everything in the db is valid in SQL 2000. So no ROW_NUMBER(), no PARTITION, no CTEs, no datetime2, hierarchy or several other field types, no EXECUTE AS, and lots of other goodness. Basically, there's a pretty good chance it's not possible unless your db is pretty basic.

胡渣熟男 2024-08-18 19:54:12

我们也遇到过类似的情况。一个技术含量很低但方便的解决方案是:

  1. 备份并截断 SQL 2000 中的表。
  2. 在 SQL 2008 中创建一个 LINKED 服务器,指向 SQL 2000
  3. 在 sysobjects 上运行一个选择查询,以生成一个查询脚本用于插入 LINKED SERVER .table select * from table
  4. 执行查询脚本。

We got a similar situation. A very low-tech but handy solution is:

  1. backup and truncate the tables in SQL 2000.
  2. create a LINKED server in SQL 2008, pointing to SQL 2000
  3. run a select query at sysobjects to generate a query script for insert into LINKED SERVER.table select * from table
  4. execute query script.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文