# Native Code > برنامه نویسی در 6 VB > مطالب مرتبط با بانکهای اطلاعاتی در VB6 >  چگونه از بانک اطلاعاتی SQL بکاپ گرفته و آنرا بازیابی کنیم ؟

## reza_mn

سلام مجدد خدمت دوستان
عزیزان برنامه نویس استفاده کننده از SQl Server برای بانکهای اطلاعاتی خود ، چطور بکاپهای گرفته شده از طریق دستور زیر را بازیابی میکنند:
"Backup Database X1 to disk ='path'"
البته دستور لازم جهت بازیابی اطلاعات همان Restore هست ولی با اجرای این فرمان پیامی مبنی بر غیر قابل نوشتن بودن فایل مورد نظر صادر میشود. عزیزان این مشکل رو چطور حل میکنند ؟

----------


## mormorbaba

با سلام خدمت شما
از اين كلاس استفاده كن مشكلت برطرف مي شه.


 
Dim oBackRest As backup_restore
   Set oBackRest = New backup_restore
   Call oBackRest.Connect(Trim(""), Trim(""), Trim(""), True)
   Call oBackRest.BackupDatabaseToFile("Databasename", Addressbackup & ".bak") 


و براي restore

 
   Set oBackRest = New backup_restore
   Call oBackRest.Connect(Trim(""), Trim(""), Trim(""), True)
   Call oBackRest.DropDatabase("Databasename") 
   Call oBackRest.RestoreDatabaseFromFile("Databasename", (addressbackup))

----------


## m_vb1386

براي استفاده از اين كلاس بايد كدوم ريفرنس رو به برنامه اضافه كرد؟

----------


## reza_mn

Microsoft SQLDMO object Library

----------


## mohamadsamin

سلام دوست عزیز چرا گیر داره؟
روی handelerror

----------


## reza_mn

اون مربوط به قسمت کنترل و صدور خطاست ، میتونید اون قسمت ها رو بدلخواه عوض کنید ، در عملکرد فرقی نمیکنه .

----------


## mohamadsamin

ممنون از لطفتون حالا این بک آپ رو کجا می ریزه؟

----------


## reza_mn

addressbackup مکانی هست که شما تعین میکنید برای ذخیره بکاپ فایل و دیتابیس مورد نظر

----------


## mahmood_s

گه ممكنه يك مثالي بذاريد ممنون ميشم

----------


## lahij.ir

خسته نباشید دوستان ، موقع restore دیتابیس مشکل داره ، نمیدونم شاید من یه جای کار اشتباه می کنم ، اگه میشه کسی جواب گرفته سورس بزاره لطفا :قلب:

----------


## adib202

سلام  من موقع backup با این باگ بر می خورم.

error [microsoft][odbc sql server driver][sql server]the filename 'c:\new folder\file.bak' is invalid as a backup device name.reissue the backup statement with a valid filename.

ببینید.من اگه backup رو روی یک فولدری که اسمش فاصله نداشته باشه بگیرم مشکلی نداره .مثلا روی این آدرس:
C:\NEWFOLDER\FILE.BAK
ولی روی این ERROR میده:
C:\NEW FOLDER\FILE.BAK
لطفا کمکم کنین

----------


## mds_boy

> سلام  من موقع backup با این باگ بر می خورم.
> 
> error [microsoft][odbc sql server driver][sql server]the filename 'c:\new folder\file.bak' is invalid as a backup device name.reissue the backup statement with a valid filename.
> 
> ببینید.من اگه backup رو روی یک فولدری که اسمش فاصله نداشته باشه بگیرم مشکلی نداره .مثلا روی این آدرس:
> C:\NEWFOLDER\FILE.BAK
> ولی روی این ERROR میده:
> C:\NEW FOLDER\FILE.BAK
> لطفا کمکم کنین



