PDA

View Full Version : سوال: مشکل در Bakup گیری در دیتابیس (نام دیتابیس)



Hamishebahar
شنبه 28 آذر 1388, 19:49 عصر
سلام دوستان خسته نباشید.
من یه مشکل در بکاپ گیری در دیتابیس دارم.


//BACKUP DATABASE نام بانک اطلاعاتی TO DISK = 'مسیر پشتیبان گیری بانک اطلاعاتی'

string query = "BACKUP DATABASE projectdb. TO DISK = 'C:\\BackupDatabaseLibrary\\Backup.MDF'";

من چند فایل sql دارم نمیدونم نام دیتابیسش چیه!!!
و نام دیتابیس که میدم یا میگه موجود نیست یا خطاهای دیگه میده.
لطفاً کمکم کنید.
ممنون.

مهدی رحیم زاده
شنبه 28 آذر 1388, 20:08 عصر
با استفاده از SQLDMO پشتیبان بگیر.
من میگیرم و مشکلی هم ندارم .

AliRezaPro
شنبه 28 آذر 1388, 20:43 عصر
در خط زیر

tring query = "BACKUP DATABASE projectdb. TO DISK = 'C:\\BackupDatabaseLibrary\\Backup.MDF'";
شما نام دیتابیس رو درست وارد میکنید؟

Hamishebahar
شنبه 28 آذر 1388, 20:50 عصر
با استفاده از SQLDMO پشتیبان بگیر.
من میگیرم و مشکلی هم ندارم .
میشه یه توضیح بدید ممنونم.


شما نام دیتابیس رو درست وارد میکنید؟
بله.
من اسم دیتا رو دارم ولی نمیدونم درسته یا نه.من چطوری میتونم نام دیتابیس یک فایل SQL رو بدست بیارم؟

ممنون.

csharpprogramer88
شنبه 28 آذر 1388, 21:21 عصر
سلامي در هواي سر به Hamishebahar
شايد ايراد از connection string باشد حتما چك كن
نقطه projectdb. بيانگر اين است كه احتمالا شما كدتان از تاپيك من گرفتيد بگذريم

اين فايلي كه برايتان فرستادم اول connection string را تغيير بده بعداز آن نام ديتابيس را مشخص كن



string query = "BACKUP DATABASE projectdb TO DISK = 'C:\\aaaa\\Backup.MDF'";

projectdb نام ديتابيس شماست و چك كن البته c:\aaa با دستور


System.IO.Directory.CreateDirectory(@"C:\aaaa");

ساخته مي شود

Hamishebahar
چهارشنبه 02 دی 1388, 14:26 عصر
سلامي در هواي سر به Hamishebahar
شايد ايراد از connection string باشد حتما چك كن
نقطه projectdb. بيانگر اين است كه احتمالا شما كدتان از تاپيك من گرفتيد بگذريم

اين فايلي كه برايتان فرستادم اول connection string را تغيير بده بعداز آن نام ديتابيس را مشخص كن



string query = "BACKUP DATABASE projectdb TO DISK = 'C:\\aaaa\\Backup.MDF'";
projectdb نام ديتابيس شماست و چك كن البته c:\aaa با دستور


System.IO.Directory.CreateDirectory(@"C:\aaaa");
ساخته مي شود

سلام.
ممنونم دوست ممنون از راهنماییتون.

به خطای زیر نگاه کنید:
http://hamishebaharp30world.persiangig.com/Pics/Error%20Sql.JPG

هنگام بکاب گیری همچین خطایی میده.

Hamishebahar
چهارشنبه 02 دی 1388, 18:49 عصر
سلام.
کد اونجا زیر عکس نوشته دوست من.

AliRezaPro
چهارشنبه 02 دی 1388, 20:14 عصر
http://barnamenevis.org/forum/showpost.php?p=872021&postcount=3

slashslash2009
چهارشنبه 02 دی 1388, 20:50 عصر
فعلا یک دایرکتوری مثلا در درایو D خودت درست کن بعد ببین میتونی اونجا Backup بسازی چون خیلی مسیر سختی رو واسه backup انتخاب کردی

bpzone
چهارشنبه 02 دی 1388, 21:28 عصر
_SqlCommand = "BACKUP DATABASE " + NameDB + " TO DISK = '" + PathDB + "\\" + Name + ".bak'";


NameDB = اسم دیتابیس
PathDB = مسیری که می خواهید backup رو ذخیره کنید
Name = اسمی که میخواهید به فایل backup بدید

csharpprogramer88
چهارشنبه 02 دی 1388, 21:33 عصر
به تاپيك من سر بزن و كدش را دانلود كنيد هم back up داره هم restore
http://barnamenevis.org/forum/showthread.php?t=194881

يادت نره connection strin درست كني

Hamishebahar
دوشنبه 07 دی 1388, 14:56 عصر
سلام.
دوستان عزیز خیلی ممنونم ولی من تمام کدهایی که اینجا گذاشتین رو میدونم چی به چیه.
مشکل اینجاست که من نمیتونم بکاپ بگیرم اون پیغام خطایی که در صفحه قبل مشاهده کردین همیشه هست.

