PDA

View Full Version : سوال: آیا بک آپ از mdf واقعا لازمه؟



MRasoul
شنبه 27 دی 1393, 09:42 صبح
سلام به همه استادها
یه سوال داشتم و اون اینه که آیا برنامه هایی که دیتابیس اونا به صورت فایل mdf حالا یا express و یا localdb در کنارشون هست آیا واقعا بک آپ نیازه برای داشتن اطلاعات یا از همون فایل یه کپی جای دیگه ذخیره کنیم و بعد همون رو کپی رو در موقع نیاز بیاریم و paste کنیم جواب می ده؟؟؟؟؟؟؟

حسین.کاظمی
شنبه 27 دی 1393, 12:10 عصر
سلام
ببین بک آپ گرفتن الزامی نیست یکی از امکانات برنامه می باشد.
ولی در جواب سوالی که کردید یا از همون فایل یه کپی جای دیگه ذخیره کنیم و بعد همون رو کپی رو در موقع نیاز بیاریم و paste کنیم
اگر همون فایلی که با پسوند mdf هست خراب بشه و بعدش عمل کپی انجام بشه هیچ فایده ایی نداره و در ضمن فایل اس کی ال مثل فایل های دیگر بعد از attach شدن دیگر قابل کپی کردن نیست
پس بهترین و اصولی ترین راه و روش این است که در برنامه نوشته شده خود امکان بک آپ گیری و ریستور را بگذارید

موفق باشید

MRasoul
شنبه 27 دی 1393, 12:24 عصر
ممنون عزیز
خب چجوری باید بک آپ بگیرم
این دستور بک آپ منه
obj_com.CommandText = "BACKUP DATABASE DB_DC TO DISK = '"+ AppDomain.CurrentDomain.BaseDirectory.ToString() + @"B_R\MY_DB.bak' WITH INIT;" ;
وقتی اینو میزنم خطا میده که Database 'MY_DB' does not exist. Make sure that the name is entered correctly.
اما این دیتا بیس وجود داره و من دارم باهاش کار میکنم

SabaSabouhi
شنبه 27 دی 1393, 12:38 عصر
سلام
1. اگر فایل باز باشه، امکان کپی کردن ندارین. اما اگه تونستین کپی کنین، کافیه.
2. مکانیزم مربوط به این کار Copy&Paste نیست. باید Detach و سپس Attach کنی.
3. Backup گرفتن در هر صورت به‌تر هست. چون می‌تونی از تو خود برنامه مدیریتش کنی. ( و کلی دلایل دیگه )
4. ترجیحاً تو خود برنامه امکان Restore رو قرار ندین، این کار رو بگذارین خود مدیر سیستم انجام بده و «شر» این کار رو به گردن نگیرید.
5. احتمالاً این خطایی که شما می‌گیرید باید به این دلیل باشه که به دیتابیس master وصل نیستین.
و در آخر این که «استاد» واژه فارسی هست، و واژگان فارسی جمع مکسر ندارند.

صبا صبوحی

حسین.کاظمی
شنبه 27 دی 1393, 12:44 عصر
این خطا از اینه که شما دارید از بانک اطلاعاتیتون استفاده می کنید و در حین حال هم میخایی ازش بک آپ بگیری مسلماً خطا میده!!!
امشب واستون یه نمونه برنامه میزارم

SabaSabouhi
شنبه 27 دی 1393, 13:47 عصر
این خطا از اینه که شما دارید از بانک اطلاعاتیتون استفاده می کنید و در حین حال هم میخایی ازش بک آپ بگیری مسلماً خطا میده!!!
امشب واستون یه نمونه برنامه میزارم

سلام
دوست عزیز، این که دیتابیس باز باشه، مانع Backupگیری نمی‌شه. برای گرفتن Backup «لازم و کافی» هست که Connection مربوط به Backupگیری
به دیتابیس master باشه. ( بدون نیاز به این که connection اصلی برنامه بسته بشه ).

صبا صبوحی

MRasoul
شنبه 27 دی 1393, 15:16 عصر
سلام
دوست عزیز، این که دیتابیس باز باشه، مانع Backupگیری نمی‌شه. برای گرفتن Backup «لازم و کافی» هست که Connection مربوط به Backupگیری
به دیتابیس master باشه. ( بدون نیاز به این که connection اصلی برنامه بسته بشه ).

