sqlserver 备份迁移

来源:这里教程网 时间:2026-03-02 12:57:59 作者:

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 测试只读后能否回退再次经行恢复 --可以多次不停的恢复的,但是不要附加原来的备用文件 ******* ------------------ 最后一次还原,修改为启动数据库正常读写。 https://learn.microsoft.com/zh-cn/sql/relational-databases/backup-restore/back-up-a-transaction-log-sql-server?view=sql-server-ver16&redirectedfrom=MSDN

相关推荐

热文推荐