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();

上記のデータベースのリカバリを実現する際にエラーが発生した場合は、古い鳥にアドバイスしてほしい!