Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用T-SQL配置日志传送

使用T-SQL配置日志传送

作者头像
深蓝studyzy
发布于 2022-06-16 05:48:36
发布于 2022-06-16 05:48:36
34300
代码可运行
举报
文章被收录于专栏:深蓝居深蓝居
运行总次数:0
代码可运行

日志传送(log shipping)主要基于SQL Server代理,使用定时作业来完成,另外在配置日志传送之前必须要创建共享文件夹,用于辅助服务器访问。这里我们假设有数据库logTrans1需要进行日志传送,共享文件夹为“C:\data”,在T-SQL中配置日志传送主要有以下几步操作:

(1)备份主数据库并在辅助服务器上还原主数据库的完整备份,初始化辅助数据库。具体操作如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
backup database logTrans1 --在主数据库上备份 
to disk='c:\logt.bak' 
--以下是将数据库还原到辅助数据库上 
restore database logTrans2 
from disk='c:\logt.bak' 
with NORECOVERY, 
move 'logTrans' to 'c:\logTrans2.mdf', 
move 'logTrans_log' to 'c:\logTrans2.ldf'

(2)在主服务器上,执行sp_add_log_shipping_primary_database以添加主数据库。存储过程将返回备份作业ID和主ID,具体SQL脚本如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @LS_BackupJobId AS uniqueidentifier 
DECLARE @LS_PrimaryId AS uniqueidentifier 
EXEC master.dbo.sp_add_log_shipping_primary_database 
@database = N'logTrans1' 
,@backup_directory = N'D:\data' 
,@backup_share = N'\\10.101.10.66\data' 
,@backup_job_name = N'LSBackup_logTrans1' 
,@backup_retention_period = 1440 
,@monitor_server = N'localhost' 
,@monitor_server_security_mode = 1 
,@backup_threshold = 60 
,@threshold_alert_enabled = 0 
,@history_retention_period = 1440 
,@backup_job_id = @LS_BackupJobId OUTPUT 
,@primary_id = @LS_PrimaryId OUTPUT 
,@overwrite = 1

(3)在主服务器上,执行sp_add_jobschedule以添加使用备份作业的计划。为了能够尽快看到日志传送的效果,这里将日志备份的频率设置为2分钟一次。但是在实际生产环境中,一般是用不到这么高的执行频率的。添加计划的脚本如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @schedule_id int 
EXEC msdb.dbo.sp_add_jobschedule @job_name =N'LSBackup_logTrans1', 
@name=N'BackupDBEvery2Min', 
@enabled=1, 
@freq_type=4, 
@freq_interval=1, 
@freq_subday_type=4, 
@freq_subday_interval=2, 
@freq_relative_interval=0, 
@freq_recurrence_factor=1, 
@active_start_date=20080622, 
@active_end_date=99991231, 
@active_start_time=0, 
@active_end_time=235959, 
@schedule_id = @schedule_id OUTPUT 
select @schedule_id

【注意:sp_add_jobschedule存储过程是在msdb数据库中,在其他数据库中是没有该存储过程的。】

(4)在监视服务器上,执行sp_add_log_shipping_alert_job以添加警报作业。此存储过程用于检查是否已在此服务器上创建了警报作业。如果警报作业不存在,此存储过程将创建警报作业并将其作业ID添加到log_shipping_monitor_alert表中。默认情况下,将启用警报作业并按计划每两分钟运行一次。添加警报作业如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
USE master 
GO 
EXEC sp_add_log_shipping_alert_job;

(5)在主服务器上,启用备份作业。启用作业使用sp_update_job存储过程,只需要输入作业名并设置状态为1即可。具体SQL脚本如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EXEC msdb.dbo.sp_update_job 
@job_name='LSBackup_logTrans1', 
@enabled=1

(6)在辅助服务器上,执行sp_add_log_shipping_secondary_primary,提供主服务器和数据库的详细信息。此存储过程返回辅助ID以及复制和还原作业ID,具体SQL脚本如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @LS_Secondary__CopyJobId uniqueidentifier 
DECLARE @LS_Secondary__RestoreJobId uniqueidentifier 
DECLARE @LS_Secondary__SecondaryId uniqueidentifier 
EXEC master.dbo.sp_add_log_shipping_secondary_primary 
@primary_server = N'10.101.10.66' 
,@primary_database = N'logTrans1' 
,@backup_source_directory = N'\\10.101.10.66\data' 
,@backup_destination_directory = N'D:\log' 
,@copy_job_name = N'LSCopy_logTrans1' 
,@restore_job_name = N'LSRestore_logTrans2' 
,@file_retention_period = 1440 
,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT 
,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT 
,@secondary_id = @LS_Secondary__SecondaryId OUTPUT

