在没有2005或2008实例的情况下从SQL Server 2000迁移到2012


11

我遇到了三个旧的数据库,它们都安装在SQL Server 2000上,我需要移至2012年。我认为标准方法是还原到2005或2008实例,更新,重新导出并最终还原到2012年。

很好,除非我们没有2005或2008实例。

是否有任何替代方法或其他方法可能值得尝试?

作为参考,数据库仅包含15-20个表和一些视图,它们看起来非常简单,备份大小仅为100-200MB。



1
这是完全合法的,并且在sql的许可中涵盖了将中间实例安装为升级的“桥梁”。没有用户应连接到它。...
罗斯托尔

Answers:


21

不,没有解决方法可以直接从2000年升级到2012年。

由于您没有大量数据,因此可以做各种事情来移动数据(但不能移动整个数据库),包括:

  • 导入/导出向导
  • SSIS
  • BCP
  • 使用2012年的链接服务器或应用程序进行手动查询

但是,这些不一定会带来其他问题,例如用户,权限,角色等。并且并非所有事物都将按照正确的依赖关系顺序创建对象。因此它们更加工作且容易出错。以我的经验,最好只是暂时放置一个中间实例,然后执行两次备份+还原操作-与上述任何一种方法相比,这将更容易,更快且出错更少。

如果您的数据库小于10GB,则可以在几分钟内安装Express(免费)副本,然后使用它。您可以在此处下载2008 R2 Express 。我认为2000年企业版中没有围绕数据库结构等的功能会阻止升级(对于更现代的版本,更大的关注)。

如果您的数据库对于Express而言太大,您应该能够以49美元左右的价格找到Developer Edition(甚至更便宜- 我在eBay上找到了2005年的价格为37美元),或者如果您拥有MSDN订阅,则应该能够得到从那里开始。

或者,您也可以使用评估版,该版本仍旧可以下载较早版本的版本(例如,我在此处找到2008),但是我正在使用手机,因此无法确认该版本的下载仍然有效。


谢谢。由于此处的互联网速度较差,因此我试图避免下载,但是我发现了2005安装二进制文件,因此我认为这将是最快的方法。
卢纳提克2015年

不,唯一真正有用的是2008,否则您还需要2005
Rostol


@AdamNofsinger我要说的是100%肯定,我做到了无数次(我们有一个用于旧系统的旧SQL 2000),并且有一个专门构建的2008 vm,先还原数据,然后备份并还原到SQL 2016 ...但是,如果保罗·兰达尔(Paul Randal)另有说法,则请记住直接方法从2005年起开始有效。不适用于2000年和2003年。
罗斯托尔

6

声明没有解决方法似乎为时过早。

您说您的数据库仅包含一些表和视图。为什么不将表和视图架构导出为SQL create语句并在目标数据库上运行它们?然后,您还可以将实际数据导出为CSV格式,然后将其导入目标数据库,甚至可以在C#/ C ++ / etc中编写一些内容来导出/导入实际数据。

您不需要花一分钱就不需要最终使用的新SQL Server实例。


3
并且当然包括所有其他对象,存储过程,触发器,函数等。同样,还有BCP实用程序,用于从数据库复制数据或向数据库复制数据。
RLF 2015年

1
谢谢。那是我可能希望的事情,但是数据库争吵不是我的日常工作,而且我不太确定是否还有其他依赖项或设置(用户权限等)不会被复制。刚才导出表等
Lunatik

4
足够公平,更新了我的答案。仍然认为,解决方案比仅仅临时建立一个实例,并执行两个可靠且不易出错的备份+还原操作要多得多。(此外,这似乎与金钱无关,因为OP已经具有2005年的二进制文件,而且无论如何都应该可以使用SQL Express迁移较小的数据库。)
Aaron Bertrand

3

不可以,您不能直接从2000年迁移到2012年。

您可以做的是安装2005 OR 2008或2008R2的临时实例,然后在此处还原2000数据库。完成后,您现在可以通过从已安装的实例进行数据库备份并还原到sql server 2012来从已安装的实例升级。

您将必须分两步进行迁移:

  • 步骤1:例如,第一次从SQL 2000迁移到SQL 2008。您需要使用SQL 2000 SP4,然后执行以下步骤:将SQL Server 2000迁移到SQL Server 2008

  • 步骤2:第二次从SQL Server 2008迁移到2012。


0

您说您“遇到了位于SQL Server 2000上的三个旧数据库”,这使我相信您只需要数据。我猜想,如果将它们用于某个目的,您会知道的。在这种情况下,请忽略用户,安全性等所有问题。

导入/导出向导所有表编写存储过程和视图脚本的脚本检查维护计划和代理作业只是为了记录以后可能要查看的过程。


0

您不能直接从SQL Server 2000迁移到SQL Server 2012,并且如果尝试这样做,则会得到以下错误号3169,它与兼容性问题有关。

可以从以下版本(最低版本)之一的SQL Server 2005 SP4或SQL Server 2008 SP2或SQL Server 2008 R2 SP1迁移到SQL Server 2012。

因此,从SQL Server 2000迁移到其中一个版本的第一步是,我在以下链接中找到了SQL Server 2008升级顾问之一。为确保所有内容在开始还原过程之前都能正常运行,您需要运行该应用程序。然后“启动Upgrade Advisor分析向导”,并按照向导步骤进行操作。

收到报告后,需要在目标SQL Server 2005 SP4或SQL Server 2008 SP2或SQL Server 2008 R2 SP1上还原数据库并对其运行兼容性级别(可以在数据库选项上找到它)。对于SQL Server登录,请按照以下链接中的说明进行操作。

完成此操作后,现在需要通过从第一次迁移到的服务器重复相同的步骤来迁移到SQL Server 2012。


0

首先,我同意您不应该直接从2000年迁移到2012年。我认为这个过程已经很好地涵盖了。我想建议您确定是否有人在使用数据库及其用途。可能是它们没有被使用。它发生了,如果是这种情况,那么您就不用担心。可能将2个或3个表和数据(如果要从单个表中获取数据的方式简单可靠)(如果要获取单个表的数据,则为2000,请使用bcp)可以满足用户的需求。如果执行此操作,则在2012数据库中创建新表并bcp输出需要csv的数据,如果需要,可以将其bcp重新输入。如果您必须迁移一个或两个以上的表,那么最简单,最安全和最佳的方法就是执行两步迁移。不要


您应该知道2000年的模式脚本不是100%准确的。我记得总是必须编辑脚本。
dkh63493
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.