I was contacted by Stellar Info quite a while ago. They asked me to try out their software. I said yes, but I was really bad about getting it done.
Well, I finally got off my bottom and did the job. So, let’s talk about Stellar Repair for SQL Server.
Stellar Repair
Let’s start with the most important piece of information you need: it works.
The software itself is really simple to use and just does what you need, repairs your corrupted SQL Server instance. On that alone, I can recommend the tool.
However, there are a few gotchas I ran into along the way. Mostly, little stuff. It’s things a little polish in the UI and some clean up around language could help out. Don’t get me wrong, I’m happy with this software. It worked. It’s just how it works that we should talk about.
To start with, here is the startup splash screen:
Stellar Repair works off your MDF files. It has to have access to them and they can’t be locked, meaning, attached to an active instance of SQL Server. However, you don’t have to shut down your SQL Server instance to repair a database. If you can DETACH the database from the instance, you can do that instead of shutting down. Here’s where a little language change would come in handy. Give me both options. Don’t make me think the only thing that will work is shutting down SQL Server.
For testing, I corrupted databases using DBCC WRITEPAGE. Kids, don’t try this at home. I’m kidding, somewhat. Just, please, don’t ever run DBCC WRITEPAGE on your production systems unless your first name is Paul and your last name is Randal. However, if you want to reliably and quickly corrupt a database, WRITEPAGE is your friend.
Stellar Repair has two levels of scan, a fast one, and a thorough one. For my test databases, they ran about the same amount of time, but the thorough one spotted more subtle problems as I introduced them. The simplicity of the tool is really excellent.
In addition to repairing corruption successfully, the tool can also be used to recover deleted data (if you still have the log). That’s pretty cool and probably worth a license.
You have to navigate to the *.MDF file you wish to repair:
One issue I hit using the tool was when I had data files in a container, I couldn’t easily access them here. I had to either mount a storage location for the container or move the files out. Same thing happened when I tried to repair a database inside a container. It just couldn’t cope with the differences running locally vs. calling a Linux container.
However, when it running it all on Windows, it just worked like a toaster.
Select which scan works best. I’d start with the Standard Scan. It worked most of the time for me. I only had to go to the Advanced Scan once. After it runs, you’re presented with, basically, a recovered database:
Since you’re working with data files, not actual databases, you now have to “Save” the repaired and recovered *.MDF file.
As you can see, you can just export the data and database to CSV, HTML or XLS. Nice touch. However, most of us are just going to want to recreate that *.MDF file. You can also choose “Live database”. This means simply importing all the database objects and data that you repaired into a new database.
The only thing I didn’t care for here was when I went to create a new database, it didn’t let me pick the name. If I just let it run on the database ‘BurnItDown’, the recovered database was ‘Recovered_BurnItDown’.
See, I’m greedy. I love that you’ve given me the ability to repair databases, now I want to also be able to name them my way.
However, after filling everything out, I had a new database. Ta-da! Again, it just worked and worked easily and flawlessly.
I did hit snags doing this with a Linux container. Stellar Repair seems to need direct access to the file location.
Conclusion
My little snags aside, this is a great piece of software. It literally does what it says on the outside of the tin: repairs corrupted database and recovers deleted data.
That’s amazing and wonderful. Can we throw some polish in so it’s pretty and more clear? Sure. However, understand, that’s polish. The broad strokes are in place.
Nice tool Stellar Info. Thanks for your patience in how long it took me to try it out.
Great review Grant! Sounds like a very useful tool, but a bit scary. How do you know it did what you wanted it to do and what is it that you wanted it to do; i.e. What does “repair” mean in this context? I can “repair” with DBCC, so what’s different and how do I validate the outcome? After all, I can write something that runs a DBCC and allows data loss and then print “Successfully Repaired” (not saying they are doing this by any means), so as custodian of the data, how can I validate EXACTLY what they did to my database file with 100% certainty. Can I even validate it since it is modifying a data file without generating log?
No. It was stuff that DBCC wouldn’t have repaired w/o data loss. I was intentionally corrupting tables & clustered indexes. It has logs and will show what it did. I don’t disagree that it’s scary, but when you’re looking at complete loss, or this slightly scary solution…. Scary is WAY less so.
Yes, I guess “scary” is a relative term… As you well know 🙂 Very cool and thanks for introducing us to this cool tool!
I guess it was about two years ago, I was called by a company and they were saying they lost their core databases on the phone. Their backup plan was awful, hence it didn’t work. They had already downloaded Stellar’s app and tried it, when I got there, they said “we tried this piece of software and it didn’t work” and yes, it wasn’t repairing the corrupted databases. I copied the database data files somewhere else and opened them with a hex editor to ensure that the data was there, a decent amount of the initial block was full of zeroes. Stellar did not have any chance to repair such thing obviously.
Maybe Stellar better say that the problem was about the data files, not the app itself; it obviously can not repair a broken thing if it’s only consisting of zeroes/space. So less experienced end users wouldn’t think the app is crap, it’s not the app, it’s you!
Yeah, I’m pretty sure the tool doesn’t work miracles. There’s “repair” and there’s “bring back from the dead”. It does the former, not the latter.
Hi Grant. Does it matter if certain features are being used, such as: row versioning / snapshot isolation, compression, or encryption (row-level, TDE, or Always Encrypted)? I’m just curious if any of these would prevent recovery. Their site does mention that it handles Row and Page compression, but was curious if you observed it actually working as advertised.
Great question. I did have snapshot isolation enabled, so I’d say it doesn’t matter. Same goes with compression. Now, encryption, not a clue. That I didn’t think to try testing. Sorry.