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

50 lines
1.9 KiB
C#

using System.Data.SqlClient;
namespace AdvertisingProfitControlData
{
public class Restore
{
public string ErrorMessage = string.Empty;
public bool SingleFileRestore(string databaseFilePath, string connectionString)
{
var sqlConStrBuilder = new SqlConnectionStringBuilder(connectionString);
try
{
using (var conn = new SqlConnection(connectionString))
{
var query =
@"BEGIN TRY
use master
ALTER DATABASE " + sqlConStrBuilder.InitialCatalog + @" SET SINGLE_USER
DROP DATABASE AdvertisingProfitControl
RESTORE DATABASE " + sqlConStrBuilder.InitialCatalog + @" FROM Disk='" + databaseFilePath + @"' with checksum
END TRY
BEGIN CATCH
DECLARE @Error VARCHAR(max)
SELECT @Error = ERROR_MESSAGE()
ALTER DATABASE " + sqlConStrBuilder.InitialCatalog + @" SET MULTI_USER
RAISERROR(@Error, 11, 1)
END CATCH
ALTER DATABASE " + sqlConStrBuilder.InitialCatalog + @" SET MULTI_USER
";
//TODO: Verify that the database is good with DBCC command.
conn.Open();
var restoreCmd = new SqlCommand(query, conn)
{
CommandTimeout = 300
};
restoreCmd.ExecuteNonQuery();
conn.Close();
return true;
}
}
catch (SqlException e)
{
ErrorMessage = e.Message;
return false;
}
}
}
}