背景:

由于建设初期使用的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. Mono为何能跨平台?聊聊CIL(MSIL)

    前言: 其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇.到底是什么原理使得U3D可以跨平台呢?后来发现了Mono的作用,并进一步了解到了CIL的存在.所以,作为一个对Unity3D跨平台能力 ...

  2. [Java 缓存] Java Cache之 DCache的简单应用.

    前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...

  3. ExtJS 4.2 组件介绍

    目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...

  4. .NET Core的日志[1]:采用统一的模式记录日志

    记录各种级别的日志是所有应用不可或缺的功能.关于日志记录的实现,我们有太多第三方框架可供选择,比如Log4Net.NLog.Loggr和Serilog 等,当然我们还可以选择微软原生的诊断框架(相关A ...

  5. jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能

    ▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...

  6. Linux 添加新磁盘,在线扩充空间

    CentOS 7开发环境中的home 目录空间满了,需要增加空间 到虚拟机上执行"ls /sys/class/scsi_host",然后重新扫描SCSI总线来添加设备.如右图.然后 ...

  7. Oracle碎碎念~2

    1. 如何查看表的列名及类型 SQL> select column_name,data_type,data_length from all_tab_columns where owner='SC ...

  8. node中子进程同步输出

    管道 通过"child_process"模块fork出来的子进程都是返回一个ChildProcess对象实例,ChildProcess类比较特殊无法手动创建该对象实例,只能使用fo ...

  9. PHP设计模式(五)建造者模式(Builder For PHP)

    建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式. 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用 ...

  10. 烂泥:数据库管理之phpmyadmin免密码配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 其实这篇文章很早就想写了,但是一直没有时间.刚好今天下午稍微空了点,就把这篇文章整理出来 ...