Failed on first attempt to commit fast insert for data class: AeX AC Identification
search cancel

Failed on first attempt to commit fast insert for data class: AeX AC Identification

book

Article ID: 152009

calendar_today

Updated On:

Products

IT Management Suite

Issue/Introduction

Basic inventory fails to load on the Notification Server and the following error appears in the NS log files:

Module: AeXSVC.exe
Source: Altiris.NS.ResourceManagement.Database.DataLoaderSqlClientInserter.SetColumn
Description: SetColumn: Couldn't set [c23] to ().

( Exception Details: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Altiris.NS.ResourceManagement.Database.DataLoaderSqlClientInserter.SetColumn(String Name, String Value) )
( Exception logged from:
   at Altiris.Diagnostics.Logging.EventLog.ReportException(Int32 severity, String strMessage, String category, Exception exception)
   at Altiris.Diagnostics.Logging.EventLog.ReportException(String strMessage, String category, Exception exception)
   at Altiris.NS.Logging.EventLog.ReportException(String strMessage, Exception exception)
   at Altiris.NS.ResourceManagement.Database.DataLoaderSqlClientInserter.SetColumn(String Name, String Value)
   at Altiris.NS.ResourceManagement.Database.SetColumnCommand.Execute(IDataLoaderInserter inserter)
   at Altiris.NS.ResourceManagement.Database.SqlClientInserter.CommitAll()
   at Altiris.NS.ResourceManagement.Database.SqlClientInserter.CommitBatch()
   at Altiris.NS.ResourceManagement.DataClassRowCollection.InternalTableInserterImpl(IDataLoaderConnection connection, Hashtable resourceDLInfoHT, TargetTable targetTable, String strInserterTable, DataClass dataClass, DataClassRows dataClassRows)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.InternalTableInserter(IDataLoaderConnection connection, Hashtable resourceDLInfoHT, TargetTable targetTable, String strInserterTable, DataClass dataClass, DataClassRows dataClassRows)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.UpdateDataClass_Impl(DataClass dataClass, DataClassRows rows, Hashtable resourceDLInfoHT, Boolean HistoryEnabled, Hashtable resourceGuidToResourceTypeGuid, IDataLoaderConnection connection)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.<>c__DisplayClassa.<UpdateDataClass>b__6(IDatabaseContext context)
   at Altiris.Database.DatabaseContext`1.PerformWithDeadlockRetryHelper(Int32 retries, Boolean inTransaction, Getter`1 getContext, Action`1 action, Action`1 retry)
   at Altiris.Database.DatabaseContext`1.PerformWithDeadlockRetry(Int32 retries, Boolean startNewTransaction, IsolationLevel isolationLevel, Boolean independentContext, Action`1 action, Action`1 retry)
   at Altiris.Database.DatabaseContext`1.PerformWithDeadlockRetry(Int32 retries, Boolean startNewTransaction, Action`1 action, Action`1 retry)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.UpdateDataClass(DataClass dataClass, DataClassRows rows, Hashtable resourceDLInfoHT, Boolean HistoryEnabled, Hashtable resourceGuidToResourceTypeGuid, IDataLoaderConnection connection)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.CommitData_Impl(IDataLoaderConnection connection)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.DefaultCommit(Object sender, ICommitEventArgs commitArgs)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.OnCommitHandler(DCCommitEventArgs commitArgs)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.<>c__DisplayClass4.<CommitData>b__0(IDatabaseContext context)
   at Altiris.Database.DatabaseContext`1.PerformWithDeadlockRetryHelper(Int32 retries, Boolean inTransaction, Getter`1 getContext, Action`1 action, Action`1 retry)
   at Altiris.Database.DatabaseContext`1.PerformWithDeadlockRetry(Int32 retries, Boolean startNewTransaction, IsolationLevel isolationLevel, Boolean independentContext, Action`1 action, Action`1 retry)
   at Altiris.Database.DatabaseContext`1.PerformWithDeadlockRetry(Int32 retries, Boolean startNewTransaction, Action`1 action, Action`1 retry)
   at Altiris.NS.ResourceManagement.DataClassRowCollection.CommitData(IDataLoaderConnection connection)
   at Altiris.NS.ResourceManagement.DataClassImporter.CommitData(DataClassRowCollection rows)
   at Altiris.NS.ResourceManagement.DataClassImporter.ProcessData(DataClass dataClass, XmlReader reader, Guid resourceGuidOverride, ProcessingDirective processingDirective)
   at Altiris.NS.ResourceManagement.DataClassImporter.LoadInventory_Impl(XmlReader reader, Boolean bProcessData, Boolean bForceSchemaValidation, Guid resourceGuidOverride)
   at Altiris.NS.ResourceManagement.DataClassImporter.LoadInventory(Guid resourceGuid, XmlReader reader)
   at Altiris.NS.StandardItems.Messaging.InventoryCaptureItem.OnMessage_Impl(String message, Boolean useFilename)
   at Altiris.NS.StandardItems.Messaging.InventoryCaptureItem.OnMessageInternal(String message, Boolean useFilename)
   at Altiris.NS.StandardItems.Messaging.InventoryCaptureItem.OnFHMessage(String path)
   at Altiris.NS.LegacyInterop.ItemMessageDispatcherService.Dispatch(String message, Boolean useFilename)
   at Altiris.NS.LegacyInterop.ItemMessageDispatcherService.DispatchFile(String path)
   at Altiris.NS.ClientMessaging.FileDispatcher.ProcessFileCallback(Object state)
   at Altiris.Common.Threading.LocalThreadPool.ExecuteUserWorkItem(UserWorkItem workItem)
   at Altiris.NS.Threading.NSThreadPool.ExecuteUserWorkItem(UserWorkItem workItem)
   at Altiris.Common.Threading.LocalThreadPool.ExecuteUserWorkItemInContext(UserWorkItem workItem)
   at Altiris.Common.Threading.LocalThreadPool.ThreadPoolProc(Object threadStartParameter)
   at System.Threading.ThreadHelper.ThreadStart(Object obj)
 )
