sc 2 years ago
committed by 忱 沈
parent
commit
52f788088b
  1. 187
      Windows/SQL_BAK.xaml.cs

187
Windows/SQL_BAK.xaml.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -32,6 +33,7 @@ namespace formula_manage.Windows
bool SQLBAK; bool SQLBAK;
bool SQLTIME; bool SQLTIME;
int Time; int Time;
int i;
string SQLIP; string SQLIP;
string SQLNAME; string SQLNAME;
bool SQLMOD; bool SQLMOD;
@ -46,7 +48,9 @@ namespace formula_manage.Windows
SQLIP = Configini.IniReadvalue("SQL_SERVER", "SQL1"); //读配置文件 SQLIP = Configini.IniReadvalue("SQL_SERVER", "SQL1"); //读配置文件
SQLNAME = Configini.IniReadvalue("SQL_SERVER", "SQL2"); SQLNAME = Configini.IniReadvalue("SQL_SERVER", "SQL2");
SQLMOD = Boolean.Parse( Configini.IniReadvalue("SQL_SERVER", "SQL3")); int.TryParse(Configini.IniReadvalue("SQL_SERVER", "SQL3"), out i); //读数据库状态配置文件
if (i == 0) SQLMOD = false;
else SQLMOD = true;
SQLUSER = Configini.IniReadvalue("SQL_SERVER", "SQL4"); SQLUSER = Configini.IniReadvalue("SQL_SERVER", "SQL4");
SQLPASS = Configini.IniReadvalue("SQL_SERVER", "SQL5"); SQLPASS = Configini.IniReadvalue("SQL_SERVER", "SQL5");
@ -87,7 +91,7 @@ namespace formula_manage.Windows
Dilog.ShowNewFolderButton = false; //不显示新建文件夹按钮 Dilog.ShowNewFolderButton = false; //不显示新建文件夹按钮
// //
if (Dilog.ShowDialog() == System.Windows.Forms.DialogResult.OK ) if (Dilog.ShowDialog() == System.Windows.Forms.DialogResult.OK )
{ {
SQL_DISPEN_bak.Text = Dilog.SelectedPath; //返回选择的字符串 SQL_DISPEN_bak.Text = Dilog.SelectedPath; //返回选择的字符串
} }
} }
@ -109,26 +113,197 @@ namespace formula_manage.Windows
string Connstr_SC; string Connstr_SC;
private void Button_Click_1(object sender, RoutedEventArgs e) private bool Backup(string dbName, string filePath) // 备份数据库
{ {
if (SQLMOD) //连接数据库测试 if (!SQLMOD) //连接数据库测试
{ {
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI"; Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
}
else
{
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
}
SqlConnection connection = new SqlConnection();
connection.ConnectionString = Connstr_SC;
connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = string.Format("backup database {0} to disk = '{1}'", dbName, filePath);
try
{
command.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
connection.Close();
}
}
private bool Restore(string dbName, string filePath) // 还原数据库
{
if (!SQLMOD) //连接数据库测试
{
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
} }
else else
{ {
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS; Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
} }
SqlConnection connection = new SqlConnection();
connection.ConnectionString = Connstr_SC;
connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = string.Format("select spid from sysprocesses,sysdatabases where sysprocesses.dbid=sysdatabases.dbid and sysdatabases.Name='{0}'", dbName);
// 获取当前所有连接进程
List<short> list = new List<short>();
try
{
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
list.Add(reader.GetInt16(0));
}
reader.Close();
}
catch
{
return false;
}
finally
{
connection.Close();
}
// 杀死当前所有连接进程
try
{
for (int i = 0; i < list.Count; i++)
{
connection.Open();
command = new SqlCommand(string.Format("kill {0}", list[i].ToString()), connection);
command.ExecuteNonQuery();
connection.Close();
}
}
catch
{
return false;
}
finally
{
connection.Close();
}
// 还原数据库
connection.Open();
command.CommandText = string.Format("restore database {0} from disk = '{1}' with replace", dbName, filePath);
try
{
command.ExecuteNonQuery();
}
catch
{
return false;
}
finally
{
connection.Close();
}
return true;
}
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
bool ok;
if (!SQLMOD) //连接数据库测试
{
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
}
else
{
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
}
try
{
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
await conn_SC.OpenAsync(); //连接数据库
conn_SC.Close();
}
catch (Exception)
{
System.Windows.MessageBox.Show("数据库错误", "ERR", MessageBoxButton.OK, MessageBoxImage.Exclamation); //连接失败提示
return;
}
if ((bool)SQL_bak.IsChecked)
{
ok = Backup(SQLNAME, SQL_DISPEN_bak.Text + "\\" + SQLNAME + ".bak"); //指定地址备份
}
else
{
ok = Backup(SQLNAME, Convert.ToString(Environment.SpecialFolder.MyDocuments) + SQLNAME + ".bak"); //默认备份到文档文件夹
}
if (ok)
{
System.Windows.MessageBox.Show("备份成功");
}
else
{
System.Windows.MessageBox.Show("备份失败");
}
} }
private void Button_Click_2(object sender, RoutedEventArgs e) private async void Button_Click_2(object sender, RoutedEventArgs e)
{ {
bool ok;
} if (!SQLMOD) //连接数据库测试
{
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";Trusted_Connection=SSPI";
}
else
{
Connstr_SC = "server=" + SQLIP + ";database=" + SQLNAME + ";User ID=" + SQLUSER + ";Password=" + SQLPASS;
}
try
{
SqlConnection conn_SC = new SqlConnection(Connstr_SC);
await conn_SC.OpenAsync(); //连接数据库
conn_SC.Close();
}
catch (Exception)
{
System.Windows.MessageBox.Show("数据库错误", "ERR", MessageBoxButton.OK, MessageBoxImage.Exclamation); //连接失败提示
return;
}
if ((bool)SQL_bak.IsChecked)
{
ok = Backup(SQLNAME, SQL_DISPEN_bak.Text + "\\" + SQLNAME + ".bak"); //指定地址备份
}
else
{
ok = Backup(SQLNAME, Convert.ToString(Environment.SpecialFolder.MyDocuments) + SQLNAME + ".bak"); //默认备份到文档文件夹
}
if (ok)
{
System.Windows.MessageBox.Show("还原成功");
}
else
{
System.Windows.MessageBox.Show("还原失败");
}
}
} }
} }

Loading…
Cancel
Save