PDA

View Full Version : restore کردن DB sql در C#.net



Geradsoft
شنبه 31 مرداد 1388, 15:12 عصر
سلام دوستان. . .
من از توی همین سایت کد backup و restor را برداشتم کد Bachup کار کرد ولی کد restor کار نکرد .
نام DB من dbhakimshafae است من از کد زیر برای restor استفاده می کنم.
راستی وقتی که از توی خود نرم افزار sql من restor میکنم فایل backup را restor می کنه ولی کد زیر به من جواب نمیده. . . اگه میشه بگین اشکال کار چیه ؟؟؟
ممنون . . :چشمک:

this.openFileDialog1.ShowDialog();
if ((this.openFileDialog1.FileName != "") && (this.openFileDialog1.FileName != "openFileDialog1"))
{
try
{

SqlCommand cmd1 = new SqlCommand();
filename = openFileDialog1.FileName;
con.ConnectionString = "Data Source=(local);Initial Catalog=dbhakimshafae;Integrated Security=True";
cmd1.Connection = con;
con.Open();
cmd1.CommandText = "ALTER DATABASE dbhakimshafae SET SINGLE_USER WITH ROLLBACK IMMEDIATE" + " USE master; RESTORE DATABASE dbhakimshafae FROM DISK =N'" + filename + "'";
cmd1.Connection = con;
cmd1.ExecuteNonQuery();
con.Close();
MessageBox.Show("بازيابي با موفقيت انجام شد");
}
catch
{
MessageBox.Show("بازيابي با موفقيت انجام نشد");

}
}

Mohsen229266
شنبه 31 مرداد 1388, 17:16 عصر
این برنامه رو ببین (http://barnamenevis.org/forum/showpost.php?p=770882&postcount=309)احتمالا مشکلت حل میشه

Geradsoft
شنبه 31 مرداد 1388, 19:06 عصر
ممنون
ولی اگه میشه مشکل کد خودم رو بگین

Mohsen229266
شنبه 31 مرداد 1388, 22:30 عصر
دوست عزیز این سوال بارها و بارها مطرح شده و پاسخ داده شده در برنامه بالا که لینک براتون گذاشتم تابع BackUp,Restore وجود داره میتونید چک کنید مشکل کدتون کجاست

raha_20
شنبه 31 مرداد 1388, 23:08 عصر
شما connection string رو اشتباه نوشتین . این کد را به جای اون وارد کنید و بعد از دستور con.close() این دستوررا وارد کن



SqlConnection con = new SqlConnection("server=(local);trusted_connection=yes;");


این هم بعد از قطع شدن اتصال بزار



SqlConnection.ClearAllPools();

Geradsoft
یک شنبه 01 شهریور 1388, 00:49 صبح
شما connection string رو اشتباه نوشتین . این کد را به جای اون وارد کنید و بعد از دستور con.close() این دستوررا وارد کن



SqlConnection con = new SqlConnection("server=(local);trusted_connection=yes;");


این هم بعد از قطع شدن اتصال بزار



SqlConnection.ClearAllPools();

به connection ایراد نمیگیره به خط cmd1.sqlcommandtext=""; ایراد میگیره

Geradsoft
یک شنبه 01 شهریور 1388, 00:57 صبح
ولی کد های من به کدهایی که شما لینک دادین هیچ ربطی نداره روشش فرق داره
:گریه:

raha_20
یک شنبه 01 شهریور 1388, 14:13 عصر
ببین تو وقتی پایگاه را باز میکنی در واقع داری دیتابست راباز میکنی در حالی که اون باید بسته باشه و بکاپ را restore کنی . وقتی بازش میکنی نمیتونه این کار ر ا انجام بده شما onnection string را اونی که گفتم قرار بده ببین چی میشه؟؟؟؟؟

5mmmmm
یک شنبه 01 شهریور 1388, 14:49 عصر
این مشکا من هم بود p:

5mmmmm
یک شنبه 01 شهریور 1388, 14:50 عصر
نحوه attach چطوره؟

5mmmmm
یک شنبه 01 شهریور 1388, 14:54 عصر
یه امکان کپی توی sql هست آیا از اون میشه تو برنامه استفاده کرد؟

5mmmmm
یک شنبه 01 شهریور 1388, 14:57 عصر
چرا من پستام به 20 نمی رسه!!!

raha_20
یک شنبه 01 شهریور 1388, 18:00 عصر
این کد واسه attach کردن هست .




{
OpenFileDialog open1 = new OpenFileDialog();
OpenFileDialog open2 = new OpenFileDialog();
open1.ShowDialog();
open2.ShowDialog();
try{
if (open1.FileName!="" & open2.FileName!="" )
{
SqlConnection con=new SqlConnection("server=(local);trusted_connection=yes;");
SqlCommand sqlcomm=new SqlCommand();
sqlcomm.CommandType=CommandType.Text;
sqlcomm.Connection=con;
sqlcomm.CommandText="sp_attach_db @dbname=N'Library',@filename1=N'"+open1.FileName+"',@filename2=N'"+open2.FileName+"'";
con.Open();
sqlcomm.ExecuteNonQuery();
con.Close();
MessageBox.Show("success");
}
}
catch
{
MessageBox.Show("no attach");
}
}

raha_20
یک شنبه 01 شهریور 1388, 18:02 عصر
اینم کد واسه restore کردن .که کاملا جواب میده . حالا شما اینا امتحان کن اگه مشکلت حل نشد بگو




OpenFileDialog open = new OpenFileDialog();
open.Filter = "Backup files (*.bak)|*.bak|All Files (*.*)|*.*";
open.ShowDialog();
if (open.FileName != "")
{
string SQL = "alter database Library set single_user with rollback immediate " + "use master " + " restore database Library from disk='"+open.FileName +"' WITH REPLACE";
SqlConnection con = new SqlConnection("server=(local);trusted_connection=yes;");
SqlCommand sqlcomm = new SqlCommand(SQL, con);
sqlcomm.CommandType = CommandType.Text;
sqlcomm.Connection = con;
con.Open();
sqlcomm.ExecuteNonQuery();
con.Close();
SqlConnection.ClearAllPools();
MessageBox.Show("نسخه پشتیبان تهیه گردید");

bahar_engineer
دوشنبه 16 شهریور 1388, 12:41 عصر
سلام

من یه بانک روی هاست داشتم که SQL 2000 هست و ازش بک آپ گرفتم حالا می خوام RESTORE کنم اما با هر دستوری که سرچ کردم و هر نرم افزاری که دانلود کردم می گه نمی تونه به سرور وصل بشه

من روی سیستمم SQL SERVER نصب نیست آیا مشکلی هست ؟

و خطایی که با آخرین کد می ده یعنی همین کدی که توی پست قبل از من توسط raha_20 برای RESTORE داده شده این هست



A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)


به نظر شما مشکل چیه ؟
من فایل بک آپ بانکم روی درایو F سیستم توی یه پوشه هست

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