صبا صبوحی

سلام
خب الان چجوری مسترش کنم
این کانکشن منه

string con = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + AppDomain.CurrentDomain.BaseDirectory.ToString() + "MY_DB.mdf;Integrated Security=True;Connect Timeout=30";

sajadsobh
شنبه 27 دی 1393, 15:56 عصر
توی این ویدئو (http://barnamenevis.org/showthread.php?415427-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%88%DB%8C%D8%AF%D8%A6%D9%88%DB%8C%DB%8C-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A7%D8%B2-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%AA%D8%A7-%D8%A7%D9%86%D8%AA%D9%87%D8%A7&p=1890943&viewfull=1#post1890943) بطور کامل توضیح داده شده!

حسین.کاظمی
شنبه 27 دی 1393, 17:29 عصر
سلام مجدد
شرمنده من سر کار بودم و دسترسی به سیستمم نداشتم
طبق قولی که بهت داده بودم
خدمتت امیدوارم که تونسته باشم مشکلتو حل کرده باشم
127665

موفق باشید

MRasoul
شنبه 27 دی 1393, 22:29 عصر
توی این ویدئو (http://barnamenevis.org/showthread.php?415427-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%88%DB%8C%D8%AF%D8%A6%D9%88%DB%8C%DB%8C-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A7%D8%B2-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%AA%D8%A7-%D8%A7%D9%86%D8%AA%D9%87%D8%A7&p=1890943&viewfull=1#post1890943) بطور کامل توضیح داده شده!

لینک خرابه

MRasoul
شنبه 27 دی 1393, 22:31 عصر
سلام مجدد
شرمنده من سر کار بودم و دسترسی به سیستمم نداشتم
طبق قولی که بهت داده بودم
خدمتت امیدوارم که تونسته باشم مشکلتو حل کرده باشم
127665

موفق باشید

من از فایل mdf میخوام نه دیتابیسی که توی خود اس کیو ال هست
ممنون

حسین.کاظمی
شنبه 27 دی 1393, 22:38 عصر
دوست عزیز
این برنامه با sql server 2014 ساخته شده نه دیتابیس خود ویژوال
شما ابتدا باید فایلی که در پوشه backup گذاشتم را در محیط سsql server manegment ریستور کنید بعدش برنامه را اجرا کن


موفق باشید

MRasoul
یک شنبه 28 دی 1393, 07:59 صبح
دوست عزیز
این برنامه با sql server 2014 ساخته شده نه دیتابیس خود ویژوال
شما ابتدا باید فایلی که در پوشه backup گذاشتم را در محیط سsql server manegment ریستور کنید بعدش برنامه را اجرا کن


موفق باشید

بازم تشکر
اینا رو میدونم عزیز
من بک آپ و رستور رو برا فایلی میخوام که با خود ویژوال ساخته شده و فایل mdf کنار فایل اجرایی برنامه است
ویژوال 2103 هست و کانکشن LocalDB هم میده
با این اوصاف ک گفتم ، دستور بک آپ و رستور میخوام

SabaSabouhi
یک شنبه 28 دی 1393, 09:33 صبح
سلام
خب الان چجوری مسترش کنم
این کانکشن منه

string con = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + AppDomain.CurrentDomain.BaseDirectory.ToString() + "MY_DB.mdf;Integrated Security=True;Connect Timeout=30";

سلام
ببخشید که دیر شد.


public static string CreateConnectionString( string dbServer, string database, string username, string password ) {
var connectionBuilder = username == string.Empty
? new SqlConnectionStringBuilder {
DataSource = dbServer,
InitialCatalog = database,
PersistSecurityInfo = true,
MultipleActiveResultSets = true
}
: new SqlConnectionStringBuilder {
DataSource = dbServer,
InitialCatalog = database,
UserID = username,
Password = password,
MultipleActiveResultSets = true
};
return connectionBuilder.ConnectionString;
}





با این متد ConnectionString رو به دست میاری.
dbServer:
برای LocalDb مقدار رو LocalDB)\v11.0) بگذارید
برای Express مقدار رو SQLEXPRESS\. بگذارید
و برای SqlServer هم آدرس سرور رو.