من هم چنین مشکلی دارم، البته من از راهه Winexec و Winrar انجام دادم، به طوری که فایل رو فشرده میکنم و موقع بازیابی از فشردگی در میارم.
نمیدونم چرا فاصله قبول نمیکنه، هر جا بینه اسمه پوشه ها فاصله باشه بکاپ انجام نمیشه !!!
لطفا کسی کمک کنه  :تشویق:   :قلب:   :بوس: .

----------


## adib202

خواهشا کمک کنید.مشکلم خیلی حاد شده :ناراحت:

----------


## SilverGold

ببخشید میشه یک مثال واضح تر مطرح کنید

----------


## adib202

> ببخشید میشه یک مثال واضح تر مطرح کنید


ببینید روی این آدرس بین new و folder فاصله نیست و به همین خاطر به درستی بک آپ می گیره:
C:\NEWFOLDER\FILE.BAK


ولی روی این آدرس که  بین new و folder فاصله هستش ERROR میده:
C:\NEW FOLDER\FILE.BAK

----------


## adib202

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

----------


## nima_8m

سلام
من این نمونه برنامه رو از همین سایت گرتم تست کردم جالب بود شاید به درد شما هم خورد

----------


## adib202

> سلام
> من این نمونه برنامه رو از همین سایت گرتم تست کردم جالب بود شاید به درد شما هم خورد


ممنون ازت nima_8m. ولی اینم دقیقا همون مشکلی که گفتم داره.




> ببینید روی این آدرس بین new و folder فاصله نیست و به همین خاطر به درستی بک آپ می گیره:
> C:\NEWFOLDER\FILE.BAK
> 
> 
> ولی روی این آدرس که بین new و folder فاصله هستش ERROR میده:
> C:\NEW FOLDER\FILE.BAK

----------


## mds_boy

*دوستان یک نمونه برنامه بزارید، من از این کلاسی که گذاشتین توسط mormorbaba سر در نمیارم، و همچنین از این برنامه nima_8m عزیز.
لطفا کاربردی و راحت تر باشه، زیاد دستور نداشته باشه، و راحت بشه ازش استفاده کرد، اگه مشکل هم داشت مسئله ای نیست.
لطفا کمکم کنید، چند روزه دیگه تحویله پروژمه، هنوز هم برنامم کامل نیست  .
تشکر.*

----------


## adib202

راجع به این مبحث انصافا اگه کسی اطلاعی داره کمک کنه.

----------


## mds_boy

:لبخند گشاده!:  دوستان یه چیزایی پیدا کردم، براتون میزارم:
*بکاپ:*
sql = "backup database stank to disk=*'*" & txtPath & "*'*"
con.Execute sql
*ریستور :*
st = "use  master restore database stank from disk=*'*" & txtPath & "*'*"
con.Execute st
من امتحانش نکردم ها، از یکی از پروژه های بچه ها گرفتمش، ولی بازم فکر کنم، اون اشکال فاصله بین مسیر ، تو این هم هست، و اگر بین مسیر بکاپ فاصله ای باشه، مثل : c:\new folder بکاپ کار نمیکنه !
اگر دوستان بتونن روشی یا ترفندی براش پیدا کنن، ممنون میشم.
دوستان با سابقه عزیز، لطفا Help Me PLZ ، خواهش.
تحویل پروژه من 2 هفته تمدید شد، لطفا تا اون موقع چاره ای بیندیشید، من هم باز دنبالش هستم.
موفق و پیروز باشید.

----------


## milad-fa

با سلام خدمت دوستان،
آیا منظورتون یه چنین چیزی هست؟!

----------


## mds_boy

سلام به همه
اگه دقت کنی میلاد جان، این برنامت مشکل کوچکی یا برای ما بزرگی داره، شما مثلا مسیر مقصد رو بده c:\NewFolder و یک بار هم مسیرت رو بده c:\New Folder بعد میفهمی مشکل از کجاست، فاصله تو مسیر دهی مجاز نیست، میتونی این مشکل رو حل کنی ؟؟؟
اگه این و هم بتونی بعدا میزارم،تو شرکتم کار کنی  :قهقهه:  ، شوخی کردم، استاده مایی  :تشویق:  .
موفق باشید دوستان

