SQL2005数据库数据备份:
private void btn备份_Click(object sender, EventArgs e)
{
if (this.txtBakName.Text != "" && this.txtPlace.Text != "")
{
string P_Str_cmdtxt2 = "backup database YZG to disk='" + this.txtPlace.Text.Trim() + "\\" + this.txtBakName.Text.Trim() + ".bak'";
if (this.GetExecute(P_Str_cmdtxt2))
{
MessageBox.Show("数据备份成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("数据备份失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("请输入备份的正确位置及文件名!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
数据恢复:
SqlConnection conn = con.OpenConn();
string P_Str_cmdtxt = "USE master DECLARE tb CURSOR LOCAL FOR SELECT 'Kill '+ CAST(Spid AS VARCHAR) FROM master.dbo.sysprocesses";
P_Str_cmdtxt += "WHERE dbid=DB_ID('YZG') DECLARE @s nvarchar(1000) OPEN tb FETCH tb INTO @s";
P_Str_cmdtxt += "WHILE @@FETCH_STATUS = 0 BEGIN EXEC (@s) FETCH tb INTO @s END CLOSE tb DEALLOCATE tb";
P_Str_cmdtxt += "RESTORE DATABASE YZG FROM disk='" + P_Str_BakPath + "'";
if (conn.State == ConnectionState.Open)
{
conn.Close();
try
{
SqlCommand sqlcom = new SqlCommand(P_Str_cmdtxt, conn);
sqlcom.ExecuteNonQuery();
MessageBox.Show("数据还原成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
}备份可以备份出来;但是恢复不进去。
private void btn备份_Click(object sender, EventArgs e)
{
if (this.txtBakName.Text != "" && this.txtPlace.Text != "")
{
string P_Str_cmdtxt2 = "backup database YZG to disk='" + this.txtPlace.Text.Trim() + "\\" + this.txtBakName.Text.Trim() + ".bak'";
if (this.GetExecute(P_Str_cmdtxt2))
{
MessageBox.Show("数据备份成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("数据备份失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("请输入备份的正确位置及文件名!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
数据恢复:
SqlConnection conn = con.OpenConn();
string P_Str_cmdtxt = "USE master DECLARE tb CURSOR LOCAL FOR SELECT 'Kill '+ CAST(Spid AS VARCHAR) FROM master.dbo.sysprocesses";
P_Str_cmdtxt += "WHERE dbid=DB_ID('YZG') DECLARE @s nvarchar(1000) OPEN tb FETCH tb INTO @s";
P_Str_cmdtxt += "WHILE @@FETCH_STATUS = 0 BEGIN EXEC (@s) FETCH tb INTO @s END CLOSE tb DEALLOCATE tb";
P_Str_cmdtxt += "RESTORE DATABASE YZG FROM disk='" + P_Str_BakPath + "'";
if (conn.State == ConnectionState.Open)
{
conn.Close();
try
{
SqlCommand sqlcom = new SqlCommand(P_Str_cmdtxt, conn);
sqlcom.ExecuteNonQuery();
MessageBox.Show("数据还原成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
}备份可以备份出来;但是恢复不进去。
还是不对。
{
conn.Close();
try
{
SqlCommand sqlcom = new SqlCommand(P_Str_cmdtxt, conn);
sqlcom.ExecuteNonQuery();
MessageBox.Show("数据还原成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
有问题,连接都关闭了怎么执行
用程式來做,就要十分注意了
還原比備份復雜多了
不過還原真不太推薦用程式做(除非十分有必要),要不然要DBA做什么呢?
P_Str_cmdtxt += "WHERE dbid=DB_ID('YZG') DECLARE @s nvarchar(1000) OPEN tb FETCH tb INTO @s";
P_Str_cmdtxt += "WHILE @@FETCH_STATUS = 0 BEGIN EXEC (@s) FETCH tb INTO @s END CLOSE tb DEALLOCATE tb";
P_Str_cmdtxt += "RESTORE DATABASE YZG FROM disk='" + P_Str_BakPath + "'";
if (con.OpenConn().State == ConnectionState.Open)
{
con.OpenConn().Close();
try
{
SqlCommand sqlcom = new SqlCommand(P_Str_cmdtxt, con.OpenConn());
sqlcom.ExecuteNonQuery();
MessageBox.Show("数据还原成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}关闭了连接的
{
con.OpenConn().Close();
try
{
SqlConnection conn = new SqlConnection("server=Listen;database=master;Uid=sa;Pwd=611118");
conn.Open();
SqlCommand sqlcom = new SqlCommand(P_Str_cmdtxt,conn);
sqlcom.ExecuteNonQuery();
MessageBox.Show("数据还原成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (con.OpenConn().State == ConnectionState.Closed)
{
con.OpenConn().Open();
}
}
catch
{
btn恢复_Click(sender, e);
}
}这样有问题没有???