Error 3908

Severity

16

Message text

Attempt to BEGIN TRANsaction in database ’%.*s’ failed because database is in BYPASS RECOVERY mode.

Explanation

Adaptive Server can start various types of transactions such as local (in response to a local command), internal (for the server’s own use), external (started by an external client like a TP Monitor) and subordinate (child transactions started by a parent transaction in parallel).

Bypass recovery starts Adaptive Server without recovering one or more databases. A database in this mode can be accessed even though it is not recovered. Use this mode to allow access to the database for problem analysis, to copy out data, and so on.

Error 3908 is raised when a transaction is attempted while the database is in bypass recovery. Although certain commands are permissible in this mode, no transactions—regardless of type—can be started when the database is in bypass recovery.

Error 3908 is raised with the following states:

State

Meaning

1

Attempted to start a transaction when the database is not available for update. Applies to all possible transaction types.

2

Attempted to start a subordinate transaction when the database is not available for update.

Action

Do not attempt to start a transaction while the database is in bypass recovery. Check if any automated jobs have submitted a batch job that attempted such a transaction. First restore the database to the original working status it had (prior to bypass status) before attempting any transactions.

Use the following steps to reset the database status:

NoteAlthough a status of zero is usually appropriate, it is not the only possible status value you can use. Reset the database to the actual, normal status it had prior to entering bypass recovery status.

  1. Reset the database status to 0:

    1> sp_configure "allow updates", 1
    2> go
    
    1> begin tran
    2> go
    
    1> use master
    2> go
    
    1> update sysdatabases set status=0 
    2> where name=<database_name>
    3> go
    

    Verify that the above update command affected only one row (if more than one row was affected, issue a rollback transaction), then commit the transaction and shut down Adaptive Server:

    1> commit tran
    2> go
    
    1> shutdown with nowait
    2> go
    
  2. Restart Adaptive Server. Run dbcc checkdb and dbcc checkalloc on the affected database to make sure there are no errors.

Versions in which this error is raised

All versions