mdb database is set in read-only mode

Document ID : KB000101398
Last Modified Date : 13/06/2018
Show Technical Document Details
Issue:

Times to times mdb database is set in read only mode.

In SQL ErrorLog file following messages appear :
 
Could not open File Control Bank (FCB) for invalid file ID 0 in database 'tempdb'. Verify the file location. Execute DBCC CHECKDB. 
Setting database option READ_ONLY to ON for database mdb. 
Cause:

SQL Server has detected a problem in tempdb database and set the option READ_ONLY to ON on mdb database
tempdb corruption could be cause by a very high usage of it by ITCM.
Resolution:

Check following points :

- Scheduled reports are executed all the time by Engine.
Put a scheduling for scheduled report. Example "Run Only once a day" :
 
1-    Open ITCM reporter 
2-    Go under Scheduled reports and expand the report to update 
3-    Click on Scheduling and on Edit Scheduling 
4-    Click on button "Set Scheduling". then check in Conditions « Run Only once a … day”



- Dynamic Groups have no Engine and evaluation period specified. They are evaluated at the end of every execution of a Scalability Server Collect Job.
Update these groups in order to assign them and Engine and Period for the evaluation.

Execute following SQL Query using Microsoft SQL Server Management Studio in order to find the dynamic group without Engine and period specified :
 
use mdb
SELECT g.label GroupName, q.label QueryName, e.label EngineName, g.eval_freq
FROM ca_group_def g LEFT OUTER JOIN ca_engine e ON g.evaluation_uuid=e.engine_uuid, ca_query_def q
WHERE q.query_uuid=g.query_uuid and (g.evaluation_uuid is NULL or (g.evaluation_uuid is NOT NULL and g.eval_freq=0))
ORDER BY 3,1,2
 


- Query Based Policies have no Engine and evaluation period specified. They are evaluated at the end of every execution of a Scalability Server Collect Job.
Update these Query Based Policies in order to assign them and Engine and Period for the evaluation.

Execute following SQL Query using Microsoft SQL Server Management Studio in order to find the Policies to update :
 
SELECT g.polname PolicyName, q.label QueryName, e.label EngineName, g.eval_freq
FROM polidef g LEFT OUTER JOIN ca_engine e ON g.evaluation_uuid=e.engine_uuid, ca_query_def q
WHERE q.query_uuid=g.query_uuid and g.polid>0 and (evaluation_uuid is NULL or (evaluation_uuid is NOT NULL and eval_freq=0))
ORDER BY 3,1,2