SQL Server2008数据库升级至SQL Server2012

引言

今天接到了一个需求,服务器上的数据库需要从SQL Server2008升级到2012。根据之前的经验,感觉是一个非常有意思的过程(事实上也是。这个过程也给了我一些触动与启发,因此,便记录了自己的踩坑过程以及解决方案,还有安装过程的体会。

升级步骤

启动SQL Server2012的安装引导程序,中间的过程都很顺利,具体的操作步骤可参考微软官方的帮助文档,帮助文档链接如下。

https://learn.microsoft.com/en-us/previous-versions/sql/sql-server-2012/bb677622(v=sql.110)?redirectedfrom=MSDN
https://learn.microsoft.com/en-us/previous-versions/sql/sql-server-2012/ms144267(v=sql.110)

在升级规则检测的时候却出现了两个异常,如下图所示。
在这里插入图片描述

其中:

  1. 第一个异常产生的原因是:版本为SQL Server2008 R2 Sp1时,需要安装Sp2补丁包之后,才可以升级到SQL Server2012
  2. 第二个异常产生的原因是:在第一次安装失败后,服务器上存在部分已经安装的SQL Server实例,并且此时的状态为“非活动”状态。对于该问题:微软官方给出的原因如下。

出现此问题的原因是在第一次安装失败后,服务器上存在部分安装的SQL Server实例。 如果安装失败,SQL Server安装程序不会回滚安装。 部分安装的实例不包括你尝试安装的SQL Server版本,例如企业版、标准版或评估版。 尝试在同一台服务器上安装同一版本时,安装程序将查找现有实例。 但是,安装程序无法确定要安装的SQL Server版本。 因此,安装失败。

对于这个解释,我个人认为是SQL Server本身存在巨大的问题。安装失败后无法进行回滚安装这一点,对于用户使用非常不友好。
针对这两个升级问题,下面进行逐一解决。

安装SQL Server 2008 R2 sp2

该问题解决较容易,直接在微软中心的Microsoft 365上找到对应的安装包即可。下载链接为:

https://www.microsoft.com/zh-CN/download/details.aspx?id=30437

点击"Download"按钮,出现的界面如下图所示。根据自己机器的处理器架构进行选择即可,我进行更新的机器为Windows Server2008,因此选择的架构为x64版本。
在这里插入图片描述

该补丁包的具体安装方式与SQL Server2012的安装方式相同。如无特殊需要,一路点击"下一步"即可完成安装。

清除处于非活动状态的SQL Server实例

对于该升级问题,微软官方也给出了相应的原因解释以及解决方案。不幸的是,由于我的数据库水平太差,找了很久才找到。对应的链接地址如下:

https://learn.microsoft.com/zh-CN/troubleshoot/sql/install/remove-partial-installation

在该帮助文档的解决方案中,提到了导航到“Summary.txt”文件设置日志文件。然后在该日志文件中,我看到确实存在一些处于非活动状态的数据库服务,如图所示。
在这里插入图片描述

然后我开始查看安装过程的日志信息,由于对数据库安装过程中的日志文件不熟悉。因此,又找到了关于日志文件的说明。对应的链接地址如下:

https://learn.microsoft.com/zh-CN/sql/database-engine/install-windows/view-and-read-sql-server-setup-log-files?view=sql-server-ver16

在这篇帮助文档中,详细介绍了各个日志文件夹/文件的作用以及存放的位置。但是,问题并没有解决。然后,我在微软社区找到了另一篇文章。在这里,我找到了解决问题的方法。对应的链接地址如下:

https://social.technet.microsoft.com/wiki/contents/articles/38000.sql-server-troubleshooting-the-instance-id-mssqlserver-is-already-in-use-by-sql-server-instance-mssqlserver-inactive.aspx?Sort=MostRecent&PageIndex=1

在这篇文章中,它介绍到有一个"Datastore_Discovery.xml"的文件位于日志目录下,在里面找到不活动状态的产品编码,然后使用命令行将其卸载即可。结合两篇文章,我顺利找到了该文件,并通过关键字搜索,找到了不活动状态的产品编码,如下图所示。
在这里插入图片描述

然后,启动“命令提示符”,输入如下语句,即可卸载不活动状态下的SQL Server实例引擎。

msiexec /x {$ProductCode}

注:$ProductCode表示产品编码,如果有多个不活动的产品,应将其全部删除

卸载完成后,重新启动SQL Server2012安装向导,即可顺利完成对数据库的升级。

一些体会

事实上,在我接触过的产品中,微软的产品相对来说帮助文档是比较齐全的。只要你愿意看日志,愿意查帮助文档,愿意上社区搜一些关于issue的提问,那么,我认为99%的问题都可以得到很好的解决。
但是,如我提到的一样,如何能够快速定位到问题对应的文档呢?我认为,需要做到如下两步:

  1. 对产品有足够的熟悉。知道问题的根源发生在哪里,比如在升级数据库的过程中,问题的根源是在数据库引擎,还是在数据库管理工具,还是在客户端的兼容性
  2. 对文档的整体结构有所了解。好的帮助文档就像一本小册子,如果你想了解它,那么,你首先应该知道小册子的目录长什么样。
今天将由于需要就将我的SQL 2008升级SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.Sqlerror:该数据库是在运行版本10.50.2500的服务器上备份的,该版本与此服务器(运行版本10.00.1600)不兼容。请在支持该备份的服务器上还原数据库,或者使用与此服务器兼容的备份。” 经过一番查证得知: 所谓的10.00.1600其实就是SQL 2008 10.50.1600其实就是SQL 2008 R2 10.50.2500其实就是SQL 2008 R2 SP1 这样一来基本就明了了。 我得升级自己的数据库SQL 2008 R2 SP1。 这篇文章就把我先升级SQL 2008 R2的过程详细记录下来,下一篇文章会介绍升级R2到R2 SP1. 第一步:准备安装程序。 首先SQL 2008是安装好的 因此只需要下载SQL 2008 R2安装程序,下载地址如下:http://care.dlservice.microsoft.com/dl/download/1/E/6/1E626796-588A-495C-917B-321093FB98EB/2052/SQLFULL_x86_CHS.exe?lcid=2052&ptype=pcare 第二步:升级开始。SHOW TIME!!! 1、如果是从SQL2008升级SQL2008R2那么只能选择左侧“安装”对应右侧“从SQL SERVER 2000,SQL 2005或SQL 2008升级”这个选项来升级。 大家也注意到有一个“维护”但是这个选项是“从SQL 2008其他例如EXPRESS版本升级” 在此,要区分清楚。 2、安装程序支持规则检查。通过之后就继续下一步。 3、输入产品密钥,这个地方,你的密钥是什么版本的,装完之后你的数据库就是什么版本:像企业版,开发版等等等。 4、许可条款必须接受,不然人家不让用啊~~~ 5、安装程序支持文件。 6、程序支持规则安装完成后程序会自动检测安装的文件是否满足需求。 7、当你的服务器中只有一个实例的时候,你很难听到实例这个词,人们都直接叫他“数据库”了。只有在服务器上安装的实例数目超过两个的时候你才会听到“实例”二字比较多。 但是“实例”肯定是学习数据库过程中必须熟知的东东!!! 此处,选择你想要升级的实例。下一步就行了。 8、以前安装过的组件(component)都会出现在这里,不用管,以前有的,现在当然也要有,闭着眼睛点击“下一步”吧! 9、因为是升级安装,所以你以前的实例名字是什么,这里还是什么。继续“下一步”。 10、不废话,“下一步”。 11、是否发送错误报告,随便,下一步。 12、“下一步”。 13、点击“升级”按钮进行升级,中途等待大约20-30分钟就完成了。 升级过程中如图: 14、安装成功要求重新启动。重启吧没的说!! 15、重启完毕,启动SSMS(SQL SERVER MANAGEMENT STUDIO)在登陆界面上就会立马察觉到不同,SQL 2008变成了SQL 2008 R2. 16、连接上数据库引擎,在左侧导航栏就可以看到你数据库的版本了。这次变成了10.50.1600。如果还要升级到10.50.2500。那就继续安装一个升级补丁吧! 至此,10.00.1600升级10.50.1600已经成功完成。 总结一下: 10.00.1600就是SQL SERVER 2008 10.50.1600就是SQL SERVER 2008 R2 这篇博文里讲的是升级安装,如果你要进行全新安装,请按照如下操作: 一、卸载SQL SERVER 2008,一定要卸载,数据库不像其他常用的应用程序(那些程序会自动检测是否有旧版本,然后给你卸载并升级)。 另:对SQL来说,如果你安装好之后,再进行一次安装的话,实际上安装的是另外一个实例。 二、卸载完之后就安装就行了。执行的是安装---全新安装。 其他细节参考我的博文:SQL SERVER 2008安装(在实例、权限等方面,SQL 2008SQL 2008 R2是一样的)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值