PDA

View Full Version : مشکل من با تهیه پشتیبان و بازیابی اطلاعات



sh2007
جمعه 27 آبان 1390, 20:39 عصر
دوستان سلام
من توی محیط وی بی 2010 اقدام به ساخت یک بانک اطلاعاتی از express کردم که تنها راه اتصال به اون این کانکشن استرینگ می باشد

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Mem.mdf;Integrated Security=True;User Instance=True

و همانطوری که توی این کانکشن استرینگ می بینید از AttachDbFilename استفاده شده با این کانکشن استرینگ من می تونم تهیه پشتیبان رو انجام بده ولی امکان باریابی اطلاعات با توجه به نوع کانکشن استرینگ وجود ندارد شاید بگویید که کانکشن استرینگت رو عوض کن امتحان کردم چون دیتابیس توی محیط خود 2010 درست شده امکان تغییر اون نیست

می خواستم بدونم اساتید نظر یا تکنیکی برای حل مشکل من برای پشتیبانی ببخشید بازیابی اطلاعات ندارن
ممنون

sh2007
جمعه 27 آبان 1390, 20:50 عصر
دوستان یک نکته جلب اینکه من محیط منجمنت اکسپرس رو نصب کردم خودش دیتابیس ها را با مسیر شناخته مثلا نوشته G:\vb2010\project\database\mem.mdf
لطفا راهنمائی کنید

mgh64120
جمعه 27 آبان 1390, 23:39 عصر
سلام دوست عزيز


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

تا جايي كه من ميدونم كانكشن استرينگ براي Backup و Restore يكسان هست.
من هم قبلا به اين مشكل برخوردم و بعد فهميدم كه براي بازگزداني اطلاعات
بانك اطلاعاتي بايد در حالت Single_User باشه.
اينطوري :

Dim strSql As String = _
"USE master;ALTER DATABASE DBName SET SINGLE_USER with ROLLBACK IMMEDIATE;" & _
"RESTORE DATABASE DBName FROM DISK ='" & txtMasir.Text & _
"' with REPLACE;ALTER DATABASE DBName SET MULTI_USER"


موفق باشيد.

مرتضی تقدمی
شنبه 28 آبان 1390, 00:19 صبح
سلام
برای restore من از این استفاده می کنم :


USE master; RESTORE DATABASE [" & str_connection & " ]" & " FROM DISK ='" & strFileName & "'"

sh2007
یک شنبه 29 آبان 1390, 14:28 عصر
دوستان كن اينها رو تست مي كنم ولي فكر كنم كه با اين كانكشن استرينگ نشه بازيابي رو انجام داد تهيه پشتيبان مي شود انجام داد ولي بازيابي نه

نظري نداريد

sh2007
یک شنبه 29 آبان 1390, 18:39 عصر
سلام دوست عزيز

تا جايي كه من ميدونم كانكشن استرينگ براي Backup و Restore يكسان هست.

بانك اطلاعاتي بايد در حالت Single_User باشه.
اينطوري :

Dim strSql As String = _
"USE master;ALTER DATABASE DBName SET SINGLE_USER with ROLLBACK IMMEDIATE;" & _
"RESTORE DATABASE DBName FROM DISK ='" & txtMasir.Text & _
"' with REPLACE;ALTER DATABASE DBName SET MULTI_USER"


موفق باشيد.

دوست من شما برای بازیابی کانکشن یا استرینگ رو به دیتابیس master وصل کردی تا بتونی از بازیابی استفاده کنی و این در موقعی کاربرد داره که محیط منجمنت sql نصب شده باشه حالا اگه محیط منجمنت نیست و شما برای کاربر از انجین اکسپرس نصب کرده باشی این کد جواب نمی دهد

mgh64120
یک شنبه 29 آبان 1390, 21:48 عصر
سلام دوست عزيز
در اين كد هيچ اشاره اي به كانكشن و طريقه اتصال شما به پايگاه داده نشده و مهم نيست كه شما چطور به پايگاه وصل شده ايد و هيچ نيازي به SQL Server Managmant Studio نداره.
براي اينكه شما بتونيد عمليات بازيابي رو انجام بديد، لازمه كه ديتابيس مورد نظر براي بازيابي رو به حالت Single_User دراوريم(در غير اينصورت ديتابيس اجرا بازيابي نميدهد.).
براي اين كار بايستي با استفاده از يك ديتابيس ديگر اين كار انجام بديد(مثلا Master)

"USE master;ALTER DATABASE DBName SET SINGLE_USER with ROLLBACK IMMEDIATE;"

خوب بعد دستور بازيابي مربوطه رو اجرا ميكنيم.

"RESTORE DATABASE DBName FROM DISK ='" & txtMasir.Text & _
"' with REPLACE;"

و در آخر ديتابيس رو به حالت MULTI_USER در مي اوريم كه همه كاربران شبكه بتونند از ديتابيس استفاده كنند.

ALTER DATABASE DBName SET MULTI_USER"

موفق باشيد.

sh2007
دوشنبه 30 آبان 1390, 18:20 عصر
سلام دوست عزيز
در اين كد هيچ اشاره اي به كانكشن و طريقه اتصال شما به پايگاه داده نشده و مهم نيست كه شما چطور به پايگاه وصل شده ايد و هيچ نيازي به SQL Server Managmant Studio نداره.
براي اينكه شما بتونيد عمليات بازيابي رو انجام بديد، لازمه كه ديتابيس مورد نظر براي بازيابي رو به حالت Single_User دراوريم(در غير اينصورت ديتابيس اجرا بازيابي نميدهد.).
براي اين كار بايستي با استفاده از يك ديتابيس ديگر اين كار انجام بديد(مثلا Master)

"USE master;ALTER DATABASE DBName SET SINGLE_USER with ROLLBACK IMMEDIATE;"

خوب بعد دستور بازيابي مربوطه رو اجرا ميكنيم.

"RESTORE DATABASE DBName FROM DISK ='" & txtMasir.Text & _
"' with REPLACE;"

و در آخر ديتابيس رو به حالت MULTI_USER در مي اوريم كه همه كاربران شبكه بتونند از ديتابيس استفاده كنند.

ALTER DATABASE DBName SET MULTI_USER"

موفق باشيد.

دوست من از راهنمائی شما سپاسگذارم در صورتی که با مشکل برخوردم تاییک می زنم