نام database رو بگذارید master ( فقط برای Backupگیری )
username هم یا sa باشه که رمز رو نیاز دارین، و یا خالی باشه ( Trusted Connection )
به شرطی که کاربری که تو ویندوز با اون login کردین، تو دیتابیس دسترسی کافی داشته باشه.

صبا صبوحی

MRasoul
یک شنبه 28 دی 1393, 19:14 عصر
سلام
ببخشید که دیر شد.

صبا صبوحی

خواهش میکنم،لطف کردین
الان خطای زیر رو میده
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: 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)

SabaSabouhi
یک شنبه 28 دی 1393, 23:17 عصر
سلام
قضیه داره پلیسی می‌شه :)
می‌شه لطف کنید و connectionString تولید شده رو اینجا بگذارید؟
خطایی که ایجاد شده برای اینه که سرور رو پیدا نکرده. اگه connectionString رو ببینم، احتمالاً بتونم بفهمم که خطا از چیه.

صبا صبوحی

MRasoul
سه شنبه 30 دی 1393, 08:06 صبح
سلام
قضیه داره پلیسی می‌شه :)
می‌شه لطف کنید و connectionString تولید شده رو اینجا بگذارید؟
خطایی که ایجاد شده برای اینه که سرور رو پیدا نکرده. اگه connectionString رو ببینم، احتمالاً بتونم بفهمم که خطا از چیه.

صبا صبوحی

:لبخند:
سلام
ممنون از وقتی که میذارین
این کانکشن من
Data Source="LocalDB)11.0)";Initial Catalog=master;Persist Security Info=True;MultipleActiveResultSets=True
اینم کل کد

string str_con = CreateConnectionString("LocalDB)\v11.0)", "master", "", "");
SqlConnection con = new SqlConnection(str_con);
txt_address.Text = con.ConnectionString;
SqlCommand command;
command = new SqlCommand(@"backup database DBDC to disk ='d:\SQLBackup\myBackUp1.bak' with init,stats=10", con);
con.Open();
command.ExecuteNonQuery();
con.Close();

اینم خطایی که میده
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: 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)
اگر دیدین اینن مشکلی نداره اگر میشه یه نمونه کوچیک بذارین که کارک راه بیفته
خیلی خیلی احتیاج دارم،دیروز هم کلا اینترنتمون قطع بود نتونستم بیام جوابتون رو ببینم

SabaSabouhi
سه شنبه 30 دی 1393, 08:30 صبح
سلام
نام Data Source رو اشتباه نوشتین. درستش اینه:


... Data Source="(LocalDB)\v11.0";...


صبا صبوحی

MRasoul
سه شنبه 30 دی 1393, 08:42 صبح
سلام
نام Data Source رو اشتباه نوشتین. درستش اینه:


... Data Source="(LocalDB)\v11.0";...


صبا صبوحی

نه این اینجا اشتب کپی شده
اینم عکس
127740

SabaSabouhi
سه شنبه 30 دی 1393, 12:55 عصر
سلام
ظاهراً که همه چیز درسته. شما یه چیزی رو چک کن.
تو command prompt این فرمان رو بزن ببین به دیتابیس وصل می‌شی یا نه.



sqlcmd -S (LocalDB)\v11.0 -d master -E

اگه LocalDb نصب باشه و مشکلی هم نداشته باشه، با این فرمان باید وصل بشی و خطا نده.

صبا صبوحی

MRasoul
سه شنبه 30 دی 1393, 23:03 عصر
سلام
ظاهراً که همه چیز درسته. شما یه چیزی رو چک کن.
تو command prompt این فرمان رو بزن ببین به دیتابیس وصل می‌شی یا نه.



sqlcmd -S (LocalDB)\v11.0 -d master -E

اگه LocalDb نصب باشه و مشکلی هم نداشته باشه، با این فرمان باید وصل بشی و خطا نده.

صبا صبوحی

وقتی این دستور رو میزنم اینجور میشه ینی چی؟
127769