(7)在辅助服务器上,执行sp_add_jobschedule以设置复制和还原作业的计划。这里一般将复制和还原作业计划的频率设置来和日志备份的作业频率相同,所以此处将这两个作业的频率设置为每2分钟执行一次,具体SQL脚本如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @schedule_id int 
--设置复制作业计划 
EXEC msdb.dbo.sp_add_jobschedule 
@job_name=N'LSCopy_logTrans1', 
@name=N'CopyEvery2Min', 
@enabled=1, 
@freq_type=4, 
@freq_interval=1, 
@freq_subday_type=4, 
@freq_subday_interval=2, 
@freq_relative_interval=0, 
@freq_recurrence_factor=1, 
@active_start_date=20080622, 
@active_end_date=99991231, 
@active_start_time=0, 
@active_end_time=235959, 
@schedule_id = @schedule_id OUTPUT 
select @schedule_id 
--设置还原作业的计划 
EXEC msdb.dbo.sp_add_jobschedule 
@job_name=N'LSCopy_logTrans1', 
@name=N'RestoreEvery2Min', 
@enabled=1, 
@freq_type=4, 
@freq_interval=1, 
@freq_subday_type=4, 
@freq_subday_interval=2, 
@freq_relative_interval=0, 
@freq_recurrence_factor=1, 
@active_start_date=20080622, 
@active_end_date=99991231, 
@active_start_time=0, 
@active_end_time=235959, 
@schedule_id = @schedule_id OUTPUT 
select @schedule_id

(8)在辅助服务器上,执行sp_add_log_shipping_secondary_database以添加辅助数据库,具体操作脚本如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EXEC master.dbo.sp_add_log_shipping_secondary_database 
@secondary_database = N'logTrans2' 
,@primary_server = N'10.101.10.66' 
,@primary_database = N'logTrans1' 
,@restore_delay = 0 
,@restore_mode = 1 
,@disconnect_users = 0 
,@restore_threshold = 45 
,@threshold_alert_enabled = 0 
,@history_retention_period = 1440

(9)在主服务器上,执行sp_add_log_shipping_primary_secondary向主服务器添加有关新辅助数据库的必需信息,具体SQL脚本如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EXEC master.dbo.sp_add_log_shipping_primary_secondary 
@primary_database = N'logTrans1' 
, @secondary_server = N'10.101.10.67' --辅助数据库的IP 
, @secondary_database = N'logTrans2'

(10)在辅助服务器上,启用复制和还原作业。启用作业仍然使用sp_update_job存储过程,具体操作如代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EXEC msdb.dbo.sp_update_job 
@job_name='LSCopy_logTrans1', 
@enabled=1 

EXEC msdb.dbo.sp_update_job 
@job_name='LSRestore_logTrans2', 
@enabled=1

通过以上10部操作就完成了对日志传送的配置。现在每隔2分钟,系统将会把主服务器中的日志备份到共享文件夹中,辅助服务器访问共享文件夹将日志备份复制到本地硬盘上,然后由还原作业将复制到本地的日志还原到数据库,从而完成了日志的传送。用户可以在共享文件夹和辅助服务器的本地复制文件夹中看到备份的日志文件

