背景:

由于建设初期使用的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. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  2. 让姑姑不再划拳 码农也要有原则 : SOLID via C#

    “姑娘,别这样.我们是有原则的.” “一个有原则的程序猿是不会写出 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去.” “对,是时候和那些只会滚键盘的麻瓜不同了, ...

  3. Kooboo CMS技术文档之五:站点配置管理

    站点关系 管理站点间的关系,站点可以有子站点,子站点继承父站点的部分配置数据,同时子站点还可以根据需要,本地化由父站点继承而来的数据.通过继承和本地化,可以让子站点在用最小的改动代价,来完成一个与父站 ...

  4. ifconfig: command not found(CentOS专版,其他的可以参考)

    ifconfig: command not found 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) echo $PATH 解决方案1:先看看是不是 ...

  5. Android和JavaScript相互调用的方法

    转载地址:http://www.jb51.net/article/77206.htm 这篇文章主要介绍了Android和JavaScript相互调用的方法,实例分析了Android的WebView执行 ...

  6. netcore - MVC的ActionFilter的使用

    经过一周的时间没有分享文章了,主要是在使用.netcore做一个小的项目,项目面向大众用户的增删改查都做的差不多了,打算本周在云服务器上部署试试,很期待,也希望上线后大家多多支持:以上纯属个人废话,来 ...

  7. iOS逆向工程之Hopper中的ARM指令

    虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...

  8. 使用C/C++写Python模块

    最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...

  9. 【HanLP】资料链接汇总

    Java中调用HanLP配置 HanLP自然语言处理包开源官方文档 了解HanLP的全部 自然语言处理HanLP 开源自由的汉语言处理包主页 GitHub源码 基于hanLP的中文分词详解-MapRe ...

  10. Javascript正则对象方法与字符串正则方法总结

    正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...