----------


## adib202

> با سلام خدمت دوستان،
> آیا منظورتون یه چنین چیزی هست؟!


آره ، دقیقا.فقط بشه هر آدرسی که ممکنه بک آپ رو اونجا کپی کنه.

----------


## milad-fa

با سلام خدمت دوستان،
ببخشید ورژن قبلی نرم افزارم مشکل داشت. :قهقهه: 
بفرمایید اینم ورژن جدید مشکل رفع شد!
ببینید خوب هست؟!

----------


## adib202

مرسی milad-fa.دمت گرم. :قلب: 
میشه راه حلش رو بگی ؟؟

----------


## mds_boy

> با سلام خدمت دوستان،
> ببخشید ورژن قبلی نرم افزارم مشکل داشت.
> بفرمایید اینم ورژن جدید مشکل رفع شد!
> ببینید خوب هست؟!


ممنون میلاد جان، همیشه اولین و آخرینی  :تشویق:  .

----------


## mds_boy

میلاد جان سورسش رو نمیزاری ؟؟؟
من از کی منتظرم ! ؟ :  :افسرده:  .

----------


## mds_boy

سلام به همه،
 آقا میلاد مشکلم حل شد، تونستم خودم بنویسمش، 
از همه هم ممنونم.

----------


## adib202

> سلام به همه،
> آقا میلاد مشکلم حل شد، تونستم خودم بنویسمش، 
> از همه هم ممنونم.


اگه میشه راه حلشو بگو.من هنوز نتونستم حلش کنم. :اشتباه:

----------


## milad-fa

با سلام خدمت دوستان عزیز،
بفرمایید اینم سورس برنامه ای که قبلاً گذاشته بودم.
ببخشید اگه یک مقدار دیر شد.
اگه سوال یا مشکلی هم بود بگید!
موفق باشید/

----------


## adib202

ممنون milad-fa از کمکت.خیلی حال دادی

----------


## احمد رضا طونی

ببین دوست عزیز فکر نکنم نیازی به مثال باشه چون اگه تو اس کیو ال رو بلد باشی دیگه جایی مشگل داری چون بقیه دوستان هم می دونن که اس کیو ال کد های مخصوص برای همه کاریو داره فقط شما کافیه که نام جدول و فیلدهای خودتو جایگذاری کنی اون 2 تا کلاسی که اون بالا یکی از دوستان برات تعریف کرده واقعا مفیدن و کاملا که  خودت می دونی گسترششون بدی :خجالت:

----------


## m_sol_ir

آیا این برنامه فقط روی سیستمی که sql نصب هست درست کار می کنه .یک setup  ساختم و sqldmo رو تو ی اون گذاشتم ولی وقتی از روی client اجرا می کنم error میده.

----------


## milad-fa

> آیا این برنامه فقط روی سیستمی که sql نصب هست درست کار می کنه .یک setup  ساختم و sqldmo رو تو ی اون گذاشتم ولی وقتی از روی client اجرا می کنم error میده.


سلام دوست عزیز بودن این dll برای backup گرفتن تو کلاینت کافیه ولی بهتره sql رو بصورت client رو سیستم کلاینت نصب کنید تا کامپوننت هاش نصب بشه.تو برنامه های تحت شبکه هم معمولاً sql client رو رو client ها نصب می کنند.
موفق باشید.

----------


## alizanganeh

> با سلام خدمت دوستان عزیز،
> بفرمایید اینم سورس برنامه ای که قبلاً گذاشته بودم.
> ببخشید اگه یک مقدار دیر شد.
> اگه سوال یا مشکلی هم بود بگید!
> موفق باشید/




