2011-01-05 2 views
1

私は以下の出発点を見つけましたが、CreateDbBackup()RestoreDbBackup()へのコールが逃げる可能性があります。テストで属性を記述して使用できることを願っていました。これは可能ですか?どうやって?私はMSTestライブラリとC#4.0を使用しています。C#テスト(MSTest)内にSQL Server 2005/2008/2008R2データベースをバックアップするコードを探します

http://www.linglom.com/2008/01/12/how-to-backup-and-restore-database-on-microsoft-sql-server-2005/

internal void CreateDbBackup() 
{ 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConStr"].ConnectionString)) 
     { 
      SqlCommand cmd = con.CreateCommand(); 
      cmd.CommandText = string.Format(@"BACKUP DATABASE [MyDatabase] TO DISK = N'{0}' WITH INIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT", UtilityClassGeneral.DbBackupPath); 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
     } 
    } 

    internal void RestoreDbFromBackup() 
    { 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConStr"].ConnectionString)) 
     { 
      SqlCommand cmd = con.CreateCommand(); 

      con.Open(); 

      // Make sure to get exclusive access to DB to avoid any errors 
      cmd.CommandText = "USE MASTER ALTER DATABASE [MyDatabase] SET SINGLE_USER With ROLLBACK IMMEDIATE"; 
      cmd.ExecuteNonQuery(); 

      cmd.CommandText = string.Format(@"RESTORE DATABASE [MyDatabase] FROM DISK = N'{0}' WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY , REPLACE", UtilityClassGeneral.DbBackupPath); 
      cmd.ExecuteNonQuery(); 
     } 
} 

答えて

2

SQL Server Management Objects(SMO)を見てください。これを使用して、SQL Serverデータベースのバックアップと復元を行うことができます。

+0

ありがとうございます!どのように公式/古い/よくテストされてこれは? –

+0

MicrosoftはSQL Server 2005以降、これを開発しました.SQL Serverのインストール中にインストールできます。 – Bernard