SQL Server Database BackUp using C#
SQL Server Management Objects (SMO) is a collection of objects that are designed for programming all aspects of managing Microsoft SQL Server.
For taking the database backup using C#, you have to add the following references in your application-
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SmoExtended
Microsoft.SqlServer.SqlEnum
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SmoExtended
Microsoft.SqlServer.SqlEnum
In your .CS file you will have to use the following namespaces-
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
After using above namespaces, write the following code to take the database backup-
public void
BackupDatabase(string databaseName, string userName, string
password, string serverName, string destinationPath)
        {
            //Define a Backup object variable.
            Backup sqlBackup = new
Backup();
            //Specify the type of backup, the description, the name,
and the database to be backed up.
           
sqlBackup.Action = BackupActionType.Database;
           
sqlBackup.BackupSetDescription = "BackUp
of:" + databaseName + "on"
+ DateTime.Now.ToShortDateString();
           
sqlBackup.BackupSetName = "FullBackUp";
           
sqlBackup.Database = databaseName;
            //Declare a BackupDeviceItem
            BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath
+ "FullBackUp.bak", DeviceType.File);
            //Define Server connection
            ServerConnection connection = new ServerConnection(serverName,
userName, password);
            //To Avoid TimeOut Exception
            Server sqlServer = new
Server(connection);
           
sqlServer.ConnectionContext.StatementTimeout = 60 * 60;
            Database db = sqlServer.Databases[databaseName];
           
sqlBackup.Initialize = true;
           
sqlBackup.Checksum = true;
           
sqlBackup.ContinueAfterError = true;
            //Add the device to the Backup object.
           
sqlBackup.Devices.Add(deviceItem);
            //Set the Incremental property to False to specify that this
is a full database backup.
           
sqlBackup.Incremental = false;
           
sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
            //Specify that the log must be truncated after the backup
is complete.
           
sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;
           
sqlBackup.FormatMedia = false;
            //Run SqlBackup to perform the full database backup on the
instance of SQL Server.
           
sqlBackup.SqlBackup(sqlServer);
            //Remove the
backup device from the Backup object.
           
sqlBackup.Devices.Remove(deviceItem);
        }
 //In case of any error:
 /*
 for eg. "Backup failed" then try to add "SQLServer2005MSSQLUser$MYSERVERNAME$MSSQLSERVER"  permit on group or 
users (Security tab) on the destination folder
 */







0 comments:
Post a Comment