Trying to compact/repair my database but I keep getting this message: "Records cannot be read; no read permission on 'MSysAccessStorage'

Anonymous
2010-05-06T15:46:13+00:00

Trying to compact/repair my database but I keep getting this message: "Records cannot be read; no read permission on 'MSysAccessStorage'

Microsoft 365 and Office | Access | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments
Answer accepted by question author
Anonymous
2010-05-06T18:33:04+00:00

This message typically indicates that there is some form of corruption that has been introduced into your database.

Before attempting any troubleshooting, please make a back up copy of your database.

Are you able to open the database?

Are you able to create a new blank database and then import the objects into the new container?

Steps in case you're unfamiliar with this process:

1.  In Access 2007, create a new Access database. 

2.  Click the External Data tab, and then click Access in the Import group. 

3.  In the Get External Data – Access Database dialog box, click Browse to select the Microsoft Office Access 2007 database (.accdb) or (.mdb), click Open, and then click OK . 

4.  In the Import Objects dialog box, select the objects that you want to import, and then click OK (in this case, tab through each object typ doing a select ALL for each). 

5.  Once all objects are selected, click ok and the database objects should import/copy into the new database container.

Please let us know if this step does not work. If you are able to open the corrupt database, there are a couple of other steps we could try.

Hope this helps!

Kathy

Was this answer helpful?

0 comments No comments

10 additional answers

Sort by: Most helpful
  1. Anonymous
    2013-09-18T15:12:11+00:00

    Thank you. I can't import anything. I just get the read permission error when I try to open or import from the db.

    Received this error after following your directions:

    Error 3078: The Microsoft Access database engine cannot find the input table or query 'MSysAccessObjects'. Make sure it exists and that its name is spelled correctly.

    Your help is much appreciated.

    Was this answer helpful?

    0 comments No comments
  2. Anonymous
    2013-09-18T14:58:03+00:00

    Getting same error. Unable to import. Please help.

    Try importing just the tables. Make sure you are not importing any table that starts with MSys. Those are system tables and they will be created automatically in the new database.

    If you can import the tables start importing everything, one type at a time like all forms then compact; all queries then compact, etc.

    If that doesn't work make a copy of your corrupt database. Open a new database and create a new module. Paste this code in the new module and save it:

    Sub FixBadAOIndex(BadDBPath As String, Optional Password As String)

    'Purpose  : Fix db with corrupt AOIndex.

    'DateTime : Unknown

    'Author   : Dirk Goldgar

    'Requires : DAO

        On Error GoTo Err_Handler

        Dim dbBad As DAO.Database

        Dim tdf As DAO.TableDef

        Dim ix As DAO.Index

        Set dbBad = DBEngine.OpenDatabase(BadDBPath, False, False, "MS Access;PWD=" & Password)

        dbBad.Execute _

            "DELETE FROM MSysAccessObjects WHERE ([ID] Is Null) OR ([Data] Is Null)", _

            dbFailOnError

        Set tdf = dbBad.TableDefs("MSysAccessObjects")

        Set ix = tdf.CreateIndex("AOIndex")

        With ix

            .Fields.Append .CreateField("ID")

            .Primary = True

            .Unique = True

            .IgnoreNulls = False

        End With

        tdf.Indexes.Append ix

        Set tdf = Nothing

        dbBad.Close

        Set dbBad = Nothing

        MsgBox _

            "The repair operation completed successfully. Please note: " & _

                "that doesn't necessarily mean your database has been totally " & _

                "repaired. Please open your database now to see if it worked. " & _

                "Sometimes it does and sometimes it doesn't.  Good luck!", _

            vbInformation, _

            "Repair Attempt Complete"

    Exit_Point:

        Exit Sub

    Err_Handler:

        MsgBox _

            "Sorry, I was unable to repair your database. " & _

                "The following error occurred:" & vbCr & vbCr & _

                "Error " & Err.Number & ": " & Err.Description, _

            vbExclamation, _

            "Unable to Repair"

        Resume Exit_Point

    End Sub

    Then press Ctrl+G to open the Immediate window. Type this including the full path to your corrupt db in the immediate window and press Enter to run it.

    FixBadAOIndex "C:\Databases\MyDatabase.accdb"

    Change the path to fit your db's location.

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2013-09-18T14:46:01+00:00

    Getting same error. Unable to import. Please help.

    Was this answer helpful?

    0 comments No comments
  4. Anonymous
    2013-02-27T21:01:59+00:00

    I received the same error after step 3.  What alternate steps do you recommend?

    Thanks.

    Was this answer helpful?

    0 comments No comments