We have enabled WMI class WIN32_Volume a few weeks ago. The goal was to inventory Mount Point.
Before giving data to client, we have noticed a difference in the result between SQL database and WMI Instances.
The majority of mount point in SQL database in SCCM 2012 for v_GS_Volume have NULL to Capacity and FreeSpace columns.
Executing the WMI query from the InventoryAgent.log contains no issue and the data is visible locally on the server. This confirms that the problem is not locally on the problematic client.
Looking to the next step, the MP_HINV.log on the site server shows error invalid integer property value out of range for both property instances. This log contains records details about the conversion of XML hardware inventory records from clients and copy those files to the site server.
The cause of this issue is the comparison between the value of WMI instance locally on the server and the table limitation in SQL on the site server.
In SQL, Capacity0 is an integer with a maximum range of 2 147 483 647. In WMI Instance, Capacity value is 15 000 036 962 304 which is way over the limit.
To resolve this issue, we need to find a way to change the data type in SQL to accept value over 2 147 483 647.
Using Class qualifiers editor can configure a friendly display name for the class and the units format when you add a new hardware inventory class in client settings.
The first thing to do is delete the class because the editor can be use only during the importation of the class. From the SCCM console, click on Administration, Client Settings, right click on Default Client Settings and click on Properties. Click on Hardware Inventory then Set Classes. Select and delete the problematic class.
As soon the table and views will be deleted from the SQL database, you can reconfigure the class.
From the same place, click on Add and type the WMI namespace according to your class. Check box Recursive and click Connect. Before clicking on Ok, click on Edit from Add Hardware Inventory Class and select unit Decimal String to the instance you were getting problem and then click Ok.
Choosing Decimal String unit transforms the data type UINT64 of WMI Instance to NVARCHAR(255) in SQL database.
*** We could also use Megabytes unit since 15 000 036 962 304 /1024 /1024 = 14 305 149 which is less then 2 147 483 647. ***
Initiate a machine policy and a hardware inventory scan from the client. Wait for the data to be processed and you will see value over 2 147 483 647 entering the SQL database.