A little over 6 months ago I started an ASP.NET MVC project for a client. During the planning phase we evaluated several web hosting companies and in the end choose DiscountASP.NET. One of the reasons we selected DiscountASP.NET is the Control Panel API feature.
The DiscountASP.NET Control Panel API allows us to programmatically manage our web hosting account. For example, we can manage email accounts, check bandwidth usage, and etc. All of these management functions are nice, but the one API feature that interested us the most was the ability to automate backups of the Microsoft SQL Database.
Look, I think it is important to choose a web hosting service provider who is reliable. However, any system can fail and data can be lost. Therefore, it is more important to not only choose a company you can depend on, but to utilize every feature you can to protect yourself. For this project, the ability to automatically perform a nightly backup of the website data and then download the backup to local storage was another layer of protection from a total data loss scenario.
With a simple goal of automating the Microsoft SQL Database Backup process and downloading the files to local storage, I started thinking about the features this process would need. Here is what I came up with:
- Multiple Database Support - currently my client only has one hosted database, but I can see that changing in the future.
- Purge Old Backups - the option to remove backups from the local storage that are more than XX days old.
- Email Notification - the option to notify me if when a backup was performed and if the process was successful or failed.
Based on these criteria, I created the DASP SQL Backup application (DSB.Service.EXE) for performing automatic backups of a DiscountASP.NET MSSQL database. This application installs as a Windows Service and runs in the background without any user interface. Running the application as a service adds the ability to use the Windows Service Control Manager to Start, Stop, Pause, Resume, and Restart the application. In addition, there is no need to worry about restarting the application if the PC is rebooted, because the service can be set to automatically start on boot up.

The DSB.Service.EXE application records all events (success, failure, error) in the Windows Application Event Log with a Source of DASP SQL Backup. By recording events in the Windows Application Event Log, I can use the Windows Event Viewer to see what happened and when. I also don't have to worry about purging old events, because Windows can handle this automatically.

The DSB.Service.EXE application includes command line options for installing, uninstalling, starting, and stopping the service. Keep in mind that Administrative privileges are required to perform these commands.

All configuration settings are stored in two XML files: Databases.XML and DSB.Service.exe.config. At this point I did not create a user interface for modifying these files. This is something that I am considering for the future.
If you would like a copy of this application, you can download the latest version from http://pfsolutions-mi.com/Product/DASPSQLBackup. The following is a list of important notes:
- This application requires the Microsoft .NET Framework 4 Client Profile.
- You must enable the DiscountASP.NET Control Panel API.
- Be sure to read the README.TXT file for instructions on installing the service and how to modify the configuration files.
- I'd love to hear any feedback. What do you like, what do you not like, what kind of features would you like to see in future versions?
Links:
DiscountASP.NET
http://discountasp.net/
DiscountASP.NET Control Panel API
http://support.discountasp.net/KB/a176/control-panel-api.aspx
Microsoft .NET Framework 4 Client Profile
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5765d7a8-7722-4888-a970-ac39b33fd8ab