SabaSabouhi
چهارشنبه 01 بهمن 1393, 08:22 صبح
سلام
معنیش اینه که به LocalDB وصل شدی. اونجا می‌تونی فرمان‌های sql رو بدی ( مثلاً select ) و با فرمان go اجراش کنی
یا با فرمان quit خارج بشی.
من متوجه مشکل نشدم. به همین دلیل یه کد کوچیک برای تست ارتباط نوشتم و اینجا می‌فرستم.
کدی که به این پست پیوست شده رو بگیر. رو دستگاه خودم بی‌مشکل کار می‌کنه.
هم با user و pass درست کار می‌کنه و هم بدون user.



DbConTest.exe server:(LocalDb)\v11.0 db:master



صبا صبوحی

MRasoul
چهارشنبه 01 بهمن 1393, 17:41 عصر
سلام
معنیش اینه که به LocalDB وصل شدی. اونجا می‌تونی فرمان‌های sql رو بدی ( مثلاً select ) و با فرمان go اجراش کنی
یا با فرمان quit خارج بشی.
من متوجه مشکل نشدم. به همین دلیل یه کد کوچیک برای تست ارتباط نوشتم و اینجا می‌فرستم.
کدی که به این پست پیوست شده رو بگیر. رو دستگاه خودم بی‌مشکل کار می‌کنه.
هم با user و pass درست کار می‌کنه و هم بدون user.



DbConTest.exe server:(LocalDb)\v11.0 db:master



صبا صبوحی

سلام
خب این Connected Successfully داد
حالا من برای برنامم چیکار کنم

SabaSabouhi
پنج شنبه 02 بهمن 1393, 09:03 صبح
سلام
خوب Source که همراهشه، همون کاری رو که من کردم، شما هم بکن.
دقیقاً همون کاری رو کردم که شما باید تو کد خودت بکنی.
شما یه Source خودت حتماً یه جایی رو اشتباه کردی که وصل نمی‌شه.
اون قسمت ارتباط رو بردار بگذار تو source خودت.
به همین راحتی.

صبا صبوحی

MRasoul
پنج شنبه 02 بهمن 1393, 18:43 عصر
سلام
خوب Source که همراهشه، همون کاری رو که من کردم، شما هم بکن.
دقیقاً همون کاری رو کردم که شما باید تو کد خودت بکنی.
شما یه Source خودت حتماً یه جایی رو اشتباه کردی که وصل نمی‌شه.
اون قسمت ارتباط رو بردار بگذار تو source خودت.
به همین راحتی.

صبا صبوحی

خب عزیزم سورس نیس،کامل نفرستادی،یبار چک کن

MRasoul
پنج شنبه 02 بهمن 1393, 18:48 عصر
آهان بود
من درست ندیده بودم
ولی من دقیقا نمیدونم این دستورات چکار میکنه،اگر وقت کردین یبار توضیحش بدین ممنون

MRasoul
پنج شنبه 02 بهمن 1393, 19:37 عصر
آقا من دقیقا رشته اتصال برنامه شما رو میدم اما نمیدونم چرا باز همون خطا رو میده ای خدااااااااااااااااااااااا ااااااااااااااااااااااااا اااااااااااااااا

SabaSabouhi
شنبه 04 بهمن 1393, 08:46 صبح
سلام
رسول جان، اون تکه کدی که داره کار می‌کنه رو کپی کن تو برنامه‌ی خودت.
اون چیزی که اینجا نوشتی که باید کار کنه، بعضی وقت‌ها یه چیزی که به چشم نمیاد
ممکنه باعث این خطاها بشه. مثلاً من دیدم بعض وقت‌ها رو یه رشته یه کاراکتر فارسی
مثل « َ » که دیده هم نمی‌شه به راحتی باعث می‌شه که برنامه درست کار نکنه.
کاری که شما انجام دادی در کل درسته، اما یه چیز جزئی هست که کار رو خراب کرده
من هم نمی‌تونم حدس بزنم که مشکل چی می‌تونه باشه. اما الان یه کد داری که
کار می‌کنه، قسمت مشکل دار کد خودت رو با این کد تعویض کن. امیدارم که مشکلت رو
حل کنه.

صبا صبوحی

MRasoul
دوشنبه 06 بهمن 1393, 09:55 صبح
قربونت عزیز
خیلی لطف کردی
تمام تلاشم رو میکنم که با کد شما این مشکل رو بر طرف کنم بازم ممنون