Database Corruption In SQL Server – How to Fix?
While searching, I got a very good question How SQL Server database corruption occur? And How to repair corrupted database in SQL Server? As “We are planning and storing our valuable data in SQL database. All of a sudden we found that SQL Server database corrupted and all our data get inaccessible, is there anything we should do to resolve SQL database corruption or is there any other way that can help to repair corrupt SQL Server database.”
What to Check When a Database Corruption Occurs in SQL Server?
There aren’t that many potential issues to be watching out for, though there are things you should check whenever a SQL Server database corruption occurs. MS SQL is Microsoft’s developed relational database management system. It is one of the most globally used relational databases to store and manage information.
Database corruption in SQL Server is like a nightmare. And when it comes down to store the information in MS SQL then there are only two crucial things that DBAs worry about: making data available to the authorized person and making sure data is inaccessible to an unauthorized person.
All other issues are just appendages to these two situations because if one unable to access stored data on time or correctly, then it’s really not available to them. Let us discuss how SQL Server 2016 / 2014 / 2012 / 2008r2 / 2008 /2005 / 2000 store it’s data within database file.
Where the Database Corruption Occurs in SQL Server?
No matter which SQL Server Version we are using (SQL Server 2000 / 2005 / 2008 / 2012 / 2014 / 2016) all these versions store database in the same file format. Below take a view of these file formats:
- MDF file: This is primary data file called master database file created when we create a database using create command with .mdf extension. It contains schema with data.
- NDF file: This is a secondary data file as it is an optional and user defined file to grow or expand the database size. The user can have more than one .ndf files for a single database.
- LDF file: It is called log data file. LDF is a most integral file of every SQL Server database. All the transaction performed are stored within transaction log .ldf file.
How Database Corruption Occurs in SQL Server?
There are several reasons due to which Microsoft SQL database get damaged or corrupted. But, in most of the cases, SQL Server database corruption occurs due to problems at the Input/Output subsystem level i.e failure or misbehaving of drivers, drives, and controllers. And any specific root cause can vary widely depends on the particular situations. Let’s know few more:
- Hardware failure occur
- SQL Server database misbehaving due to any bug in itself
- Brusque system shutdown while working on MS SQL
- Virus Injection or any Malware
- Upgrading MS SQL may also result in database corruption in SQL Server
- Interruption while attaching/detaching SQL MDF file
How to Respond SQL Server Database Corruption?
Whenever database corruption in SQL Server database encountered, the user should perform a tangible order of steps to both decrease the chances of data loss and decrease downtime while curing the situations. As it is said, all types corruption are not created similarly and also, varies in potential impact. Let’s take examples:
- SQL Page Corruption: Database corruption can occur in SQL Server pages that stores the actual information of data. These are needed to keep database running and storing data smoothly.
- Index Corruption: Indexes helps in accessing SQL Server database data from the table quickly. Corruption may occur in an index or other structure.
- Corruption in Key Pages: Pages that are similar to file header and used to map where data is, indexes or other main structure within the database. These type of corruption are highly harmful and considered as FATAL Error.
Outlines Considered in SQL Database Corruption Repair
The Key point that one should consider in order to work and minimize the scope and downtime related to repair corrupt SQL Server database from corruption.
- Rebooting SQL Server Database: Rebooting never repair corrupt SQL database. Instead of resolving this may make the situation worse. As this will take SQL Server offline and resulting to go database in suspect mode.
- Detach / Reattach Database: This is also the worst practice like the above one. Detaching and attaching a corrupt SQL Database may make the corruption recovery tougher.
- Identify reason of corruption before applying SQL Server database corruption repair: While getting SQL Server I/O error (823, 824, 825), immediately run “DBCC CHECKDB ([DBName]) WITH NO_INFOMSGS, ALL_ERRORMSGS” to see the actual problem. Or any other error occurs while taking backup or while performing the regular check, make sure to evaluate the error messages and save database at the safe location.
- Re-Running DBCC CHECKDB in the case of minor corruption: Yes, you are hearing correctly, in some rare cases when the minor bit of corruption occur running DBCC CHECKDB again may resolve the corruption. Because SQL Server wrote at any bad spot and when DBCC CHECKDB re-run it change the location and was able to recover SQL Server database from corruption.
- Try Repair Options in a test environment: Never ever try to validate any repair option on actual corrupted SQL Server database file. Always make a copy of database file and try all your repair and recover option there. Yes, probably it will take longer time but it’s good then executing directly to production data. Because if any thing gets wrong in production data you have to suffer a lot and probably this will take more time than the earlier.
- Using DBCC CHECKDB() with REPAIR_REBUILD: Executing DBCC CHECKDB() with REPAIR_REBUILD may be viable to repair corrupt SQL database data when corruption is minor. Safe option to repair without any data loss.
- Run Full Recovery: If a large number of corrupted/suspect pages are found or if key pages destroyed then there is none other option then executing full recovery with the recent backup available. Before doing so make sure that you have done tail-end backup of the recent transactional log.
- USING REPAIR_ALLOW_DATA_LOSS: Generally, this command is never recommended to repair corrupt SQL Server database because using this definitely result in loss of data. Once the command executed, you have no other option left to undoing the loss caused.
Another option that a user can use SQL Database Repair Tool to have an effortless and quick solution to fix database corruption in SQL Server. It helps users in removing almost all types of corruption and repair corrupt SQL database without hampering the original data. Moreover, the utility is very safe-to-use as compared to the manual solution. Below we will discuss how to repair corrupted database in SQL Server with SQL repair tool.
Follow these procedure to repair corrupt SQL Server database:
- Step1: Install the utility to fix SQL database Corruption
- Step2: Browse and Select the corrupt SQL database file
- Step3: Click on Recover button to repair corrupted MDF file
- Step4: Export and Save the recovered SQL database
Long story short
By keeping a level head, and by understanding what’s going on due to which database corruption in SQL Server may occur and also by having regularly testing backups that you can fall back upon. Well, addressing problems of corruption can be scary and ugly but non-fatal. Above we have discussed corruption and how to repair corrupt SQL database file.