PDA

View Full Version : سوال: بک آپ گرفتن از دیتابیس سایت در زمانهای مشخص



mbasirati
دوشنبه 10 تیر 1392, 11:32 صبح
سلام
من یه سایت با asp.net طراحی کردم و روی یه هاست اپلود کردم. هاست خودش امکان بک آپ گیری دوره ای نداره. بعضی از هاستا خودشون هر چندساعت یا چندروز یه بار از دیتابیس بک آپ میگیرن. ولی این هاست نداره این امکانو و من باید دستی این کارو انجام بدم.
راه درست و اصولی برای بک آپ گیری دیتابیس سایت چیه؟ چه جوری باید این کارو انجام بدم؟
برای مثال من میخوام یه کدی بنویسم که هر روز از دیتابیس سایت بک آپ بگیره و روی هاست ذخیره کنه.

m_s_best
سه شنبه 11 تیر 1392, 15:34 عصر
سلام
برای انجام این کار در sqlserver در قسمت SqlAgent باید job جدید ایجادکنید
مراحل ایجاد job:
ابتدا روی sqlserverAjent کلیک راست و سپس new job
در مرحله بعد نامی دلخواه به ان بدهید و سپس تب steps را انتخاب کنید
در این مرحله نامی به steps بدهید و قسمت لازم از این query رو به قسمت command مربوط به steps بدهید و نام دیتا بیس را دران تغییر دهید وهمچنین مسیری که میخواهید نگهداری شود.

USE [msdb]
GO
/****** Object: Job [Lib] Script Date: 04/22/2013 03:20:28 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 04/22/2013 03:20:28 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'Lib',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [Lib] Script Date: 04/22/2013 03:20:29 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Lib',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'declare @pathdb nvarchar(500),@pathlog nvarchar(500)
set @pathdb=''D:\Autobackup\Lib\Lib--''+cast(year(getdate()) as varchar)+''_''+
cast(month(getdate()) as varchar)+''_''+
cast(day(getdate()) as varchar)+''--''+
cast(datepart(hour,getdate()) as varchar)+''_''+
cast(datepart(minute,getdate()) as varchar)+''_''+
cast(datepart(second,getdate()) as varchar)+''.dat''
BACKUP DATABASE Lib TO DISK=@pathdb',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Lib',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20130314,
@active_end_date=99991231,
@active_start_time=220000,
@active_end_time=235959,
@schedule_uid=N'f78124d5-ab90-4465-aae0-df3b9481133c'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
در مرحله بعد روی تب schedules کلیک کنید و نام و زمانهای دلخواه برای بکاپ گرفتن را بدهید .
بعد از اتمام روی job ایجاد شده کلیک راست کنید و ان را run کنید خواهید دید که بکاپ میگیرد.