public classDatabaseMaintenance
{#region 备份数据库
///
///备份数据库///
/// 备份文件的路径
public static void Backup(stringfileName)
{//TODO SQL Server only now
string sqlConnectionString = ConfigurationManager.ConnectionStrings["connStr"].ToString();using (SqlConnection conn = newSqlConnection(sqlConnectionString))
{string dbName = newSqlConnectionStringBuilder(sqlConnectionString).InitialCatalog;
;string commandText = string.Format("BACKUP DATABASE [{0}] TO DISK = '{1}' WITH FORMAT",
dbName,
fileName);
DbCommand dbCommand= newSqlCommand(commandText, conn);if (conn.State !=ConnectionState.Open)
conn.Open();
dbCommand.ExecuteNonQuery();
}
}#endregion
#region 还原数据库
///
///还原数据库 database///
/// 要还原的数据库文件路径
public static void RestoreBackup(stringfileName)
{string sqlConnectionString = ConfigurationManager.ConnectionStrings["connStr"].ToString();using (SqlConnection conn = newSqlConnection(sqlConnectionString))
{string dbName = newSqlConnectionStringBuilder(sqlConnectionString).InitialCatalog;string commandText = string.Format("DECLARE @ErrorMessage NVARCHAR(4000)\n" +
"USE master ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE\n" +
"BEGIN TRY\n" +
"RESTORE DATABASE [{0}] FROM DISK = '{1}' WITH REPLACE\n" +
"END TRY\n" +
"BEGIN CATCH\n" +
"SET @ErrorMessage = ERROR_MESSAGE()\n" +
"END CATCH\n" +
"ALTER DATABASE [{0}] SET MULTI_USER WITH ROLLBACK IMMEDIATE\n" +
"IF (@ErrorMessage is not NULL)\n" +
"BEGIN\n" +
"RAISERROR (@ErrorMessage, 16, 1)\n" +
"END",
dbName,
fileName);
DbCommand dbCommand= newSqlCommand(commandText, conn);if (conn.State !=ConnectionState.Open)
conn.Open();
dbCommand.ExecuteNonQuery();
}//clear all pools
SqlConnection.ClearAllPools();
}#endregion}