اگر دیتابیس را اتچ نکرده اید، بایست مسیر کامل دیتابیس رو به جای نام دیتابیس قرار بدید. از طریق کانکشن استرینگ میتونید مسیر رو بدست بیارید.
برای ریستور نباید دیتابیس در حال استفاده باشد که میتوانید دیتابیس Master را Use کنید و در انتها دیتابیس خودتان را ست کنید.
public static bool Backup(string filePath)
{
using (SqlCommand cmd = new SqlCommand())
{
if (_localdbConnection.State != ConnectionState.Open)
_localdbConnection.Open();
cmd.Connection = _localdbConnection;
string dbname = cmd.Connection.Database;
cmd.CommandText = "BACKUP DATABASE @databaseName TO DISK =N'@filePath';";
cmd.Parameters.AddWithValue("@databaseName", dbname);
cmd.Parameters.AddWithValue("@filePath", filePath);
cmd.ExecuteNonQuery();
}
return true;
}
public static bool Restore(string filePath)
{
using (SqlCommand cmd = new SqlCommand())
{
if (_localdbConnection.State != ConnectionState.Open)
_localdbConnection.Open();
cmd.Connection = _localdbConnection;
string dbname = cmd.Connection.Database;
cmd.CommandText =
"USE MASTER;RESTORE DATABASE @databaseName FROM DISK = N'@filePath';USE [" + dbname + "];";
cmd.Parameters.AddWithValue("@databaseName", dbname);
cmd.Parameters.AddWithValue("@filePath", filePath);
cmd.ExecuteNonQuery();
if (_localdbConnection.State != ConnectionState.Closed)
_localdbConnection.Close();
}
return true;
}