C\#SqlServer 데이터베이스 백업 및 복원 실현
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//
private string connectionString = "Data Source=DSF-PC;Initial Catalog=master;User ID=sa;Password=123456";
//
public Form1()
{
InitializeComponent();
}
//
private void btnBackup_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = " ";
saveFileDialog.Filter = " (*.bak)|*.bak";
saveFileDialog.RestoreDirectory = true;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
bool ok = Backup("Test", saveFileDialog.FileName);
if (ok)
{
MessageBox.Show(" ");
}
else
{
MessageBox.Show(" ");
}
}
}
//
private void btnRestore_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = " ";
openFileDialog.Filter = " (*.bak)|*.bak";
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
bool ok = Restore("Test", openFileDialog.FileName);
if (ok)
{
MessageBox.Show(" ");
}
else
{
MessageBox.Show(" ");
}
}
}
//
private bool Backup(string dbName, string filePath)
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = connectionString;
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)
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = connectionString;
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;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.