Anda di halaman 1dari 5

string connectionString1 = (@"Data

Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database1.mdf;Database=Da
tabase1;Integrated Security=True; User Instance=True");
SqlConnection cn = new SqlConnection(connectionString1);
cn.Open();
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
cmd.CommandText = @"BACKUP DATABASE Database1 TO DISK =
'C:\SRI2Works.bak'";

cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
reader = cmd.ExecuteReader();
cn.Close();
MessageBox.Show("Database Backup Successfull.");

string connectionString1 = (@"Data


Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database1.mdf;Database=Da
tabase1;Integrated Security=True; User Instance=True");
SqlConnection cn = new SqlConnection(connectionString1);
cn.Open();

SqlCommand cmd = new SqlCommand();


SqlDataReader reader;
cmd.CommandText = @"use master; RESTORE DATABASE Database1 FROM
DISK = 'C:\SRI2Works.bak'";
cmd.CommandText = "DBCC CHECKDB ('Database1')";
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
reader = cmd.ExecuteReader();
cn.Close();
MessageBox.Show("Database Restored Successfull.");

This code runs successfully but doesn't make any changes.

c# sql-server backup restore


shareimprove this question
edited Apr 6 '13 at 16:56

marc_s
539k11910431205
asked Apr 6 '13 at 15:19
user2252491
26112
add a comment

4 Answers
active oldest votes
up vote 6 down vote

Try this code in Restore database:

private void restoreButton_Click(object sender, EventArgs e)


{
string database = con.Database.ToString();
if (con.State != ConnectionState.Open)
{
con.Open();
}
try
{
string sqlStmt2 = string.Format("ALTER DATABASE [" + database + "]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
SqlCommand bu2 = new SqlCommand(sqlStmt2, con);
bu2.ExecuteNonQuery();

string sqlStmt3 = "USE MASTER RESTORE DATABASE [" + database + "]


FROM DISK='" + textBox2.Text + "'WITH REPLACE;";
SqlCommand bu3 = new SqlCommand(sqlStmt3, con);
bu3.ExecuteNonQuery();

string sqlStmt4 = string.Format("ALTER DATABASE [" + database + "]


SET MULTI_USER");
SqlCommand bu4 = new SqlCommand(sqlStmt4, con);
bu4.ExecuteNonQuery();

MessageBox.Show("database restoration done successefully");


con.Close();

}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

You will have to create DSN for connection.


Before coding, you must set the reference to the SMO assembly. You need to add these
components:

1. Microsoft.SqlServer.Smo
2. Microsoft.SqlServer.SmoExtended
3. Microsoft.SqlServer.ConnectionInfo
4. Microsoft.SqlServer.Management.Sdk.Sfc

After Adding References, you need to add 2 using statements:

Hide Copy Code

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

Using the Code


The following code creates connection with SQL Server. To execute:

Hide Copy Code

"select * from sys.databases"

The above query retrieves all databases from SQL Server.

Hide Copy Code

public void Createconnection()


{
DBbackup.DataBaseClass dbc = new DataBaseClass();

cbservername.Properties.Items.Clear();
// select * from sys.databases getting all database name from sql
server
cmd = new OdbcCommand("select * from sys.databases",
dbc.openconn());
dr = cmd.ExecuteReader();
while (dr.Read())
{
cbdatabasename.Properties.Items.Add(dr[0]);
}
dr.Close();
}

The following code gets server names that exist. To execute:

Hide Copy Code

"select * from sys.servers"


The above query retrieves servers:

Hide Copy Code

public void serverName()


{
DBbackup.DataBaseClass dbc = new DataBaseClass();
// select * from sys.servers getting server names that exist
cmd = new OdbcCommand("select * from sys.servers", dbc.openconn());
dr = cmd.ExecuteReader();
while (dr.Read())
{
cbservername.Properties.Items.Add(dr[1]);
}
dr.Close();
}

Database Backup
Hide Copy Code

public void blank(string str)


{
if (string.IsNullOrEmpty(cbservername.Text) |
string.IsNullOrEmpty(cbdatabasename.Text))
{
XtraMessageBox.Show("Server Name & Database can not be
Blank");
return;
}
else
{
if (str == "backup")
{
saveFileDialog1.Filter = "Text files (*.bak)|*.bak|All
files (*.*)|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
// the below query get backup of database you
specified in combobox
query("Backup database " + cbdatabasename.Text +
" to disk='" + saveFileDiaog1.FileName + "'");

XtraMessageBox.Show("Database BackUp has been


created successful.");
}
}
}
}

Database Restore
Hide Shrink Copy Code

public void Restore(OdbcConnection sqlcon, string DatabaseFullPath, string


backUpPath)
{
using (sqlcon)
{
string UseMaster = "USE master";
OdbcCommand UseMasterCommand = new OdbcCommand(UseMaster,
sqlcon);
UseMasterCommand.ExecuteNonQuery();
// The below query will rollback any transaction which is
running on that database and brings SQL Server database in
a single user mode.
string Alter1 = @"ALTER DATABASE
[" + DatabaseFullPath + "] SET Single_User WITH Rollback
Immediate";
OdbcCommand Alter1Cmd = new OdbcCommand(Alter1, sqlcon);
Alter1Cmd.ExecuteNonQuery();
// The below query will restore database file from disk
where backup was taken ....
string Restore = @"RESTORE DATABASE
[" + DatabaseFullPath + "] FROM DISK = N'" +
backUpPath + @"' WITH FILE = 1, NOUNLOAD, STATS = 10";
OdbcCommand RestoreCmd = new OdbcCommand(Restore, sqlcon);
RestoreCmd.ExecuteNonQuery();
// the below query change the database back to multiuser
string Alter2 = @"ALTER DATABASE
[" + DatabaseFullPath + "] SET Multi_User";
OdbcCommand Alter2Cmd = new OdbcCommand(Alter2, sqlcon);
Alter2Cmd.ExecuteNonQuery();
Cursor.Current = Cursors.Default;
}
}

Anda mungkin juga menyukai