PDA

View Full Version : سوال: چطور فایل های دیتابیس mdf پروژه را به عنوان bakcup کپی کنم



esagraphic
جمعه 20 شهریور 1394, 11:57 صبح
سلام به همه دوستان من دیتابیس برنامه ام از نوع local و sqlexpress است میخوام بک اپ بگیرم اما طوری که من میخوام اینه که تنها فایل های mydbname.mdf و log را کاپی کنم طرز کارش چیجوری است اگه نمونه چیزی دارین ممنون میشم توسط برنامه browsedailog را میدم مسیر را انتخاب کنه اون فایل ها کاپی بشه

group45
جمعه 20 شهریور 1394, 12:05 عصر
با سلام
شما ابتدا باید sql رو متوقف کنید که اگه یه سرچ کوچیک بزنید کدشو پیدا میکنید
بهد با دستور کپی در سی شارپ به راحتی دیتابیس رو کپی کنید و سپس sql رو حتما اجرا کنید

esagraphic
جمعه 20 شهریور 1394, 12:15 عصر
با سلام
شما ابتدا باید sql رو متوقف کنید که اگه یه سرچ کوچیک بزنید کدشو پیدا میکنید
بهد با دستور کپی در سی شارپ به راحتی دیتابیس رو کپی کنید و سپس sql رو حتما اجرا کنید


با تشکر دوست عزیز
من خیلی جستجو کردم اما چیز بدرد بخوری نیافتم اگه نمونه دارین ممنونت میشم بازم من جستجو میکنم و اینکه چی قسم sql را متوقف کنم نمیدونم

SabaSabouhi
شنبه 21 شهریور 1394, 11:41 صبح
سلام به همه دوستان من دیتابیس برنامه ام از نوع local و sqlexpress است میخوام بک اپ بگیرم اما طوری که من میخوام اینه که تنها فایل های mydbname.mdf و log را کاپی کنم طرز کارش چیجوری است اگه نمونه چیزی دارین ممنون میشم توسط برنامه browsedailog را میدم مسیر را انتخاب کنه اون فایل ها کاپی بشه

سلام
دو موضوع متفاوت وجود داره، کپی کردن فایل‌های mdf, ldf رو بهش backup نمی‌گن. برای کپی کردن این فایل‌ها ابتدا باید ارتباط اون‌ها رو
از server قطع کنی. به این کار می‌گن Detach کردن و بعد از کپی کردن برای برقراری مجدد ارتباط اون رو Attach می‌کنی.
برای backup گرفتن نیازی به قطع ارتباط دیتابیس و سرور نیست. فرمان backup رو به سرور می‌دی و اون بقیه‌ی کار رو انجام می‌ده.

هر دو کار رو می‌توی توی Management Studio انجام بدی و یا با scriptهای t-sql توی command file یا source برنامه‌ات انجامشون بدی.

صبا صبوحی

esagraphic
شنبه 21 شهریور 1394, 14:38 عصر
سلام
دو موضوع متفاوت وجود داره، کپی کردن فایل‌های mdf, ldf رو بهش backup نمی‌گن. برای کپی کردن این فایل‌ها ابتدا باید ارتباط اون‌ها رو
از server قطع کنی. به این کار می‌گن Detach کردن و بعد از کپی کردن برای برقراری مجدد ارتباط اون رو Attach می‌کنی.
برای backup گرفتن نیازی به قطع ارتباط دیتابیس و سرور نیست. فرمان backup رو به سرور می‌دی و اون بقیه‌ی کار رو انجام می‌ده.

هر دو کار رو می‌توی توی Management Studio انجام بدی و یا با scriptهای t-sql توی command file یا source برنامه‌ات انجامشون بدی.

صبا صبوحی


سلام دوست عزیز
من از دیتابیس لوکال استفاده میکنم و Sql sever هم نصب نیست میشه بین چیطوری detach کنم ممنون

SabaSabouhi
شنبه 21 شهریور 1394, 19:42 عصر
سلام دوست عزیز
من از دیتابیس لوکال استفاده میکنم و Sql sever هم نصب نیست میشه بین چیطوری detach کنم ممنون

سلام
احتمالاً منظورت از لوکال LocalDb هست. در این صورت به شکل پیش‌فرض Management Studio نصب نیست. می‌تونی این ابزار رو
جداگانه تهیه کنی ( به‌ترین روش دانلود از سایت مایکروسافت هست )
اگر هم نخواستی می‌تونی script مربوطه رو تحت sqlcmd اجرا کنی. البته تردید دارم که همراه با LocalDb امکان sqlcmd هم نصب
می‌شه یا نه.


sqlcmd -S (LocalDb)\v11.0 -d master -Q "EXEC sp_detach_db @dbname = N'MyDatabaseName'"

تو این فرمان اسم دیتابیست رو بجای MydatabaseName قرار بده و اجراش کن.
اگه sqlcmd خطا داد و اجرا نشد، می‌تونی تو خود VS یک new query باز کنی، دیتابیس رو بگذاری روی master و اون فرمان رو از exec به بعد
توش کپی کنی و اجرا کنی


EXEC sp_detach_db @dbname = N'MyDatabaseName'

صبا صبوحی

علی فتحی
جمعه 15 آبان 1394, 21:08 عصر
FolderBrowserDialog FolderBrowserDialog1 = new FolderBrowserDialog();FolderBrowserDialog1.Descrip tion = "Find Folder to Copy.";
if (FolderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string[] files = Directory.GetFiles(FolderBrowserDialog1.SelectedPa th);
Directory.CreateDirectory(@"C:\CopiedFolder");
for (int i = 0; i < files.Length; i++)
{
string tmpFileExt = Path.GetExtension(files[i]);
string tmpFileName = Path.GetFileNameWithoutExtension(files[i]);
File.Copy(files[i], @"C:\CopiedFolder\" + tmpFileName + tmpFileExt, true);
}
}