Backup and recovery of databases

xiaoxiao2021-03-06  17

1. First join the SQL Server Management Object Interop.sqldMo.dll in the project (it is a COM component, the name is Microsoft SqldMo Object Library)

2. Create a class for it to implement two methods (backup and recovery)

Using system;

Namespace MaxClient {///

/// Database Backup and Recovery

///

Public Class Dboperater

{

Public dboperater ()

{

//

// TODO: Add constructor logic here

//

}

///

/// database backup

///

Public Static String Dbckup (String Servername, String Username, String Password, String Dbname, String Backupdbname, String Topath)

{

SqldMo.backup Obackup = new sqldmo.backupClass ();

Sqldmo.sqlserver osqlserver = new sqldmo.sqlserverclass ();

Try

{

OSQLServer.loginsecure = false;

OSQLServer.connect (ServerName, Username, Password);

Obackup.action = SqldMo.sqldMo_Backup_type.sqldmobackup_database;

OBACKUP.DATABASE = DBNAME;

OBACKUP.FILES = @ Topath Backupdbname ". Bak";

OBACKUP.BACKUPSETNAME = backupdbname;

OBACKUP.BACKUPSETDESCRIPTION = "Database Backup";

OBACKUP.INITIALIZE = True;

Obackup.sqlbackup (OSQLServer);

Return "Database has been successfully backed up to [" Obackup.files "]";

}

Catch (Exception EX)

{

Throw New Exception ("Database Backup Fails:" EX.MESSAGE);

}

Finally

{

OSQLServer.disconnect ();

}

}

///

/// Database Recovery

///

Public Static String Dbrestore (String ServerName, String Username, String Password, String Dbname, String Backupfile)

{

SqldMo.Restore orestore = new sqldmo.restoreClass ();

Sqldmo.sqlserver osqlserver = new sqldmo.sqlserverclass ();

Try

{

OSQLServer.loginsecure = false;

OSQLServer.connect (ServerName, Username, Password);

Ostore.Action = sqldmo.sqldmo_restore_type.sqldmoStore_Database;

Ostore.Database = dbname;

orestore.files = @Backupfile;

orestore.filenumber = 1;

orestore.replacedatabase = true;

Ostore.sqlrestore (OSQLServer); Return "Database" DBNAME "has successfully recovered!";

}

Catch (Exception EX)

{

Throw New Exception ("Database Recovery Failed:" EX.MESSAGE);

}

Finally

{

OSQLServer.disconnect ();

}

}

}} 3. Also create a stored procedure in the local Master database to kill all access to all access to the database when recovery

CREATE PROCEDURE sp_KillThread @dbname varchar (20) asbegindeclare @sql nvarchar (500), @ temp varchar (1000) declare @spid intset @ sql = 'declare getspid cursor forselect spid from master..sysprocesses where dbid = db_id (' '' @ dbname '' ')' exec (@sql) open getspid fetch next from getspid into @spidwhile @@ fetch_status <> -1begin set @ temp = 'kill' rtrim (@spid) exec (@temp) fetch next from getspid INTO @spidendclose getspidDeallocate getspidGo4. Backup and Recovery Action:

Private void button1_click (object sender, system.eventargs e) {try1.value; // backup to ... string ret = dboperater.dbbackup (t_server.text, t_user.text, password1.value, T_db.text, t_filename.text, @ path); this.label1.text = re;} catch (exception ex) {this.label1.text = ex. measure;}}

Private void button2_click (object sender, system.eventargs e) {string path = this.file1.value; // Restore file path // String constr = "data source = localhost; data source = localhost; datarable = mAns user id = sa; password = password "; SqlConnection con = new SqlConnection (conStr); string cmdText = String.Format (" EXEC sp_KillThread @dbname = '{0}' ", t_db.Text); SqlCommand com = new SqlCommand ( CMDText, Con); try {con.open (); com.executenonquery () ;con.close (); // Restore database string ret = dboperater.dbrestore (t_server.text, t_user.text, password1.value, t_db. THST, PATH); this.label1.text = ret;

This program can only restore DBs of local backups or backups of other machines of the local SQLServer installation path.

转载请注明原文地址:https://www.9cbs.com/read-45192.html

New Post(0)