【说明:在SSMS中可以通过右击对应的作业,在弹出的右键菜单中选择“查看历史记录”选项来查看该作业是否正常运行。如果所有日志传送正常运行,则说明日志传送正常。】

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
定时同步服务器上的数据的例子:
--测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test --1. 链接服务器上的表 create table [user](id int primary key,number varchar(4),name varchar(10)) go --2. 本地服务器上的表 --本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0 表示无变化的记录 if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [user] GO create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit) go
jack.yang
2025/04/05
890
使用作业自动清理数据库日志文件
用户1168362
2018/01/05
9860
使用作业自动清理数据库日志文件
t-sql导出EXCEL语句
/*=================== 导入/导出 Excel 的基本方法 ===================*/
jack.yang
2025/04/05
460
干货 | MSSQL 注入攻击与防御
本文所用数据库涉及SQL Server 2k5,2k8,2k12,其次对于绕过姿势和前文并无太大差别,就不做过多的讲解,主要放在后面的提权上
HACK学习
2019/08/06
1.7K0
干货 | MSSQL 注入攻击与防御
SQL Server 常用近百条SQL语句(收藏版)
sp_configure显示或更改当前服务器的全局配置设置。 RECONFIGURE表示SQL Server不用重新启动就立即生效 。
数据和云
2020/04/02
2.7K0
实验一:SQL server 2005高可用性之----日志传送
如转载,请注明出处:http://blog.csdn.net/robinson_0612/archive/2009/10/31/4751070.aspx
Leshami
2018/08/07
9350
实验一:SQL server 2005高可用性之----日志传送
MSSQL 备忘录
将xp_regread(作为系统管理员)与 PowerUpSQL 一起使用。以下命令从注册表读取自动登录密码。
Khan安全团队
2022/07/13
2.3K0
MSSQL 备忘录
干货 | MSSQL注入和漏洞利用姿势总结
Microsoft SQL Server 是微软开发的关系型数据库管理系统。作为数据库服务器,它是一种软件产品,主要功能是根据其他软件应用程序的请求存储和检索数据,这些应用程序可以在同一台计算机上运行,也可以在网络(包括 Internet)上的另一台计算机上运行。SQL Server 默认开放的端口是 TCP 1433。
HACK学习
2023/01/03
7.1K0
干货 | MSSQL注入和漏洞利用姿势总结
Windows提权的几种常用姿势
当获取主机权限时,我们总是希望可以将普通用户提升为管理员用户,以便获得高权限完全控制目标主机。Windows常用的提权方式有:内核提权、数据库提权、系统配置错误提权、组策略首选项提权、Bypass UAC提权、令牌窃取提权等姿势。
Bypass
2021/01/18
1.8K0
Windows提权的几种常用姿势
SQL Server 数据误删的恢复
在日常的数据库管理中,数据的误删操作是难以避免的。为了确保数据的安全性和完整性,我们必须采取一些措施来进行数据的备份和恢复。本文将详细介绍如何在 SQL Server 中进行数据的备份和恢复操作,特别是在发生数据误删的情况下。假设我们已经开启了全量备份,并且在误操作之前有一个全量备份文件。
Damon小智
2024/07/24
4404
SQL Server 数据误删的恢复
【T-SQL性能优化】01.TempDB的使用和性能问题
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化。 本系列【T-SQL基础】主要是针对T-SQL基础的总结。 一、TempDB是什么? 1.TempDB是一个系
悟空聊架构
2018/05/18
2K0
SQL Server —(CDC)监控表数据(转译)
  在SQL Server 2008版本之前,对表数据库的变更监控,我们通常使用DML触发器进行监控,把DML操作中的INSERT/UPDATE/DELETE数据记录下来,但是触发器的维护比较困难;
全栈程序员站长
2021/11/29
1.7K0
SQL Server —(CDC)监控表数据(转译)
学习mssql从0到1
2005的xp_cmdshell 你要知道他的权限一般是system 而2008他是nt authority\network service
红队蓝军
2022/03/10
1.2K0
学习mssql从0到1
《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
  所谓透视(Pivoting)就是把数据从行的状态旋转为列的状态的处理。其处理步骤为:
Edison Zhou
2018/08/20
9.1K0
《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
系统库-SQL Server MSDB探究
◆ 概述 MSDB 数据库是 4 个可见系统数据库之一,另外3个分别是master、model 和 TempDB 。MSDB目的是跟踪一系列常见 DBA 活动历史记录,如备份和恢复。它还包含 SQL Server 代理的所有数据,包括作业、步骤、运算符、警报和执行历史记录。有时 MSDB 用于存储 SSIS 包,尽管它更常见地存储在实例上的 SSIS 目录数据库中。下面探讨一下MSDB一些特性 ◆ MSDB特性 ◆ 1、备份和恢复历史存储在 msdb 中 msdb 包含备份还原历史记录。因此,我们可以通过查
IT大咖说
2022/10/09
1.7K0
系统库-SQL Server MSDB探究
本地sql数据库怎么与远程sql数据库同步使用_sqlserver复制数据库
1.利用MySQL自身的数据库同步功能 2.利用MySQL数据库的特性(数据库存在固顶目录,并且以文件形式存储),进行数据库目录同步以达到数据同步目的 3.利用专用的MySQL数据库同步软件
全栈程序员站长
2022/11/04
3.5K0
SQL注入语句和方法总结
前提需要工具(SQL Query Analyzer和SqlExec Sunx Version)
沙漠尽头的狼
2021/12/01
1.1K0
SQL Server代理作业的巨大性能飞跃:从2天到2小时的调优
在本文中,麦老师将给大家介绍如何调优SQL Server的代理作业JOB,并结合实际生产案例将一个运行时间从长达2天的作业调优缩短至令人欣喜的2小时。
AiDBA宝典
2024/02/26
4280
SQL Server代理作业的巨大性能飞跃:从2天到2小时的调优
注入学习1:SQL注入语句大全
之前做了xss预防,以及些许的注入预防了,但是不够全面,如果还是搜集了下一些常用的注入手段,以此用来进行更好的预防.
@坤的
2018/09/21
4.6K0
SQL之经典SQL语句大全
经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name  2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack  4
互联网金融打杂
2018/04/03
1.4K0
相关推荐
定时同步服务器上的数据的例子:
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验