Summary: SQL Database corruption can be a nightmare for any organization, especially for the DBA who has to fix it and revive the data on the server. Understanding the database, knowing about corruption causes and staying aware of handy solutions is the only way to keep afloat.
If you are a database administrator, you know you are expected to detect database errors in time and fix them before they cause any loss of data. Database corruption errors might not occur all the time, but when they do, they take down a lot with them. Sadly, there is not much you can do to prevent database corruption altogether. It is one of those random things that just happen. However, the number of times database corruption occurs is quite a few. Therefore, one thing to keep in mind if you are observing these problems too often would be to start planning the migration of all your critical data to new hardware. After all, prevention is better than cure, isn't it? Additionally, keep yourself updated with knowledge of techniques to repair SQL database corruption. You might also want to keep out an open eye for server recovery products and services. That’s exactly what we’re covering in this post.
Understanding & Undertaking SQL Server Corruption Repair
The topological structure of the database is referred to as the logical consistency of the data within it. With logical consistency, the database is able to allocate spatial elements to data without any contradiction. The logical consistency is translated into rows and columns, with each cell in the table storing individual data entities. This translation refers to the physical consistency in a database. The harmonious relationship of logical and physical consistency of a database translates into data integrity: clean, uncorrupted data for an entire life cycle; a DBA's dream.
The crucial DBCC CHECKDB command
As a DBA, if you come across the unfortunate event of SQL database corruption, it is essential to know that there’s a lot you can do to try and revive the server database. The primary command that can help you with this is DBCC CHECKDB. The DBCC CHECKDB command paired with useful switches helps execute a number of in-built repair routines to identify and fix minor issues within the database. If the problem holding up your SQL server’s working is a minute one, DBCC CHECKDB can fix it with ease. And it usually achieves this through a combination of the below mentioned tasks:
- Runs DBCC CHECKALLOC on the database
- Runs DBCC CHECKTABLE on every table and view in the database
- Runs DBCC CHECKCATALOG on the database
- Validates the contents of every indexed view in the database
- Validates link-level consistency between table metadata and file system directories and files when storing var-binary (max) data in the file system using FILESTREAM
- Validates the Service Broker data in the database
DBCC CHECKDB Switches
Much of the DBCC CHECKDB command’s power comes from the switches that are used in conjunction with it. These switches amplify its power and help it repair SQL database corruption efficiently. Out of all DBCC CHECKDB switches, the following 3 play a vital role in SQL server corruption repair.
ALL_ERRORMSGS
This argument of the DBCC CHECKDB command lists all the error messages of each object in the database and sorts them by their object ID. You can use it to view all errors in the database and then eliminate those errors one by one.
Note: The ALL_ERRORMSGS argument does not sort errors of objects in the tempdb database.
EXTENDED_LOGICAL_CHECKS
If you are unable to pin down the error, use the EXTENDED_LOGICAL_CHECKS argument with the DBCC CHECKDB command. This command performs logical consistency checks on an indexed view, XML indexes, and spatial indexes, if the compatibility level is 100 ( SQL Server 2008) or higher.
DATA_PURITY
There are some columns in your database that are different from the rest of the columns in terms of validity and range. While column-value integrity checks do not perform this data discrimination, keep in mind that if your database has been upgraded from an earlier version, it is best to run the DATA_PURITY argument with your DBCC_CHECKDB command. The good news is: you only have to run this command once. The next time you run the DBCC_CHECKDB command, all your data will be saved from discrimination.
In addition to the above three PHYSICAL_ONLY, REPAIR_REBUILD, and REPAIR_ALLOW_DATA_LOSS are also powerful switches that perform dedicated tasks and help DBCC CHECKDB command execute repair operations successfully.
What to do if DBCC CHECKDB can’t repair SQL Database Corruption?
In case running the DBCC CHECKDB command becomes futile, you can depend on reliable third party SQL database repair tool to fix SQL database corruption. This powerful software performs an excellent job of repairing not just minor, but also major corruption within SQL database and helps you recover all database components safely and accurately.
A few last words of advice
With these tips and tricks in mind, the next time your database faces a corruption issue, you will know how to protect as much of your data as you can. Better still, we hope that you never have to deal with a data corruption issue. To always be on the safer side, keep backing up your database regularly.