Application Metering - Do I have a license problem or Not?
Recently, I encountered a Application Metering problem, which was evidenced by constantly seeing the following three errors in the Altiris log files.
Error 1: Priority: 2
Date: 6/23/2009 12:41:41 PM
Tick Count: 11234656
Host Name: xxxxxxxxxx
Process: aexsvc.exe (480)
Thread ID: 572
Module: AltirisNativeHelper.dll
Source: LicenseManager::RequestLicense
Description: The specified resource failed to obtain a license (Resource: XXXXXXXXXX, Product Application Metering Solution Configuration, Exception: Failed to load inventory. [Cannot insert the value NULL into column '_ResourceGuid', table 'custom_table_name'; column does not allow nulls. INSERT fails.
The statement has been terminated.], Exception Type: Altiris.NS.Exceptions.AeXException )
Error 2: Priority: 1
Date: 6/23/2009 12:43:10 PM
Tick Count: 11324234
Host Name: XXXXXXXXX
Process: aexsvc.exe (480)
Thread ID: 5612
Module: AltirisNativeHelper.dll
Source: Altiris.NS.ResourceManagement.DataClassImporter.LoadInventory_Impl
Description: Failed to load inventory. [Cannot insert the value NULL into column '_ResourceGuid', table 'custom_table_name'; column does not allow nulls. INSERT fails.
The statement has been terminated.]
Error 3: Priority: 1
Date: 6/23/2009 12:43:10 PM
Tick Count: 11324234
Host Name: XXXXXXXXXX
Process: aexsvc.exe (480)
Thread ID: 5612
Module: AltirisNativeHelper.dll
Source: Altiris.NS.ResourceManagement.DataClassRowCollection.CommitData
Description: Unspecified Dataloader SQL Exception encountered for inventory data class AeX AM Monthly Summary. (SQL Exception Number: 515) ( Unhandled exception. Type=System.Data.SqlClient.SqlException Msg=Cannot insert the value NULL into column '_ResourceGuid', table 'custom_table_name'; column does not allow nulls. INSERT fails.
The statement has been terminated. Src=.Net SqlClient Data Provider
StackTrace=
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Altiris.NS.ResourceManagement.Database.DataLoaderSqlClientConnection.ExecuteSQLNoResults(String query, Int32& rowsAffected)
at Altiris.NS.ResourceManagement.Database.DataLoaderSqlClientConnection.ExecuteSQLNoResults(String query)
at Altiris.NS.ResourceManagement.DataClassRowCollection.UpdateDataClass(IDataLoaderConnection connection, DataClass dataClass, DataClassRows rows, Hashtable resourceDLInfoHT, Boolean HistoryEnabled, Hashtable resourceGuidToResourceTypeGuid)
at Altiris.NS.ResourceManagement.DataClassRowCollection.CommitData_Impl(IDataLoaderConnection connection)
at Altiris.NS.ResourceManagement.DataClassRowCollection.CommitData(IDataLoaderConnection connection) )
The top error, outlining the fact that licensing had failed was frustrating, and after reviewing the licensing page and seeing that all was in order, the issue became more challenging. I did some further review and analysis of the log files. I noticed this statement:
Cannot insert the value NULL into column '_ResourceGuid', table 'custom_table_name'; column does not allow nulls. INSERT fails. (custom table name was actually populated with a name from a specific database)
It became clear that as a part of collecting the application metering data, a custom table was also being populated. Further, that the custom table definition did not permit NULL values to be included in the _resourceguid column of that table, and that NULL values were coming in from the managed client machines.
Once the custom table definition was changed to support NULL values for the _resourceguid column, the problem and errors disappeared. And licensing had nothing to do with it.