正在寻找可以在C#tests(MSTest)中备份SQL Server 2005/2008/2008R2数据库的代码
我在下面找到了一个起点,但我担心我可能会错过对正在寻找可以在C#tests(MSTest)中备份SQL Server 2005/2008/2008R2数据库的代码,c#,sql-server-2005,unit-testing,mstest,database-backups,C#,Sql Server 2005,Unit Testing,Mstest,Database Backups,我在下面找到了一个起点,但我担心我可能会错过对CreateDbBackup()和RestoreDbBackup()的调用。我希望我能在测试中编写并使用属性。这可能吗?怎么用?我正在使用MSTest库和C#4.0 看看(SMO)。您应该能够使用它备份和恢复SQL Server数据库。谢谢!这有多正式/旧/经过良好测试?Microsoft从SQL Server 2005开始开发这一功能。它可以在SQL Server安装期间安装。 internal void CreateDbBackup() {
CreateDbBackup()
和RestoreDbBackup()
的调用。我希望我能在测试中编写并使用属性。这可能吗?怎么用?我正在使用MSTest库和C#4.0
看看(SMO)。您应该能够使用它备份和恢复SQL Server数据库。谢谢!这有多正式/旧/经过良好测试?Microsoft从SQL Server 2005开始开发这一功能。它可以在SQL Server安装期间安装。
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();
}
}