背景:

由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建。而此时随着业务量的增加,虚拟机数的膨胀,产生的日志如果不被及时清理掉或者转移走的话,会导致该免费版数据库很快触发阈值而停止SQL Server服务(对于2005/2008版【vCenter  Server 4.1以下版本】是mdf文件不能超过4GB,对于2008 R2版【vCenter Server 5.5以上版本】的是mdf文件不能超过10GB),这样就会导致vCenter主服务无法启动,vCenter对外服务异常。

因此最终用户方提出能否通过技术手段对免费受限版的数据库升级?

探索:

通过爬VMware的KB知识库,有发现介绍如何迁移免费版到完整版的文章KB1028601。通过仔细阅读,我了解到很多关于数据内部调用,注册表项的真实含义,以及安全迁移的必备环境等内容。

由于上文介绍的是迁移内容,再结合用户现有环境,可以借鉴迁移文章中涉及到的知识点,但是不能完全照搬完成我这次的升级,因此真正实施的过程中该文是我的重要技术保障,接下来将给各位带来如何安全平滑升级到完整版SQL Server的详细步骤。

平滑升级过程:

1.     进行环境备份

a)      虚拟化环境对该vCenter虚机进行快照即可

b)      物理环境建议做一下全镜像,可以微软自己的Windows Server Backup功能,也可以使用其他第三方的磁盘级别备份工具

2.     如果有开启DRS,请临时关闭DRS或更改成手动DRS(F该操作非必需项,有此建议的原因是实践中,当vCenter再次启动服务后,会重新计算“标准偏差”,这将可能会带来不必要的虚机迁移风暴)

3.     停止一切VMware vCenter Server服务,详细步骤可参考KB2109881

4.     准备升级材料

a)      大于等于现有免费版本号的SQL Server 英文版

b)      可供管理现有vCenter Server 内建数据库实例的“SQL Server Management Studio”工具

表格 1取自维基百科的版本与发布名成对照表

 

RTM (noSP)

SP1

SP2

SP3

SP4

 SQL Server 2016
     codename ?

13.0.1601.5

       

 SQL Server 2014
     codename SQL14

12.0.2000.8

12.0.4100.1
or 12.1.4100.1

12.0.5000.0
or 12.2.5000.0

 SQL Server 2012
     codename Denali

11.0.2100.60

11.0.3000.0
or 11.1.3000.0

11.0.5058.0
or 11.2.5058.0

11.0.6020.0
or 11.3.6020.0

 SQL Server 2008 R2
     codename Kilimanjaro

10.50.1600.1

10.50.2500.0
or 10.51.2500.0

10.50.4000.0
or 10.52.4000.0

10.50.6000.34
or 10.53.6000.34

 SQL Server 2008
     codename Katmai

10.0.1600.22

10.0.2531.0
or 10.1.2531.0

10.0.4000.0
or 10.2.4000.0

10.0.5500.0
or 10.3.5500.0

10.0.6000.29
or 10.4.6000.29

 SQL Server 2005
     codename Yukon

9.0.1399.06

9.0.2047

9.0.3042

9.0.4035

9.0.5000

 SQL Server 2000
     codename Shiloh

8.0.194

8.0.384

8.0.532

8.0.760

8.0.2039

 SQL Server 7.0
     codename Sphinx

7.0.623

7.0.699

7.0.842

7.0.961

7.0.1063

5.     确认升级前版本

a)      使用“SQL Server Management Studio”登陆“VIM_SQLEXP”实例

b)      查看当前实例的数据库版本号,以vSphere 5.5 vCenter Server为例,它使用的是英文版v10.50.2500.0,等换成发布名称就是SQL Server 2008 R2 with SP1

图 1确认数据库实例语言和版本

6.     获取目标版本

a)      由于内建免费版使用的SQL Server相对来说有点过于久远,因此在用户购买的版本中找到了SQL Server 2012 with SP3作为目标版本使用

7.     开始升级

