豆子需要登陆一个DR站点的VCenter,但是很意外的发现连接失败了


VCenter 5.5 数据库过大造成的问题和解决方法_第1张图片


查看一下日志文件,发现原来是数据库的大小超过了SQL2012 Express 10G的限制


VCenter 5.5 数据库过大造成的问题和解决方法_第2张图片


解决的思路很简单,手动清空过于久远的历史事件数据,然后shrink数据库就行了。


在5.0的版本里面,Vmware提供过一个脚本自动清理,但是这个脚本在5.1和5.5里面已经无效了。


具体操作如下:(官方参考kb http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1025914)


  1. 首先以vcenter管理员的身份登陆Vcenter 的数据库(我用的是windows+sql2012Express),注意VCDB(vcenter的数据库)配置的时候一般都是指定他自己的管理员登录的,所以如果想当然的用域管理员登陆,一样是没有访问权限的。记得先停止所有的vmware服务

 2.  更改Vcenter的设定,如果能够登陆Vcenter的话,可以看见有个rentention policy的设置选项,但是现在我没法连接vcenter所以要在对应的数据库表里直接修改

VCenter 5.5 数据库过大造成的问题和解决方法_第3张图片


修改VCDB数据库里面对应的数据 记得把maxage都改成想保留的天数,对应的bool值都改成true


VCenter 5.5 数据库过大造成的问题和解决方法_第4张图片


VCenter 5.5 数据库过大造成的问题和解决方法_第5张图片



3. 执行清理


运行下列的存储过程执行清理,取决于数据的多少,这个过程可能要很多个小时


VCenter 5.5 数据库过大造成的问题和解决方法_第6张图片


4. Shrink 数据库


VCenter 5.5 数据库过大造成的问题和解决方法_第7张图片



重启Vmware服务,如果运气好,那么应该就恢复正常了,日志里面SQL的错误也应该清除了。但是豆子运气不好,SQL倒是不报错了,但是Vmwawre Vcenter 的服务启动之后又自动关掉了,图一的错误继续存在。继续查错。。。


日志里面报错如下


VCenter 5.5 数据库过大造成的问题和解决方法_第8张图片


解决方法参考官方kb

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2015824


首先查看DSN设置无误

VCenter 5.5 数据库过大造成的问题和解决方法_第9张图片


查看服务登陆账号无误

VCenter 5.5 数据库过大造成的问题和解决方法_第10张图片


修改下列键值为Vcenter的登陆账号

HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware Virtualcenter\D

VCenter 5.5 数据库过大造成的问题和解决方法_第11张图片


执行下列程序重置密码

VCenter 5.5 数据库过大造成的问题和解决方法_第12张图片


重启服务之后VCenter终于恢复正常。