Files
advertising-profit-control/AdvertisingProfitControlData/Restore.cs
T

43 lines
1.5 KiB
C#

using System.Data.SqlClient;
namespace AdvertisingProfitControlData
{
public class Restore
{
public string ErrorMessage = string.Empty;
public bool SingleFileRestore(string databaseFilePath)
{
var sqlConStrBuilder = new SqlConnectionStringBuilder(AdvertisingProfitControlDbContext.ConnectionString);
try
{
using (var conn = new SqlConnection(sqlConStrBuilder.ConnectionString))
{
var query = $"RESTORE DATABASE {sqlConStrBuilder.InitialCatalog} FROM DISK='{databaseFilePath}'";
conn.Open();
var useMasterCommand = new SqlCommand("USE master", conn);
useMasterCommand.ExecuteNonQuery();
var alter1Cmd = new SqlCommand($"ALTER DATABASE {sqlConStrBuilder.InitialCatalog} SET Single_User WITH Rollback Immediate", conn);
alter1Cmd.ExecuteNonQuery();
var restoreCmd = new SqlCommand(query, conn);
restoreCmd.ExecuteNonQuery();
var alter2Cmd = new SqlCommand($"ALTER DATABASE {sqlConStrBuilder.InitialCatalog} SET Multi_User", conn);
alter2Cmd.ExecuteNonQuery();
conn.Close();
return true;
}
}
catch (SqlException e)
{
ErrorMessage = e.Message;
return false;
}
}
}
}