a)      本小节会有大量截图出现,使您更直观的了解到升级全貌

b)     

图 2选择维护项(Maintenance)的版本更新(Edition Upgrade)

c)     

图 3输入用于更新的目标版本产品密钥,我这里使用的是企业版密钥

d)     

图 4同意授权许可

e)     

图 5注意选择实例(VIM_SQLEXP)蓝色箭头,红色箭头1注意版本,红色箭头2注意版本号(这里看到11.3.6020,是因为之前做过一次基于版本号的升级,原本这里应该是10.51.2500.0的)

f)      

图 6升级规则检查,6项全部通过

g)     

图 7最后再看一下汇总,了解操作内容和目标版本信息以及实例名称

h)     

图 8升级完后,通过管理工具确认版本和版本号信息,同时我们注意到根目录此时也发生了变化

i)       确认无误,至此SQL Server 这边的升级到此结束

8.     更新vSphere vCenter Server所需要用到的DSN(此操作步骤非必需,但可以确保一致性,提高兼容性)

a)      此步骤来自于VMware的迁移文档KB1028601 描述

b)      由于此次我选择的是升级而非迁移,所以SQL在服务中的启动名也没有变(依旧是MSSQL$VIM_SQLEXP),倒是DSN的版本需要更新一下,原先是10,现在是11

c)     

图 9通过查看控制面板内的管理工具,在ODBC数据源管理器(odbcad32.exe)中我们可以看到vCenter的系统DSN还是版本10

d)      如果想偷懒,可以在注册表编辑器(regedit.exe)下面先导出HKEY_LOCAL_MACHINE\SOFTWARE\ODBC这个分支下的所有内容

e)      随后我删除这个名称是VMware vCenter的系统数据源

f)       接着我开始配置一个新的VMware vCenter数据源

i.         

图 10按图选择版本11的驱动程序

ii.         

图 11使用刚刚导出的reg注册表文件,按照顺序依次填入这三个内容后下一步

iii.         

图 12保持默认,使用Windows 授权验证,随后下一步

iv.         

图 13在红字1处选择默认数据库为VIM_VCDB,红字2处选择读写,随后下一步

v.         

图 14最后一步,点击完成进行简单测试

vi.         

图 15完成测试,看到测试通过字样

vii.         

图 16最后看到系统DSN内生成了新的基于11版本的数据源

9.     最后不做任何操作的重启一下vCenter服务器,目的是一起检查系统服务自启动,vCenter服务自启动,同时也利于问题就近发现

10.  登陆vCenter,对DRS进行开启或者变更成自动

11.  最后的最后就是稳定工作一段时间后就可以删除原有的快照文件了

总结:

1.和迁移方案不同,这里我们使用的是原地升级,因此省去了很多VMware内部调动外部数据库的配置动作,唯独需要注意的是DSN版本,而这个也是为了看起来一致,非必需步骤

2.这种升级方式属于偷懒升级,但是也很安全,满足用户方在没有syslog服务器的情况下在本地更多存放日志信息到数据库内

3.请一定准备好英文版SQL Server安装介质作为目标升级版本

4.这种操作的弊端,我认为经过一段时间后随着数据库的变大,系统启动时间会变长,对去历史日志的时候也会有所变慢,可以通过迁移到更快速存储或者设置日志留存级别来控制数据库大小

5.在vSphere5.5之后6.0之前的这些版本内,使用的都是SQL Server 2008 R2 的免费版,因此可以提供10GB的免费使用数据库空间,在一定程度上满足大多数用户需求

6.各位看过之后有任何疑问欢迎留言

有用的链接:

1.     https://kb.vmware.com/kb/1028601

2.     http://sqlserverbuilds.blogspot.com

3.     https://zh.wikipedia.org/wiki/Microsoft_SQL_Server

4.     https://msdn.microsoft.com/en-us/library/mt238290.aspx

-=EOB=-

