PDA

View Full Version : restore database



hamidafs
دوشنبه 13 فروردین 1386, 09:22 صبح
سلام
من می خوام دیتابیس sql server 2000خودم روrestore کنم ولی متاسفانه هنوز نتونستم این کار رو با vb.net انجام بدم.
البته من search هم کردم ولی نتو نستم مشکلم رو حل کنم.
با دستور زیر من یک stored proc برای restoer , backup مینویسم تا درsql serverاون رو بسازه.
con.ConnectionString = "…."
Com.Connection = con
con.Open()
Com.CommandText = "create procedure dbbackup as RESTORE DATABASE air from DISK = 'C:\db.bak



ولی برای اجرای استور پروسیجر در vb.net کد زیر :
(Com = New SqlCommand("dbbackup", con
Com.CommandType = CommandType.StoredProcedure
con.Open

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


می شه از جداول موجود در دیتابیس تک تکbackup گرفت یا نه
مچکر از راهنمایی تون.

reza_rad
دوشنبه 13 فروردین 1386, 09:59 صبح
برای restoreکردن درست اجرا نمی شه
اگه می خواهید با stored procedure این کار رو انجام بدید باید sp رو توی database MASTER بسازید و اجراش کنید.

hamidafs
دوشنبه 13 فروردین 1386, 10:29 صبح
خیلی مچکر از پاسختون
1-می خواستم ببینم آیا این راه من مناسب برای backup &restore گرفت هست.که بخوام از sp استفاده کنم.من می خواستم کاربر اگر روی دکمه backup رو زد از دیتابیس ما backup بگیره و اگر روی دکمه restore زد از دیتابیس من رو restore کنه.
2-می شه از جدولها تک تک backup گرفت.
یا راه حل های بهتری وجود دارد.

reza_rad
دوشنبه 13 فروردین 1386, 14:02 عصر
می خواستم ببینم آیا این راه من مناسب برای backup &restore گرفت هست
راه درستیه ... البته اگه برنامه وب بیس باشه و دیتابیس شما بنا باشه روی وب گذاشته بشه از اونجایی که توی این حالت امکان داره به شما دسترسی ایجاد sp روی دیتابیس master رو ندن این راه خوب نیست.
ولی من خودم بدون sp اینکار رو انجام میدم از داخل برنامه. چون کدش یک خط بیشتر نیست.


می شه از جدولها تک تک backup گرفت.

بله.شما می تونی روی جدول راست کلیک کنی و generate sql script رو بزنی....
و هر زمان خواستی restore کنی این اسکریپت رو اجرا کنی.

hamidafs
دوشنبه 13 فروردین 1386, 18:01 عصر
مچکز از پاسختون
ببخشید می خواستم ببینم با این دستور از DATABASE رو RESTORE می کنید
RESTORE DATABASE air from DISK = 'C:\db.bak '
این دستور رو مستقیما من با SQLCOMMAND در VB.NET اجرا می کنم از من ایراد می گیره.
و من از SQL SERVER از جدولم SCRIPT گرفتم .اینکه من از طریق خود VB.NET چه جوری یک SQL SCRIPT رو بگیرم و اون رو اجرا کنم.چون کاربر که نمی تواند این کار را انجام دهد و باید از طریق برنامه به صورت خودکار این کار را انجام دهد.
بسیار مچکر

hamidafs
دوشنبه 13 فروردین 1386, 18:29 عصر
"con.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=bank;user id=sa

Com.Connection = con
con.Open


"'Com.CommandText = "RESTORE DATABASE bank from DISK = 'C:\bank.bak
'Com.CommandText = "BACKUP DATABASE bank TO DISK='c:\bank.bak'"
Com.ExecuteReader
con.Close

reza_rad
دوشنبه 13 فروردین 1386, 19:08 عصر
این دستور رو مستقیما من با SQLCOMMAND در VB.NET اجرا می کنم از من ایراد می گیره.

عزیز من که گفتم توی دیتا بیس مستر:

اگه می خواهید با stored procedure این کار رو انجام بدید باید sp رو توی database MASTER بسازید و اجراش کنید.





"con.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=bank;user id=sa

تغییرش بده به:


"con.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=Master;user id=sa


ضمنا با executeReader چرا کار می کنی؟! قرار نیست چیزی خونده بشه از دیتابیس. از ExecuteNonQuery استفاده کن.

shirko_r
دوشنبه 13 فروردین 1386, 22:15 عصر
salam man to delphi in moshkelo dashtam
vali faghat vase in bodd ke databasem baz bood hamin
age hal kardi vase manm bego khili mamon misham

mostafa_leman
دوشنبه 13 فروردین 1386, 23:43 عصر
salam man to delphi in moshkelo dashtam
vali faghat vase in bodd ke databasem baz bood hamin
age hal kardi vase manm bego khili mamon misham

از سوئیچ With Rollback استفاده کنین

hamidafs
چهارشنبه 15 فروردین 1386, 11:32 صبح
با تشکر از شما آقای راد

در مورد جوابتون که فرمودید برای backup از جدولهای موجود در دیتابیس می تونی
روی جدول راست کلیک کنی و generate sql script رو بزنی....
و هر زمان خواستی restore کنی این اسکریپت رو اجرا کنی
نمی دونم من جواب شما رو متوجه نشدم چون من هر کاری کردم نتونستم از طریق vb.net از جدول ام script اونو بگیرم. واگر هم این کا رو انجام بدم اطلاعات جدول در موقع backup گرفتن با script از بین می ره.من می خوام تمام اطلاعات جدولم موقع backup گرفتن با script م باشه.
سپاسگزارم.

reza_rad
چهارشنبه 15 فروردین 1386, 11:41 صبح
نمی دونم من جواب شما رو متوجه نشدم چون من هر کاری کردم نتونستم از طریق vb.net از جدول ام script اونو بگیرم. واگر هم این کا رو انجام بدم اطلاعات جدول در موقع backup گرفتن با script از بین می ره.من می خوام تمام اطلاعات جدولم موقع backup گرفتن با script م باشه.
سپاسگزارم.

اگه بخواهید اسکریپت بگیرید باید از طریق enterprise manager اینکارو بکنید.

البته من یه چیزی رو اشتباه کردم. فکر میکردم می تونید دیتا های جدول رو هم اسکریپت بگیرید اینطوری، ولی مثله اینکه نمیشه. فقط ساختار بهمراه ایندکس ها و تریگر ها و ... رو میشه اسکریپت گرفت.

reza_rad
چهارشنبه 15 فروردین 1386, 11:46 صبح
این لینک بد نیست:
http://www.databasejournal.com/features/mssql/article.php/2206571

sp ای هست که از دیتاهای جدول بکاپ می گیره.

hamidafs
جمعه 17 فروردین 1386, 07:38 صبح
با سلام وتشکر از آقای راد
متاسفانه من با لینک بالا نتونتستم از table دیتابیسم backup بگیرم و روی اون خیلی کار کردم و اصلا نتونستم جواب بگیرم.
اگر راه بهتری کسی داشته باشه که با vb.net بتونم backup&restoreاز table رو انجام بدم .
سپاسگزارم

reza_rad
جمعه 17 فروردین 1386, 10:50 صبح
اگر راه بهتری کسی داشته باشه که با vb.net بتونم backup&restoreاز table رو انجام بدم .
سپاسگزارم
شما دقیقتر بفرمایید می خواهید چکار کنید شاید بشه راه بهتری به جای backup و restore جدول پیدا کرد.
مثلا اگه بخواهید هر چند وقت یکبار از جدولهای مشخصی بکاپ بگیرید شاید SSIS راه بهتری باشه.
بیشتر توضیح بدین...

hamidafs
جمعه 17 فروردین 1386, 11:57 صبح
بسیار مچکر ار توجه شما آقای راد
در برنامه بدلیل حجم زیاد داده و اینکه باید امنیت برنامه بالا باشه .
در برنامه می خوام کاربر بتونه:
1-من یک بخش پشتیان گیری از برنامه رو دارم که بعضی کاربران با توجه به سطح دسترسی که دارند فقط اجازه داره با یک table که کار می کنه بتونه backup بگیره و البته این فایل backup رو بتونه در همون برنامه که بخشی از برنامه در جایی دیگر نصب شده رو restore کنه بدون اینکه کل فایل دیتابیس خودم رو به اون بدم.البته کل فایل دیتابیس حجم زیادی داره .
2-در سرچی که در سایت زدم مطلبی در مورد :
"اگر از sql server 2000 استفاده می کنید می تونید MSDE را نصب کنید تا موتور sql server 2000 راه بیفته و بتونید استفاده کنید"
میخواستم ببینم وقتی این کار رو انجام بدم کلاینت ها می تونند به table های دیتابیس من دسترسی داشته باشند (enterprice manager رو در اختیار دارد)و یا کاربر مدیر برنامه کارهای backup&restore از دیتابیس و یا attach کردن رو انجام می تونه بده البته از طریق برنامه .
3-من در برنامه باید یک log fie داشته باشم که هر کاربری که وارد می شه باید زمان و تاریخ و اینکه چه کاری رو انجام داده مثل ورود اطلاعات یا backup گیری .,,,چطور برنامه تشخصی بده که در یک فرم کاربر چه کاری از بین کارهای دیگر انجام داده البته با فایل تا حدودی این کا رو انجام دادم.
سپاسگزارم می دونم که خیلی سوال کردم

reza_rad
شنبه 18 فروردین 1386, 09:30 صبح
1-من یک بخش پشتیان گیری از برنامه رو دارم که بعضی کاربران با توجه به سطح دسترسی که دارند فقط اجازه داره با یک table که کار می کنه بتونه backup بگیره و البته این فایل backup رو بتونه در همون برنامه که بخشی از برنامه در جایی دیگر نصب شده رو restore کنه بدون اینکه کل فایل دیتابیس خودم رو به اون بدم.البته کل فایل دیتابیس حجم زیادی داره .
یعنی دیتابیس شما هر جایی جدا وجود داره؟! بصورت شبکاه کار نمی کنید که دیتابیس روی سرور باشه و بقیه بهش وصل بشن؟

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


2-در سرچی که در سایت زدم مطلبی در مورد :
"اگر از sql server 2000 استفاده می کنید می تونید MSDE را نصب کنید تا موتور sql server 2000 راه بیفته و بتونید استفاده کنید"
میخواستم ببینم وقتی این کار رو انجام بدم کلاینت ها می تونند به table های دیتابیس من دسترسی داشته باشند (enterprice manager رو در اختیار دارد)و یا کاربر مدیر برنامه کارهای backup&restore از دیتابیس و یا attach کردن رو انجام می تونه بده البته از طریق برنامه .
MSDE برای دیتابیس های روی شبکه نیستوبرای وقتیه که شما بخواهید سیستمتون خودش دیتابیس سرور باشه میشه یکجور دیتابیس لوکال. برای شبکه خود SQLServer رو باید نصب کنید.

باز هم من متوجه نشدم آخرش شما داری لوکال کار می کنی یا تحت شبکه!!!؟



3-من در برنامه باید یک log fie داشته باشم که هر کاربری که وارد می شه باید زمان و تاریخ و اینکه چه کاری رو انجام داده مثل ورود اطلاعات یا backup گیری .,,,چطور برنامه تشخصی بده که در یک فرم کاربر چه کاری از بین کارهای دیگر انجام داده البته با فایل تا حدودی این کا رو انجام دادم.
هم با فایل میشه. هم میشه توی یه جدول دیتابیس اینکارو کرد و ...