علیرضا حسن زاده
دوشنبه 07 دی 1388, 15:31 عصر
سلام.
دوستان عزیز خیلی ممنونم ولی من تمام کدهایی که اینجا گذاشتین رو میدونم چی به چیه.
مشکل اینجاست که من نمیتونم بکاپ بگیرم اون پیغام خطایی که در صفحه قبل مشاهده کردین همیشه هست.
این پست رو ببین
http://barnamenevis.org/forum/showthread.php?t=192016
جواب مشکلتو می تونی درکنی فکر کنم کامل توضیح دادم بازم مشکلی بود در خدمتم:خجالت:

__H2__
چهارشنبه 09 دی 1388, 20:02 عصر
سلام دوست قدیمی ...
ویندوزهای Vista و Win7 سیستم امنیتی UAC قوی دارند که اجازه هر کاری به برنامه ها نمیدهد.
وقتی این مکانیزم با مجوزهای امنیتی NTFS ریشه درایو C تلفیق شود ... !

پیشنهاد میکنم اگر ویندوزتان در درایو C نصب است، یکبار پشتیبان گیری را در مسیر ریشه درایو دیگری امتحان کنید.
البته شاید هم مشکلتان حل نشود ولی امتحانش ضرری ندارد.

البته جناب slashslash2009 هم اشاره ای به این مسئله داشتند ولی نمیدانم آزمایش کردید یا نه.
امتحان کنید و در صورت تغییر متن خطا، متن جدید را هم اینجا درج کنید.
موفق باشید.

Hamishebahar
پنج شنبه 10 دی 1388, 14:06 عصر
سلام به همه عزیزانی که کمک کردن.
نه مشکل از ntfs و نه از fat32 بودن درایو هاست.
مشکل اینجاست که ما به جای نام دیتابیس باید آدرس دیتابیس رو بدیم به صورت زیر :


"BACKUP DATABASE[" + آدرس دیتابیس+ "] TO DISK = '" + آدرس فایل+ "'";مثلاً:

BACKUP DATABASE[C:\a.mdf] TO DISK = 'e:\b.bak'هر جا که خواستین بکاپ بگیرین.
برای ریستور هم :

"use master; RESTORE DATABASE [" + آدرس دیتابیس+ "] FROM DISK = '" + آدرس فایل+ "' with replace";

ممنون از همراهی همه.
موفق باشید و سربلند.

__H2__
جمعه 11 دی 1388, 01:00 صبح
سلام


مشکل اینجاست که ما به جای نام دیتابیس باید آدرس دیتابیس رو بدیم

دوست عزیز، همان نام دیتابیس درست است نه مسیرش ولی ...
میدانید مشکل کجا است؟

اگر کدشما با دادن مسیر دیتابیس به جای نام ظاهری ان راه افتاده و کار میکند یعنی شما از SQL Server Express و بدون Attach دارید اینکار را انجام میدهید!!!!!

SQL Server Express یک قابلیت کارکرد بدون Attach صریح دارد که در این حالت مسیر فایل mdf را در رشته ConnectionString به SQL Server Express میدهید.

در این حالت SQL Server Express در پس ضمینه و با اولین درخواست نام واقعی دیتابیس شما تغییر داده (Rename) و به مسیر فیزیکی ان ست میکند.

یعنی اگر دیتابیس شما db.mdf و مثلاً در ریشه C باشد، SQL Server Express نام دیتابیسی ان را برای Attach موقت خودش به C:\DB.mdf تغییر میدهد !!!!
و دیگر نام دیتابیس Attach موقت شده شما db نیست و بلکه C:\db.mdf میشود!

SQL Server Express با اینکار مشکلات تشابه نامهای دیتابیس برای برنامه های مختلف را حل میکند و به نوعی تضمین میکند که نام دیتابیس Attach شده تکراری نباشد.
و البته SQL Server Express در پایان کار دیتابیس را Detach میکند.

در نهایت چون شما در این حالت دارید کار میکنید درست است که به ظاهر مسیر دیتابیس را داده اید ولی در واقع همان نام دیتابیس را داده اید.

=====

و البته مطلب دیگری هم وجود دارد، به صورت عرف رایج دستورات Backup و Restore برای دیتابیس های Attach دائم انجام میشود و شما اگر دیتابیس را Attach نمیکنید پس مسیر و نام فایل دیتابیس را در ConnectionString داده اید! درست عین وصل شدن به فایل mdb برنامه Access و موتور JET ...
خوب و بدش را نمیدانم ...
ولی بیشتر افرادی که به دیتابیس با دادن مسیر و نام فایلش وصل میشوند برای backup گیری می آیند و کل فایل دیتابیس را فشرده و کپی میکنند و backup را میسازند!!!
برای restore هم فایل را گرفته و مجدد از فشردگی خارج کرده و با فایل قبلی replace میکنند. !

روی Attach کردن دیتابیس و یا این مطلب اخری هم میتوانید فکر کنید.

=====

بحرحال خوشحالم که مشکلتان حل شد.
انشا ا... همواره موفق باشید.