如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版的更多相关文章

  1. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

    为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...

  2. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第2部分)

    计划缓存(Plan Cache) 如果SQL Server已经找到一个好的方式去执行一段代码时,应该把它作为随后的请求重用,因为生成执行计划是耗费时间且资源密集的,这样做是有有意义的. 如果没找到被缓 ...

  3. [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝

    一般连接sql数据库,IP_connstr="driver={SQL Server}; server=127.0.0.1;database=数据库名字;uid=sa;pwd=密码" ...

  4. SQL Server 127个SQL server热门资料汇总

      SQL Server 127个SQL server热门资料汇总     最近有许多关于如何学习SQLSERVER的问题,其实新手入门的资源和贴子很多,现在向大家隆重推荐经过精心整理的[SQLSer ...

  5. 如何启动 SQL Server Agent(SQL Server 配置管理器)

    如何启动 SQL Server Agent(SQL Server 配置管理器) SQL Server 2008 R2 其他版本   4(共 6)对本文的评价是有帮助 - 评价此主题 可以从 SQL S ...

  6. SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)

    原文:SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表) 作为SQL Server 2016(CTP3.x)的另一 ...

  7. SQL Server 2005、SQL Server 2008版本比较

    SQL Server 2005的版本有SQL Server 2005企业版(Enterprise).SQL Server 2005标准版(Standard) 和SQL Server 2005工作组版( ...

  8. SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005

    SQL Server 2012SQL Server 2012 开发版(DVD)(X64,X86)(中文简体)ed2k://|file|cn_sql_server_2012_developer_edit ...

  9. Windows Server 2003 安装Sql Server 2005 问题处理

    安装途中遇到: 问题1.无法找到产品Microsoft SQL Server Native Client的安装程序包.请使用安装包sqlncli.msi的有效副本重新安装? 答:安装SQL Serve ...

随机推荐

  1. 【.net 深呼吸】细说CodeDom(7):索引器

    在开始正题之前,先补充一点前面的内容. 在方法中,如果要引用方法参数,前面的示例中,老周使用的是 CodeVariableReferenceExpression 类,它用于引用变量,也适用于引用方法参 ...

  2. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  3. 一步一步使用ABP框架搭建正式项目系列教程

    研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ...

  4. iOS二维码生成、识别、扫描等

    二维码扫描 前言: 最近的项目中使用到了二维码,二维码这个模块功能也完成:觉得还是有必要总结一下用来做记录.好长时间没有写二维码了都忘记在差不多了,重新拾起来还是挻快的. 二维码使用场景: 生活中有很 ...

  5. Node.js:Buffer浅谈

    Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...

  6. 如何避免git每次提交都输入密码

    在ubuntu系统中,如何避免git每次提交都输入用户名和密码?操作步聚如下:1: cd 回车: 进入当前用户目录下:2: vim .git-credentials (如果没有安装vim 用其它编辑器 ...

  7. AbpZero--1.如何开始

    1.加群 群号:104390185,下载这个文件并解压 用VS2015打开aspnet-zero-1.9.0.1 2.修改Web项目web.config连接字符串 <add name=" ...

  8. Take into Action!

    很久没有认真地写文字了. 刚毕业一两年断断续续在csdn上写过一些当时的工作记录,然后没有坚持下去.有时候是觉得自己不牛,记录的东西旁人看起来也许不值一提:有时候觉得结婚生娃了,然后时间不够用(确实是 ...

  9. 【iOS10 SpeechRecognition】语音识别 现说现译的最佳实践

    首先想强调一下“语音识别”四个字字面意义上的需求:用户说话然后马上把用户说的话转成文字显示!,这才是开发者真正需要的功能. 做需求之前其实是先谷歌百度一下看有没有造好的轮子直接用,结果真的很呵呵,都是 ...

  10. LeetCode - Two Sum

    Two Sum 題目連結 官網題目說明: 解法: 從給定的一組值內找出第一組兩數相加剛好等於給定的目標值,暴力解很簡單(只會這樣= =),兩個迴圈,只要找到相加的值就跳出. /// <summa ...