خیلی ممنون بابت برنامه
عالیه
فقط یک مشکلی دارم
روی فرمی که دادید کامل کار میکنه ولی وقتی روی برنامه ی خودم میذارم برای restore وقتی میزنم خیلی طول میکشه تا انجام بشه . ینی بمدت شاید 20 ثانیه برنامه قفل میشه و بعد آزاد میشه که تازه restore انجام نشده
میخواستم بدونم بجز اون چیزایی که تیو جنرال تعریف میشن و اضافه کردن ماژول و اضافه کردن رفرنس microsoft sqldmo object library کار دیگه این هم باید انجام بدم؟

ممنون

----------


## alizanganeh

کسی نبود مارو کمک کنه واقعا ؟

----------


## alizanganeh

کسی نبود مارو کمک کنه واقعا ؟

----------


## ra0661

دادا مشکلت الان دقیقا کجاست  یعنی مگه چند تا سورس هم نمذاشتن برات ؟

----------


## alizanganeh

> دادا مشکلت الان دقیقا کجاست  یعنی مگه چند تا سورس هم نمذاشتن برات ؟




ببین من از این برنامه استفاده کردم

https://barnamenevis.org/attachment.p...5&d=1285265009

توی این پروژه همه چیز کار میکنن
ولی وقتی میبرم توی برنامه ی خودم کد ها و تموم چیزهارو ، بک آپ کار میکنه ولی ریاستور نه
گفتم شاید کار خاضی باید انجام بدم که نمیدونم !
ممنون

----------


## محسن واژدی

> ببین من از این برنامه استفاده کردم
> 
> https://barnamenevis.org/attachment.p...5&d=1285265009
> 
> توی این پروژه همه چیز کار میکنن
> ولی وقتی میبرم توی برنامه ی خودم کد ها و تموم چیزهارو ، بک آپ کار میکنه ولی ریاستور نه
> گفتم شاید کار خاضی باید انجام بدم که نمیدونم !
> ممنون


سلام علیکم
 به احتمال خیلی قوی بخاطر بازبودن بانک هست، یکبار پیش از restore همه connectionهای متصله به بانک رو ببندید و دوباره دستورات  اجرا کنین

موفق باشید

----------


## alizanganeh

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

----------


## alizanganeh

> سلام علیکم
>  به احتمال خیلی قوی بخاطر بازبودن بانک هست، یکبار پیش از restore همه connectionهای متصله به بانک رو ببندید و دوباره دستورات  اجرا کنین
> 
> موفق باشید




آقا اینی که گفتی میشه فک کنم
وقتی کدهای باز کردن بانک رو برمیدارم کار میکنه

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

و اینکه الان من 1 فرم دارم که در حین برنامه بازه همیشه و از اطلاعاتی که توش ثبت میشه همه جا استفاده میکنم
ینی باید تمام کانکشن های اون رو هم ببندم ؟
ممنون

----------


## محسن واژدی

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


کانکشن ها رو ببندین کافی هست




> و اینکه الان من 1 فرم دارم که در حین برنامه بازه همیشه و از اطلاعاتی که توش ثبت میشه همه جا استفاده میکنم
> ینی باید تمام کانکشن های اون رو هم ببندم ؟


بله چون میخواهیم داده های بانک را با back-up جدید بازنویسی کنیم باید همه کانکشن های فعال را ببندیم و اگه حداقل یک کانکشن هم باز باشه چون در اینصورت بانک در حال استفاده است بازیابی با شکست مواجه میشود

موفق باشید

----------


## alizanganeh

آقا من میخوام رفرنس Microsoft SQLDMO object Library رو به برنامه اضافه کنم ولی توی پیداش نمیکنم
قبلا با ویندوز 7 مشکلی نبود
ولی با ویندوز 8 که نصب کردم اینطوریه
چه کنم ؟

ممنون

----------

