PDA

View Full Version : خطاي Timeout expired در هنگام ري استور ديتابيس



rana-writes
سه شنبه 04 بهمن 1390, 22:47 عصر
سلام دوستان برنامه نويس
من از اين كد براي ري استور ديتابيس استفاده ميكنم:

اين كديه كه OpenFileDialog رو باهاش باز ميكنم


privatevoid button2_Click(object sender, EventArgs e)
{
string strFileName = string.Empty;
openFileDialog1.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files(*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "Restore SQL File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = openFileDialog1.FileName;
Restore(strFileName);
}
}


و اينم تابع ري استور:


privatevoid Restore(string strFileName)
{
try
{
string command = "ALTER DATABASE Fix SET SINGLE_USER with ROLLBACK IMMEDIATE " +
"use master " +
" RESTORE DATABASE Fix FROM DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = newSqlConnection("Data Source=.;Initial Catalog=Fix;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = newSqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
MessageBox.Show(" ");
}
catch (Exception ex)
{
MessageBox.Show("Error Occurd :" + ex.Message);
}

}



مشكل اينه كه وقتي ديتابيس برنامه م رو توي Commandها مي نويسم، خطاي :
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
رو ميده ولي وقتي با ديتابيس Pubs خود SqlServer تست ميكنم يا ديتابيسي غير از ديتابيس خود برنامه رو تست ميكنم درست جواب ميده
ممنون ميشم راهنماييم كنين.

zarrinnegar
چهارشنبه 05 بهمن 1390, 01:30 صبح
توی backup گرفتن از دیتابیس معمولا مشکلی پیش نمیاد
ولی توی Restore کردنه که همیشه مشکل داریم
مشکلات برگردوندن اطلاعات میتونه اینها باشه
1 - کاربرای دیگه بهش وصلن
2 - خود ویژوال بهش وصله
3 - اتصال خود برنامه به دیتابیس هست
4 - حالت برگرداندن کامل(Full restore برای اون ) setنشده
5 - رونویسی فایل ها در صورت موجودبودن دیتابیس در مسیر تعیین شده ، set نشده
6 - برای restore کردن نیاز به مجوز داخلی sql هست که با user,pass که به sql وصل میشیم تا restore کنیم اون مجوز رو نداره
....


برای درک بهتر ، یک پروژه هست برو اونو نگاه کن
کد هاش بدردت میخوره
http://midnightprogrammer.net/post/BackupRestore-SQL-database-using-C.aspx