PDA

View Full Version : سوال: گرفتن پشتيبان از ديتا بيس به صورت روزانه



maryam_59m
سه شنبه 28 مهر 1388, 15:38 عصر
من يه برنامه ثبت اسناد دارم كه مي خوام از ديتا بيس اون به صورت روزانه بك آپ گرفته بشه..مثلا هر وقت كه برنامه كلوز ميشه از كاربر سوال كنه كه آيا مي خواي كه از ديتا بيس بك آپ بگيره يا نه..برنامه با سي شارپ نوشتم..اينكه چطور بين سي شارپ و اس كيو ال ارتباط برقرار كنم و بك آپ بگيرم رو نمي دونم.

sunn789
سه شنبه 28 مهر 1388, 21:11 عصر
اگه میخوایی به صورت روزانه بک آپ بگیری توی اس کیو ال یه اتم به نام Job دارید که میتونید هر وظیفه ای رو با زمان بندی مناسب تعریف کنی و یا اینکه اگه میخوایی ا ین کار رودر سی شارپ انجام بدی میتونی از اس کیو ال برنامه QuaryAnalyser را انتخاب کنی و یک بار از بانک بک آپ بگیری کدهایی که در QuaryAnalyser نوشته میشه رو در سی شارپ در Event در زمان Closing کپی کنید

maryam_59m
چهارشنبه 29 مهر 1388, 09:53 صبح
من از sql 2000 استفاده مي كنم.آيتم job كدوم قسمت ميشه؟
من اومدم در Enterprise Manager روي نام ديتا بيس راست كليك كردم و بعد back up data base رو انتخاب كردم با تنظيم اينكه هر روز و يك ساعت خاص بك آپ بگيره اما يه پيغام ميده و فعال نميشه..

sunn789
چهارشنبه 29 مهر 1388, 23:03 عصر
من این کد رو از اس کیو ال برا ی بک آپ از بانک خودم نوشته بودم میتونید با تغییرات کوچیک مانند تغییر نام بانک ها برای خودتون امادش کنید اگه باز جاییش مشکل داشتین بگین

string qBackup = string.Format("use msdb select distinct f.device_type, f.physical_device_name, f.logical_device_name, b.database_name from backupmediafamily f, backupset b where b.database_name = N'Lishmania' and b.backup_finish_date = (select MAX(backup_finish_date) from backupmediafamily INNER JOIN backupset ON backupmediafamily.media_set_id=backupset.media_set _id where backupset.database_name = N'Lishmania' and (backupmediafamily.device_type=2 or backupmediafamily.device_type=102)) and b.media_set_id = f.media_set_id "
+ "use [master] "
+ "EXECUTE master.dbo.xp_get_tape_devices "
+ "use msdb select distinct f.device_type, f.physical_device_name, f.logical_device_name, b.database_name from backupmediafamily f, backupset b where b.database_name = N'lishmania' and b.backup_finish_date = (select MAX(backup_finish_date) from backupmediafamily INNER JOIN backupset ON backupmediafamily.media_set_id=backupset.media_set _id where backupset.database_name = N'Lishmania' and (backupmediafamily.device_type=5 or backupmediafamily.device_type=105)) and b.media_set_id = f.media_set_id "
+ "set noexec off set parseonly off "
+ "use [master] "
+ "EXECUTE master.dbo.xp_get_tape_devices "
+ "BACKUP DATABASE [lishmania] TO DISK = N'{0}' WITH NOINIT , NOUNLOAD , NAME = N'Lishmania backup', NOSKIP , STATS = 10, NOFORMAT ", txt_FileDirector.Text + "\\" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".raz");
نام بانک اطلاعاتی من Lishmania بوده شما فقط اکه نام بانک خودتون رو بنویسید مشکلتون حل میشه در ضمن من اجازه میدادم کاربر محل ذخیره رو مشخص کنه و همچنین اگه نگاه کنید نام فایل برای اینکه تکراری نشه با تاریخ و زمان نام گذاری میشد تا همیشه رو نویسی نشن