backup and restore در سی شارپ
در قسمت های مختلف دوستان توضیح دادهاند ولی هیچکدام کار نمی کند
لطفا یکی کمک کنه
backup and restore در سی شارپ
در قسمت های مختلف دوستان توضیح دادهاند ولی هیچکدام کار نمی کند
لطفا یکی کمک کنه
این حتما کار میکنه.. همین الان خودم نوشتم و تستش کردم.
public void SqlRestorActions(string ConnectionString)
{
SqlConnection DBConnection = new SqlConnection(ConnectionString);
SqlCommand DBCommand = new SqlCommand("RESTORE DATABASE DBNAME FROM DISK = N'C:\\' WITH FILE = 1, NOUNLOAD, STATS = 10", DBConnection);
;
DBConnection.Open();
DBCommand.ExecuteNonQuery();
DBConnection.Close();
}
public void SqlBackupAction(string ConnectionString)
{
SqlConnection SC = new SqlConnection(ConnectionString);
string sqltxt = "";
sqltxt = @"BACKUP DATABASE DATABASENAME TO DISK ='C:\\TEST.bac' WITH REPLACE ";
SqlCommand Command = new SqlCommand(sqltxt, SC);
SC.Open();
Command.ExecuteNonQuery();
SC.Close();
}
اما کلا همیشه سرچ کن. اینطوری متکی به خودت هستی. اگه ایرادی داشتی اینجا بپرس.
آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 07 فروردین 1393 در 19:35 عصر
سلام
من وقتی می خوام backup گرفته شده رو restore کنم خطای زیر رو میده کسی میدونه علتش چیه
Invalid zero-length device name. Reissue the BACKUP statement with a valid device name.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master
با تشکر
سلام
نه موقع backup گیری ارور نمیده و restore را با کد
string command = "ALTER DATABASE Pubs SET SINGLE_USER with ROLLBACK
IMMEDIATE " +
"use master " +
" RESTORE DATABASE Pubs FROM DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = new SqlConnection("Data Source=.;Initial
Catalog=Pubs;Integrated Security=True");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(Sqlcommand, oConnection);
oCommand.ExecuteNonQuery();
this.Cursor = Cursors.Default;
نوشتم
خطا
Invalid zero-length device name. Reissue the BACKUP statement with a valid device name.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master
و
بعضی اوقات خطا میده که نمیتونه دیتابیس رو باز کنه
با تشکر
آخرین ویرایش به وسیله ehsan11 : دوشنبه 28 دی 1388 در 00:23 صبح
private void Restore(string strFileName)
{
try
{
//readfile();
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.\\sqlexpress;Initial catalog=master;Integrated Security=true";
//con.ConnectionString = "Data Source=.;Initial catalog=master;Integrated Security=true";
SqlCommand cmd = new SqlCommand();
con.Open();
string query = "USE master RESTORE DATABASE [databasename] FROM DISK ='" + strFileName + "'WITH RECOVERY, REPLACE";
cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("بازیابی به درستی انجام شد\nدوباره وارد برنامه شوید");
Application.Exit();
}
catch (Exception ex)
{
MessageBox.Show("Error Occurd :" + ex.Message);
}
}
هرچند این سوال بارها پرسیده و جواب داده شده ولی برای اینکه تاپیک بدون جواب به زیر خروار تاپیک های دیگر نرود
Microsoft.SqlServer.Management.Smo.BackupDeviceIte m bdi = new BackupDeviceItem(fileName+"DB-Back-" + DateTime.Now.ToString().Replace('/', '-').Replace(':','-'), DeviceType.File);
Backup bu = new Backup();
bu.Database = Paya.Properties.Settings.Default.DBName;
bu.Devices.Add(bdi);
bu.Initialize = true;
// add percent complete and complete event handlers
bu.PercentComplete += new PercentCompleteEventHandler(Backup_PercentComplete );
bu.Complete += new ServerMessageEventHandler(Backup_Complete);
Microsoft.SqlServer.Management.Smo.Server server = new Server(Paya.Properties.Settings.Default.ServerName );
bu.SqlBackup(server);
Server server = new Server(Paya.Properties.Settings.Default.ServerName );
BackupDeviceItem bdi = new BackupDeviceItem(fileName, DeviceType.File);
Restore r = new Restore();
r.Database = Paya.Properties.Settings.Default.DBName;
r.ReplaceDatabase = true;
r.Devices.Add(bdi);
//add percent complete and complete event handlers
r.PercentComplete += new PercentCompleteEventHandler(Restore_PercentComplet e);
r.Complete += new ServerMessageEventHandler(Restore_Complete);
r.SqlRestore(server);
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
سلام
هر بار نمی خوام backup بگیرم اما اگه من یه رکورد جدید به دیتا بیس اضافه کنم و backupبگیرم باید همون موقع بکاپ رو restore کنم در غیر این صورت اگه از برنامه خارج شدم و دوباره وارد شدم دیگه restore نمیکنه
و همون خطا رو میده
Invalid zero-length device name. Reissue the BACKUP statement with a valid device name.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master
اصلا این خطا معنیش چیه ؟
سلام
ببخشید زیادی دارم اذیت میکنم
من موقع restore هیچ کاری انجام نمیدم فقط برنامه رو اجرا و بعدش restore ولی باز این خطا رو میده
این خطا معنیش چیه؟ بعدش تنظیم خاصی تو sql نداره؟
ممنون میشم
با سلام
من توی سایت کلی جستجو کردم ولی متاسفانه مطالبی که در مورد بکاپ گیری از دیتابیس تو sqlexpress بود هیچ کدوم جوابگو نبود و هرکدوم یه پیغام خطایی می داد
از دوستان خواهش می کنم بکاپ گیری و ریستور رو به صورت کامل در sqlexpress آموزش بدن تا این موضوع تو این تاپیک حل بشه
(دیتابیسم فایل های mdf و ldf هستش)
با تشکر
سلام
بارها این سئوال مطرح شده و بار ها هم جواب داده شده و حتما کار می کنه که کسی ایرادی رو مطرح نکرده (یک نمونه رو خودم گذاشتم که الان در برنامه هام دارم استفاده می کنم و کار میکنه)!
حالا اگر «هرکدوم یه پیغام خطایی می داد» رو کامل توضیح بدی،میشه راهنمایی کرد که ایراد کار «شما» کجاست یا ایراد کد!
موفق باشید
salam dooste man
man harchi emtehan kardam javab nadad
shayad eirad tooye connection stringame
esme data basam dbase.mdf hastesh
mishe begi conectionesh chi bayad bashe
ba tashakkor
کانکشن من اینه
کد HTML:Data Source=.\\SQLEXPRESS;AttachDbFilename="+Application.StartupPath+"\\dbase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
سلام
خودش است این ConnectionString نمی تواند ConnectionString را عوض کنید و از روش AttachDbFilename استفاده نکنید
سلام
میشه بگید باید چیکار کنم.یعنی بیشتر توضیح بدید ممنون میشم.
این کانکشن تو کل برنامه جواب داده بغیر از همین بکاپ و ری استور کردنش
سلام
با این ConnectionString مشکل شما حل می شود :
"Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=" + DataBaseName + ";server=";
سلام
بازم نشد
پیغام زیر رو میده.
تو ضمیمه کدی هم که نوشتم مشخصه
سلام
کل برنامه ی من با اون کانکشن استرینگی که کد اتچ رو داره کار می کنه(یعنی بانک اتچ شده) درسته؟
فقط تو این قسمت بکاپ گیری من این کانکشن استرینگی که شما دادین رو گذاشتم که بازم کار نمی کنه و اون پیغام رو می ده.
اگه اتچ نیست لطفا بگین چطور اتچ بشه؟
ممنون
سلام
خیر Attached نشده است با استفاده از Sp بنام Sp_Attached اولین بار باید اتصال صورت گیرد بعد بقیه مراحل...
سلام
میشه کامل بهم توضیح بدین
(در ضمن ممنونم که این مشکل منو پیگیری می کنین)
سلام
باید این مراحل را طی کنید تا با ConnectionString اعلام شده بتوانید Backup بگیرید :
- در ابتدای برنامه یک ارتباط با بانک Master برقرار کنید اگر خطا دریافت شد که SQLExpress احتمالا ندارید
- اگر به یک شی درون بانک خودتان ارتباط برقرار نکردید باید SP_Attached را برای ارتباط با بانک ولی با ConnectionString به جدول master اجرا کنید
پس از این مرحله با ConnectionString اعلام شده Backup و Restore خواهید داشت
یک حسن دیگر هم این است که وقتی attached می کنید بدون Stop اس کیو ال نمی توان بلائی سر بانک آورد.
سلام
یکم برا من سخت فهمیدنش
اینکه گفتی مستر رو ارتباط بدم.از منوی tool گزینه ی connect to database رو زدم و بانک رو نشونم داد(.\sqlexpress)
ولی بقیشو نفهمیدم
میشه مرحله ای برای یه نفر مبتدی توضیح بدی
ممنون
سلام
نمی خواستم کد بذارم ولی مجبور شدم :
string MyDataBase = "Test";
string MyPathName = @"D:\Temp";
string Master_CS = "Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=master;server=";
string MyDB_CS = "Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=" + MyDataBase + ";server=";
string MySP_Attached = @"EXEC sp_attach_db @dbname = N'" + MyDataBase + @"',@filename1 = N'" + MyPathName + @"\" + MyDataBase + @"_Data.MDF',@filename2 = N'" + MyPathName + @"\" + MyDataBase + @"_Log.LDF'";
try
{
var C = new SqlConnection(Master_CS);
C.Open();
new SqlCommand(MySP_Attached, C).ExecuteNonQuery();
}
catch { }
اینطوری اگر بانک شما متصل نباشد متصل میشود این مثال 2000 قرار دادم شما از ConnectionString مربوط به SQLExpress استفاده کنید
آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 07 فروردین 1393 در 19:46 عصر
سلام
واقعا خسته نباشید و ممنونم.
من این کد رو میزارم بعدشم دستورات بکاپ رو می نویسم ولی بازم جواب نمی ده
دیتابیس من تو مسیر استارت آپ نصب برنامس. آدرس هارو هم گذاشتم و لی بازم همون پیغام قبلی رو داد
دیگه از چی میتونه باشه؟
سلام
پیام را قرار دهید چون من با همین روش اصلا مشکلی ندارم.
اینهم SP مربوط به Backup گیری :
CREATE Proc BacKUpApplication
@DBDrv VarChar(1000),
@DBStr VarChar(200)
As
Declare @DBPath VarChar(1000),@DBBack VarChar(150)
Set @DBPath=@DBDrv+@DBStr+'_BackUp.Bak'
Set @DBBack=@DBStr+'_BackUp'
ExEc sp_addumpdevice 'disk',@DBBack,@DBPath
ExEc('BackUp DataBase '+@DBStr+' To '+@DBStr+'_BackUp')
سلام
این کدی که نوشتین که vb هستش
من با سی شارپ دارم می نویسم
شاید بخاطر اینه که نمیشه؟
سلام
VB ؟ نه با #C است.
ببخشید اشتباه شد
الان به عنوان یه دستور sql فرستادمش
پارامترهاش هم یه جورایی تعریف کردم
ولی بازم پیغام میده که
excute non query: connection property has not been instalize
میشه یه نمونه برنامه بنویسین(ممنون میشم چون دیگه داره خستم میکنه)
سلام
اینطوری :
try
{
string MyDB = "ForTesting";
var C = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=" + MyDB + ";server=");
C.Open();
new SqlCommand(@"BacKUpApplication 'D:\','" + MyDB + "'", C).ExecuteNonQuery();
}
catch { }
آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 07 فروردین 1393 در 19:47 عصر
سلام
کدی که نوشتم اینه:
string MyDataBase = "dbase";
string MyPathName = Application.StartupPath;
string Master_CS = "Data Source=.\\sqlexpress;Integrated Security=True";
string MyDB_CS = "Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=" + MyDataBase + ";server=";
string MySP_Attached = @"EXEC sp_attach_db @dbname = N'" + MyDataBase + @"',@filename1 = N'" + MyPathName + @"\" + MyDataBase + @"_Data.MDF',@filename2 = N'" + MyPathName + @"\" + MyDataBase + @"_Log.LDF'";
try
{
var C = new SqlConnection(Master_CS);
C.Open();
new SqlCommand(MySP_Attached, C).ExecuteNonQuery();
C.Close();
}
catch
{
MessageBox.Show("0");
}
try
{
string MyDB = "dbase";
var C = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=" + MyDB + ";server=");
C.Open();
new SqlCommand(@"BacKUpApplication 'D:\','" + MyDB + "'", C).ExecuteNonQuery();
}
catch
{
MessageBox.Show("1");
}
الان بازم جواب نمیده و تو جفه catch ها میره
ایرادش چیه؟
آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 08 بهمن 1395 در 20:04 عصر
سلام
قسمت قرمز رنگ باید به بانک master اشاره کند
string Master_CS = "Data Source=.\\sqlexpress;Integrated Security=True";
string MyDB_CS = "Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=master;server=";
بار اول باید اجرا شود و هربار که بانک متصل نباشد نیز اجرا می شود
آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 08 بهمن 1395 در 20:04 عصر
سلام
قسمت قرمز رنگ رو به این کد تغییر دادم
ولی بازم نشدکد HTML:Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=True
قسمت سبز رنگ رو هم منظورتونو نفهمیدم که چجوری باید تغییرش بدم
بازم همون مشکل رو داره
سلام
فکر کنم دیگه خسته شدین
ولی هنوز این مشکل من حل نشده
میشه کمک کنید
سلام
این مثال برای 2000 است برای 2005 باید این تغییر را ایجاد کنید:
string MySP_Attached = @"EXEC sp_attach_db @dbname = N'" + MyDataBase + @"',@filename1 = N'" + MyPathName + @"\" + MyDataBase + @"_Data.MDF',@filename2 = N'" + MyPathName + @"\" + MyDataBase + @"_Log.LDF'";
قسمتهای قرمز رنگ باید متناسب با فایل Data و Log شما تغییر کند
نام کامل Log و Data شما چیست ؟
آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 07 فروردین 1393 در 19:48 عصر
سلام
اسم دیتابیسمdbase.mdf و لاگ فایلش همdbase_log.ldf هستش
این کد هم الان جواب نداد.میشه بگید کجاش ایراد داره
string MyDataBase = "dbase";
string MyPathName = Application.StartupPath;
string MyDB_CS = "Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=" + MyDataBase + ";server=";
string MySP_Attached = @"EXEC sp_attach_db @dbname = N'" + MyDataBase + @"',@filename1 = N'" + MyPathName + @"\" + MyDataBase + @"_Data.MDF',@filename2 = N'" + MyPathName + @"\" + MyDataBase + @"_Log.LDF";
try
{
var C = new SqlConnection(MyDB_CS);
C.Open();
new SqlCommand(MySP_Attached, C).ExecuteNonQuery();
C.Close();
}
catch
{
MessageBox.Show("0");
}
try
{
string MyDB = "dbase";
var C = new SqlConnection("Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=" + MyDB + ";server=");
C.Open();
new SqlCommand(@"BacKUpApplication 'D:\','" + MyDB + "'", C).ExecuteNonQuery();
}
catch
{
MessageBox.Show("1");
}
آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 08 بهمن 1395 در 20:05 عصر
سلام
اگر Path شما صحیح باشد اینطوری است :
string MySP_Attached = @"EXEC sp_attach_db @dbname = N'" + MyDataBase + @"',@filename1 = N'" + MyPathName + @"\dbase.mdf',@filename2 = N'" + MyPathName + @"\dbase_log.ldf'";
آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 07 فروردین 1393 در 19:48 عصر
سلام
پسش رو هم درست کردم باز.
ولی نشد
میره تو کتچ
سلام
درون بلاک اول فقط اولین بار باید برود وباردوم به بعد به catch میرود ولی در catch دوم نباید برود
سلام
هردفعه خطا میده و میره تو کتچ
کد رو که دیدی دوست من.
دیگه از چی میتونه باشه؟