This issue occurs if the VPX_TEXT_ARRAY table grows substantially in size.
Resolution
To resolve this issue in Microsoft SQL Server:
Ensure that the Recovery Model is set to SIMPLE and the Retention Policy is set to 15 days. To access the Database Retention Policy setting in the vSphere Client, click Administration > vCenter Server Settings > Database Retention Policy.
Stop the VMware Virtual Center Server service.
Take a backup of your current database. Do not skip this step.
Place the database in single user mode:
ALTER DATABASE <vCenter DB name> SET SINGLE_USER;
Using Microsoft SQL Studio, run this query to get the size of all the tables in the VIM_VCDB database in #Temp table:
Run a query on the vpx_text_array table to check the size: SELECT * FROM #Temp WHERE NAME=’VPX_TEXT_ARRAY’;
Running the select statement on the VPX_TEXT_ARRAY output appears similar to:
Name
ROW
Reserved
Data
Index Size
Unused
VPX_TEXT_ARRAY
1171816
3857296 KB
3732816 KB
123264 KB
1216 KB
Notes:
VPX_TEXT_ARRAY table contains certain properties of the data objects that are stored as CLOB and are stored in common VPX_TEXT_ARRAY table with different type_id.
VPX_TEXT_ARRAY keeps track of virtual machine/host datastore information, which includes snapshots of virtual machines' information.
Drop the temp table:
DROP TABLE #Temp;
To delete old data from the table, run this command with Microsoft SQL Studio:
SELECT * FROM VPX_TEXT_ARRAY WHERE NOT EXISTS(SELECT 1 FROM VPX_ENTITY WHERE ID=VPX_TEXT_ARRAY.MO_ID)
Note the number of records returned.
DELETE FROM VPX_TEXT_ARRAY WHERE NOT EXISTS(SELECT 1 FROM VPX_ENTITY WHERE ID=VPX_TEXT_ARRAY.MO_ID)
This should display the same number of records as the SELECT query.
Execute this SQL query to exit single user mode on the database: