首页 > 数据库 > SQL Server > sqlserver 备份迁移
1、创建表
USE [ZB_TEST]
GO
/****** Object: Table [dbo].[zbtest] Script Date: 2024/3/26 14:13:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[zbtest](
[id] [int] IDENTITY(1,1) NOT NULL,
[ND] [datetime] NULL,
PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
2、创建存储过程
USE [ZB_TEST]
GO
/****** Object: StoredProcedure [dbo].[PR_zbtest] Script Date: 2024/3/26 14:11:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: <Create Date,,>
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[PR_zbtest]
AS
insert into zbtest(ND) VALUES(GETDATE());
delete from zbtest where datediff(MINUTE,ND,getdate())>=60;
GO
3、创建JOB:需启动代理,每个10分钟插入当前时间,不管什么时候创建的,都是 10、20、30、40 。。。整点执行。
USE [msdb]
GO
/****** Object: Job [localjbzbtest] Script Date: 2024/3/26 14:21:00 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [[Uncategorized (Local)]] Script Date: 2024/3/26 14:21:00 ******/
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'localjbzbtest',
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [execzbtest] Script Date: 2024/3/26 14:21:00 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'execzbtest',
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'plexeczbtest',
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
------------------------------------------------------------------------------------------------------
查询数据:
use [TF-test]
select max(nd) from [dbo].[zbtest]
union
select min(nd) from [dbo].[zbtest]
select top 5 * from [dbo].[zbtest] order by id desc
------------------------------------------------------------------------------------------------------
备份类型:完整
备份组件:数据库
------------------
设备:选择“完整”备份的备份文件
目标:重新命名个新库名 -- TF-test-restore
恢复状态:RESTORE WITH NORECOVERY
关闭到目标数据库的现有连接--可能需要关闭所有sql窗口
**[这两个不取消,会影响源库,进而影响生产]
还原前进行结尾日志备份(T) 取消
保持源数据库处于正在还原状态,取消
------------------
源库备份事务日志
备份类型:事务日志
事务日志:截断事务日志
------------------
还原选择事务日志:
源设备:选择对应日志备份文件集,然后勾选方框
不对数据库执行任何操作,不回滚未提交的事务。还可以还原其他事务日志,RESTORE WITH NORECOVERY
------------------
源库备份事务日志
备份类型:事务日志
事务日志:截断事务日志
------------------
还原选择事务日志:
源设备:选择对应日志备份文件集,然后勾选方框
不对数据库执行任何操作,不回滚未提交的事务。还可以还原其他事务日志,RESTORE WITH NORECOVERY --重复执行,测试是否可以无需追日志
或者选择:使数据库处于只读模式。撤销未提交的事务,但撤销操作保存在文件中,以便可使恢复效果逆转,RESTORE WITH STANDBY
测试只读后能否回退再次经行恢复 --可以多次不停的恢复的,但是不要附加原来的备用文件 *******
------------------
最后一次还原,修改为启动数据库正常读写。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70031606/viewspace-3010208/ ,如需转载,请注明出处,否则将追究法律责任。