43 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|