C#データベース名取得、データベースバックアップ、リストアを実現
3965 ワード
:
SqlConnection conn = new SqlConnection(connection);
string databaseName=@"E:\Data\Test.mdf"; // ( )
conn.Open();
string bakSQL = @"backup database @DataBaseName to disk=N'E:\Temp\Test.bak'"; // SQL
try
{
SqlCommand cmd = new SqlCommand(bakSQL,conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@DataBaseName",databaseName); //
cmd.ExecuteNonQuery();
}
catch (Exception ee)
{
Console.WriteLine(ee);
}
データベース・バックアップのリストア:(変更対象) public static void Restore()
{
SqlConnection conn = new SqlConnection(connection);
try
{
conn.Open();
//
SqlCommand killCmd = new SqlCommand("use master; SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='Test'", conn);
SqlDataReader myreader = killCmd.ExecuteReader();
ArrayList list = new ArrayList();
while (myreader.Read())
{
list.Add(myreader.GetInt16(0));
}
myreader.Close();
for (int i = 0; i < list.Count; i++)
{
killCmd = new SqlCommand(string.Format("KILL{0}",list[i]),conn);
killCmd.ExecuteNonQuery();
Console.WriteLine(string.Format("Kill {0}",i));
}
//
string restoreSQL = @"restore database test from disk=N'E:\Temp\Test.bak' with move 'Test' to 'D:\\Data.mdf'";// SQL , ,
SqlCommand cmd = new SqlCommand(restoreSQL, conn);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch(Exception ee)
{
Console.WriteLine(ee);
}
参考文書:http://topic.csdn.net/u/20070514/20/fa0a9389-5f0e-4c27-a6af-1a1b5120eb19.html 現在接続されているSQL Serverデータベース名を取得するには、次の手順に従います.
public static void GetDataBaseName()
{
SqlConnection conn = new SqlConnection(connection);
try
{
conn.Open();
string bakSQL = "select db_name(); "; // SQL
SqlCommand cmd = new SqlCommand(bakSQL, conn);
cmd.CommandType = CommandType.Text;
SqlDataReader myreader = cmd.ExecuteReader();
if (myreader.Read())
{
Console.WriteLine(myreader.GetString(0)); //
}
else
{
Console.WriteLine(" ");
}
}
catch(Exception ee)
{
Console.WriteLine(ee);
}
}
SQL Serverに付属のストレージ・プロシージャを使用して、ホスト上のすべてのデータベースの名前を取得し、データベース名のセットをDropDownListコントロールにバインドします. SqlConnection connection = new ConnString().GetSqlConn();
SqlCommand command = new SqlCommand("sp_helpdb", connection);
command.CommandType = CommandType.StoredProcedure;
connection.Open();
SqlDataReader reader = command.ExecuteReader();
ddlDatabaseList.DataSource = reader;
ddlDatabaseList.DataTextField = "Name";
ddlDatabaseList.DataBind();
reader.Close();
connection.Close();
上記のデータベースのリカバリを実現する際にエラーが発生した場合は、古い鳥にアドバイスしてほしい!