• http://msdn.microsoft.com/en-us/library/ms188414.aspx

    One thing to keep in mind, after upgrade from SQL 2000 to SQL 2005 or SQL 2008, it is best to run the following:

    DBCC UPDATEUSAGE (0);

    GO

    this will prevent certain system functions and procedures (i.e. sys.spaceused or sysindexes) from returning an error.

    example: A user runs select * from sysindexes (which I know is legacy, but some of us still reference these as we are too lazy to update our code). The following error is returned...

    Attempting to reference database fragment 1 in database 'foo' which does not exist. Contact Technical Support.

    Now run the following against the database:

    1. dbcc checkdb to make sure you don't have a consistancy issue

    2. If dbcc checkdb returns an error indicating an allocation unit ID error, run dbcc updateusage(0)

    You may also find you get this same error on a database snapshot. I haven't found that there is anything you can really do since the DB Snapshot is read only. your best bet is to simply drop the database snapshot when you are done with it.