PDA

View Full Version : سوال: Backup از بانک sql server express



bahar1370
جمعه 11 تیر 1395, 23:21 عصر
سلام


string connectionString1 = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\bank.mdf;Integrated Security=True;User Instance=True";
SqlConnection cn = new SqlConnection(connectionString1);
cn.Open();
SqlCommand cmd = new SqlCommand();
// SqlDataReader reader;
cmd.CommandText = @"BACKUP DATABASE [bank] TO DISK = 'D:\SRI2Works.bak'";
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
cmd.ExecuteNonQuery();
cn.Close();
MessageBox.Show("Database Backup Successfull.");

به بانک اطلاعاتی وصل می شه ولی بک اپ نمی گیری و خطا می ده که

Database 'bank' does not exist. Make sure that the name is entered correctly.
BACKUP DATABASE is terminating abnormally

لطفا راهنمایی کنید ممنون

bahar1370
جمعه 11 تیر 1395, 23:51 عصر
OpenFileDialog sd = new OpenFileDialog();

sd.Filter = "SQL Server database backup files|*.bak";
sd.Title = "Create Database Backup";

if (sd.ShowDialog() == DialogResult.OK)
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\bank.mdf;Integrated Security=True;User Instance=True");

string sqlStmt = string.Format("restore database [bank] from disk='{0}' WITH REPLACE;", sd.FileName);
SqlCommand bu2 = new SqlCommand(sqlStmt, conn);

conn.Open();
bu2.ExecuteNonQuery();
conn.Close();

MessageBox.Show("restore Created Sucessfully");

}


مشکلم برای بکاپ حل شد ولی ریستور خطا می ده لطفا راهنمایی می کنید ؟؟؟؟

Mahmoud.Afrad
شنبه 12 تیر 1395, 01:58 صبح
اگر دیتابیس را اتچ نکرده اید، بایست مسیر کامل دیتابیس رو به جای نام دیتابیس قرار بدید. از طریق کانکشن استرینگ میتونید مسیر رو بدست بیارید.
برای ریستور نباید دیتابیس در حال استفاده باشد که میتوانید دیتابیس 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;
}