( Extra Details:  Type=System.Collections.Generic.KeyNotFoundException Src=mscorlib )
__
Module: AeXSVC.exe
Source: DataClassRowCollection.InternalTableInserter
Description: Failed on first attempt to commit fast insert for data class : AeX AC Identification (c74002b6-c7b9-47bb-a5d6-3031af73bb8d) . Trying again.
__
Module: AeXSVC.exe
Source: DataClassRowCollection.InternalTableInserter
Description: Bad dataloader data : A 'Replace row (rRow)' has been ignored due to missing non-null fields for data class Inv_AeX_AC_Identification (c74002b6-c7b9-47bb-a5d6-3031af73bb8d) and resource f8f36d93-895a-4873-bfa6-a54d92edda82

Cause

The schema for the AeX AC Identification data class was not created properly. In this case, the 'Hardware Serial Number' column, C23, is missing.

Resolution

1. Check for the existence of the “Hardware Serial Number” entry in the ‘AeX AC Identification’ section of the following file:

 

      C:\Program Files\Altiris\Notification Server\Config\CoreDataClasses.config.

2. If the entry exists, open the Symantec Management Console, and browse to Settings > Notification Server > Database Settings
3. Under the Database Name, select the appropriate existing database.
4. Click Reconfigure Database.

If the above does not resolve the issue, it may be possible to make manual changes, as described here:

1. Create the "Hardware Serial Number" column in AeX AC Identification manually (used CoreDataClasses.config as a reference)
2.  Update the "DataLoaderTemplateInfo" table by adding, [Hardware Serial Number] nvarchar (64) null to the "DataloaderTemplateTableSyntax" field for the "AeX AC Identification" table.
3.  Insert the "Hardware Serial Number" attribute information into the "DataClassAttribute" table.
Ensure that the DataClassAttribute.[InvClassId] is the same as DataClass.[id]
4.  Restart the Altiris Service
5.  Send basic inventory from a Windows box and/or from a Linux box.
6. Validate that no errors occur by checking the log files/logviewer and that data is present by checking the Resource Manager for the appropriate clients or checking appropriate reports.

 

NOTE:: You may have to clear the DataHash for the Basic Inventory tables in order to get the basic Inventory to populate the DB tables. In at least one case, the above changes were made and the Basic Inventory was not committed to the DB- the only way to get the information to commit was by clearing the datahashes.

 

Applies To

Symantec Management Platform (Notification Server) 7.x.