Control Center Repository Synchronization Cursor Error

  • 7010633
  • 16-Aug-2012
  • 02-Apr-2013

Environment

NetIQ AppManager Enterprise 8.0.1
NetIQ AppManager Enterprise 8.0
NetIQ AppManager Enterprise 7.0.1

Situation

Please review the Cause and Resolution for this article if you receive any of the following Control Center Repository Synchronization Cursor Errors:
In the AppManager 7.0.x Control Center Console, you receive the following Cache Manager error:
Cache manager is not responding
In the ..\NetIQ\Temp\NetIQ_Debug\CC_CQSTrace\SyncQDBLog.log:
[EXCEPTION] [Assembly=NQSyncQDB; Method=NetIQ.Utils.TraceEx.WriteSQLException ThreadID=16]
 Message=A cursor with the name 'QDBObject_Delcursor' does not exist.
 Source=.Net SqlClient Data Provider
 StackTrace=   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at NetIQ.CQS.NQSyncQDB.SyncThread.Start()
Line Number: 46 : Message A cursor with the name 'QDBObject_Delcursor' does not exist. : Procedure SyncQDBObjectDeleteIncr
In the AppManager 8.0.x Control Center Console, the following Repository Synchronization error:
[SQL COMMAND: EXEC dbo.SyncQDBObjectContent N'Server.qdb'] A cursor with the name 'QDBOject_Delcursor' does not exist. (SQL serverity 16).
In the ..\NetIQ\Temp\NetIQ_Debug\CC_CQSTrace\CQSLog.log:
[EXCEPTION] [Assembly=NQCQS; Method=NetIQ.CQS.CQSService.ExceptionHandling ThreadID=39]
 Message=A cursor with the name 'QDBObject_Delcursor' does not exist.
 Source=.Net SqlClient Data Provider
 StackTrace=   at NetIQ.ControlCenter.NQSQLCommandBase.Execute()
   at NetIQ.CQS.SyncThread.RunCommand(String command, Int32 commandID)
[MESSAGE] [Assembly=NQCQS; Method=NetIQ.CQS.CQSService.WriteEventLog ThreadID=39] : A cursor with the name 'QDBObject_Delcursor' does not exist., Error type = 'Error', event ID = '999'

Resolution

Using SQL Server Management Studio, access the properties of the NQCCDB and select the Options page.  Under Cursor -> Default Cursor, change the value to "Global".

Cause

By default the NQCCDB Default Cursor value is set to“GLOBAL”. If the setting is changed to “LOCAL” the repository synchronization will not work for several processess. We use dynamic SQL to be able to fetch data through the linked server. In some cases the cursor is defined inside the dynamic SQL. If this setting is changed from the DEFAULT of “Global” to “Local” then a cursor defined in this way is only available for execution inside the dynamic SQL, not after the SQL has been executed.