最近,公司内部使用的VMware vCenter突然无法连接了。查看日志,发现在MSSQL的应用程序日志MSSQL$VIM_SQLEXP报 “CREATE DATABASE or ALTER DATABASE failed because the resulting cumulative database size would exceed your licensed limit of 10240 MB per database.”。VMware vCenter应用程序日志报 “’VIM_VCDB’ because the ‘PRIMARY’ filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup”。我安装的是SQL2008R2 企业版,单个实例的最大使用空间是10GB.问题已经很明显了,是vCenter使用的 VIM_VCDB的数据库空间占用超过10GB的 license限制,无法再使用更多的空间了。除了升级License外,最好的办法就是删除VIM_VCDB中的一些历史数据,然后shrink数据库。
具体方法如下
- 用安装MSSQL的数据库的域帐号登录MSSQL 所在的服务器,因为安装时用了这个域帐号来做MSSQL的认证。
- 用下面的命令来完成清表及缩库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 打开powerShell用OSQL在命令行登录MSSQL,这里使用了 [-D ODBC DSN name] 参数
osql -D "VMware vCenter" -E
# 执行下面的操作,打开 VIM_VCDB库,设置event.maxAge 和 task.maxAge值为30,原先为180
1 use VIM_VCDB
2 go
1 update vpx_parameter set value='30' where name='event.maxAge'
2 update vpx_parameter set value='30' where name='task.maxAge'
3 update vpx_parameter set value='true' where name='event.maxAgeEnabled'
4 update vpx_parameter set value='true' where name='task.maxAgeEnabled'
5 go
# 执行 cleanup_events_tasks_proc 这个存储过程,删除 30天以外的event task 数据,我10G的数据,执行了20分钟
1 exec cleanup_events_tasks_proc
2 go
# 最后,执行缩库操作,大概要执行个20分钟
1 dbcc shrinkdatabase ('VIM_VCDB')
2 go
查看缩库的情况
最后,查看 C:\Program Files\Microsoft SQL Server\MSSQL10_50.VIM_SQLEXP\MSSQL\DATA 下的VIM_VCDB.mdf文件,看是否已经小于10GB了,我的是缩小到了4GB. “我啪, 就把这事情搞定了,很快啊!希望看到的小朋友 耗子尾汁” :)