Ищите код, который позволит мне создавать резервные копии базы данных SQL Server 2005/2008 / 2008R2 внутри тестов C # (MSTest) - PullRequest
1 голос
/ 05 января 2011

Ниже я нашел отправную точку, но беспокоюсь, что могу пропустить звонки на номера CreateDbBackup() и RestoreDbBackup().Я надеялся, что смогу написать и использовать атрибут в моих тестах.Это возможно?Как?Я использую библиотеку MSTest и C # 4.0.

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

1 Ответ

2 голосов
/ 05 января 2011

Взгляните на Объекты управления SQL Server (SMO).Вы должны быть в состоянии использовать это для резервного копирования и восстановления баз данных SQL Server.

...