Problem
Attempting to Mark items in the Enterprise Vault (EV) Compliance Accelerator (CA) or Discovery Accelerator (DA) Review Set fails and does not Mark any items. The Marking action does not Mark the item, the selection does not move to the next item and the History tab of the item does not show the Mark. Selecting any of the available Marks (Pending, Questioned, Reviewed Irrelevant, Reviewed Relevant for CA; No Mark, Relevant, Query, Not Relevant for DA) does not change the behaviour
There are no errors displayed in the Review Set. The Enterprise Vault Event Logs on the Accelerator server list the Event ID as below. Additionally, a DTrace of the AcceleratorService process lists entries similar to those listed below.
Error Message
Enterprise Vault Event Log Entry:
Log Name: Veritas Enterprise Vault
Source: Accelerator Service Processor
Event ID: 185
Level: Error
Description:
APP AS - Customer ID: X - An Error has occured when updating a marking item. System.Data.SqlClient.SqlException (0x80131904): Cannot use the ROW granularity hint on the table "dbo.tblIntDiscoveredItems" because locking at the specified granularity is inhibited.
at Symantec.EnterpriseVault.DatabaseAccess.EVSqlBase.Do[T](Func`1 action)
at Symantec.EnterpriseVault.DatabaseAccess.EVSqlDataAdapter.Update(DataSet dataSet)
at KVS.Accelerator.Common.TraceDLCommand.Update(IEVDbDataAdapter adapter, DataSet ds, Boolean RetryDLs)
at KVS.Accelerator.Items.DiscoveryItems.UpdateDS(DiscoveryItemDS DS)
ClientConnectionId:1234ABCD-12AB-34CD-56EF-123456ABCDEF
Error Number:651,State:1,Class:16
V-437-185
DTrace entries:
[1234] (AcceleratorService) <5678> EV-L {EVSqlBase.ShouldExcludeSqlException} Error 'Cannot use the ROW granularity hint on the table "dbo.tblIntDiscoveredItems" because locking at the specified granularity is inhibited.' is not transient. 'EVSqlDataAdapter:
Select: EVSqlCommand: DB: server=<SQL_server_name>;Initial Catalog=<Accelerator_Customer_database_name>;Integrated Security=true;Connection TimeOut=500;Connection LifeTime=200;Max Pool Size=300;Application Name=Compliance Accelerator - Command: [usp_DiscoveryItems_Sel] |
Update: EVSqlCommand: DB: server=<SQL_server_name>;Initial Catalog=<Accelerator_Customer_database_name>;Integrated Security=true;Connection TimeOut=500;Connection LifeTime=200;Max Pool Size=300;Application Name=Compliance Accelerator - Command: [usp_DiscoveredItem_Upd] |
Delete: <none>
Insert: <none>' will not be retried
[1234] (AcceleratorService) <5678> EV-L {EVSqlBase.ShouldRetry} Error 'Cannot use the ROW granularity hint on the table "dbo.tblIntDiscoveredItems" because locking at the specified granularity is inhibited.' is excluded. 'EVSqlDataAdapter:
Select: EVSqlCommand: DB: server=<SQL_server_name>;Initial Catalog=<Accelerator_Customer_database_name>;Integrated Security=true;Connection TimeOut=500;Connection LifeTime=200;Max Pool Size=300;Application Name=Compliance Accelerator - Command: [usp_DiscoveryItems_Sel] |
Update: EVSqlCommand: DB: server=<SQL_server_name>;Initial Catalog=<Accelerator_Customer_database_name>;Integrated Security=true;Connection TimeOut=500;Connection LifeTime=200;Max Pool Size=300;Application Name=Compliance Accelerator - Command: [usp_DiscoveredItem_Upd] |
Delete: <none>
Insert: <none>' will not be retried
[1234] (AcceleratorService) <5678> EV-H {EVSqlBase.LogFailureAndThrow} Failed to execute 'EVSqlDataAdapter:
Select: EVSqlCommand: DB: server=<SQL_server_name>;Initial Catalog=<Accelerator_Customer_database_name>;Integrated Security=true;Connection TimeOut=500;Connection LifeTime=200;Max Pool Size=300;Application Name=Compliance Accelerator - Command: [usp_DiscoveryItems_Sel] |
Update: EVSqlCommand: DB: server=<SQL_server_name>;Initial Catalog=<Accelerator_Customer_database_name>;Integrated Security=true;Connection TimeOut=500;Connection LifeTime=200;Max Pool Size=300;Application Name=Compliance Accelerator - Command: [usp_DiscoveredItem_Upd] |
Delete: <none>
Insert: <none>' - This command was not retried - Error Error Code: 651 / 80131904 - Severity 16 - Cannot use the ROW granularity hint on the table "dbo.tblIntDiscoveredItems" because locking at the specified granularity is inhibited.
[1234] (AcceleratorService) <5678> EV-H {-} Exception: Error Items_UpdateMarkingError
Info:{AcceleratorEvent} {CX} An Error has occured when updating a marking item.
System.Data.SqlClient.SqlException (0x80131904): Cannot use the ROW granularity hint on the table "dbo.tblIntDiscoveredItems" because locking at the specified granularity is inhibited.
| at Symantec.EnterpriseVault.DatabaseAccess.EVSqlBase.Do[T](Func`1 action)
| at Symantec.EnterpriseVault.DatabaseAccess.EVSqlDataAdapter.Update(DataSet dataSet)
| at KVS.Accelerator.Common.TraceDLCommand.Update(IEVDbDataAdapter adapter, DataSet ds, Boolean RetryDLs)
| at KVS.Accelerator.Items.DiscoveryItems.UpdateDS(DiscoveryItemDS DS)
|ClientConnectionId:1234ABCD-12AB-34CD-56EF-123456ABCDEF
|Error Number:651,State:1,Class:16
Diag: Type:System.Exception
ST: Inner:None
[1234] (AcceleratorService) <5678> EV-H {RBO_Items} Exception: Cannot use the ROW granularity hint on the table "dbo.tblIntDiscoveredItems" because locking at the specified granularity is inhibited.
Info:{CX} RBO method failed
Diag:Num:651 State:1 Sev:16
Svr:<SQL_server_name>
Proc: Line:1
Type:System.Data.SqlClient.SqlException
ST:
at KVS.Accelerator.Items.DiscoveryItems.UpdateDS(DiscoveryItemDS DS)
| at KVS.Accelerator.RBO.RBO_Items.UpdateItem(Int32 proxyID, Int32 itemSetID, DiscoveryItemDS itemDS, ItemTagOperationCollection tagOps, ItemTagsDS& itemTagsDS)
Inner:None
Cause
The issue is rarely seen and is caused by an incorrect setting within an index associated to the table in the SQL Customer database that houses the items' information. The incorrect setting prevents the row containing the item's information from being locked so as to apply the Mark, thus preventing the item's information from being updated.
The affected index is typically the primary key index associated with the table. This can be confirmed by running the following query against the Customer database and viewing the results which should list the affected indices:
SELECT [Database] = db_name(), *
FROM sys.indexes
WHERE allow_row_locks = 0
ORDER BY name, object_id, index_id;
Solution
The issue can be resolved with technical support's assistance. First obtain the results of the above query and save the results to file:
1. Run the above query against the Customer database.
2. Right-click in the results | Select All | Right-click in the results again | Copy With Headers | Paste into a new spreadsheet in Excel.
Then contact technical support and provide the file for analysis.