PDA

View Full Version : سوال: backup and restore



AmiN0012
یک شنبه 29 آذر 1394, 15:42 عصر
دوستان من خیلی کد های متنوع راجب بکاپ و ریسعتور دیدم اما نمیدونم چرا پیخام زیر رو میده:
Cannot open database "TetBackUp" requested by the login. The login failed.
Login failed for user 'MyPCUser'.
میخام یوزر جدید در بانک معرفی کنم باز اونجام ارور میده:
the login already has an account under a different user name
روی دیتابیسم در اس کیو ال نوشه single user.
کد های من:
بکاپ:

SaveFileDialog savefiledialog = new SaveFileDialog();
savefiledialog.FileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");
savefiledialog.Filter = "BackupFile(*.Bak)|*.Bak";
if (savefiledialog.ShowDialog() == DialogResult.OK)
{
this.Refresh();
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection(@"Data Source=.;Initial Catalog=TetBackUp;Integrated Security=True");
cmd.Connection.Open();
string dbname = cmd.Connection.Database;
cmd.Connection.Close();
SqlConnection.ClearAllPools();
string query = "BACKUP DATABASE [" + Application.StartupPath + @"\TetBackUp.mdf] TO DISK ='" + savefiledialog.FileName + "'";
cmd.Connection = new SqlConnection(@"Data Source=.;Integrated Security=True");
cmd.Connection.Open();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
cmd.Connection.Close();
this.Refresh();
MessageBox.Show("پایگاه داده با موفقیت پشتیبان گیری شده");
}


ریستور:

OpenFileDialog openfiledialog = new OpenFileDialog();
openfiledialog.Filter = "BackupFile(*.Bak)|*.Bak";
if (openfiledialog.ShowDialog() == DialogResult.OK)
{
this.Refresh();
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection(@"Data Source=.;AttachDbFilename=|DataDirectory|\TetBackU p.mdf;Integrated Security=True");
cmd.Connection.Open();
string dbname = cmd.Connection.Database;
cmd.Connection.Close();
string query = "ALTER DATABASE [" + Application.StartupPath
+ @"\TetBackUp.mdf] SET SINGLE_USER WITH ROLLBACK IMMEDIATE ; RESTORE DATABASE ["
+ Application.StartupPath + @"\TetBackUp.mdf] FROM DISK ='" + openfiledialog.FileName + "';ALTER DATABASE [" + Application.StartupPath + @"\TetBackUp.mdf] SET MULTI_USER;";
cmd.Connection = new SqlConnection(@"Data Source=.;Integrated Security=True");
cmd.Connection.Open();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
cmd.Connection.Close();
this.Refresh();
MessageBox.Show("بازیابی پایگاه داده با موفقیت انجام شده")
}

ممنون میشم کمکم کنید

AmiN0012
دوشنبه 30 آذر 1394, 10:56 صبح
پاسخ:
دوستان من خیلی کد متفاوت دیدم یجوری با ترکیبون به نتیجه رسیدم.اسم بانک من myDB است.شما اسم بانک خودتونو بزارید.برتون سورس میزارم تا گیج نشید
اینم لینک سورس:
http://uplod.ir/2lpo4pdzbvdn/BackRestore.rar.htm

موفق باشید