SQLSERVER清除日志的四种方法
SQLSERVER清除日志的四种方法
SQL Server 是一款功能强大的数据库管理系统,但由于其日志文件的持续增长,可能会占用大量的磁盘空间。为了解决这个问题,SQL
Server 提供了多种方法来清除日志。本文将介绍 SQL Server 清除日志的四种常见方法。
方法一:备份日志
备份日志是最常用的清除 SQL Server 日志的方法之一、备份日志将日志文件中已经提交的事务从日志文件中删除,并将未提交的事务保存在日志中。这样可以大大减小日志文件的大小,释放磁盘空间。
备份日志的具体步骤如下:
1. 在 SQL Server Management Studio 中选择要备份日志的数据库。
2.右键单击数据库,选择“任务”>“备份”。
3.在“备份数据库”对话框中,选择“事务日志”。
4.在“备份到”下拉列表中选择备份文件的位置和名称。
5.单击“确定”开始备份日志。
备份日志的频率取决于数据库的需求,可以每天备份一次,也可以根据业务需求更频繁地备份。
方法二:备份并截断日志
备份并截断日志是另一种清除 SQL Server 日志的常见方法。该方法包括备份日志和截断日志两个步骤。备份日志的作用是和方法一相同,截断日志的作用是删除已经备份的日志,释放磁盘空间。 备份并截断日志的具体步骤如下:
1. 在 SQL Server Management Studio 中选择要备份和截断日志的数据库。
2.右键单击数据库,选择“任务”>“备份”。
3.在“备份数据库”对话框中,选择“事务日志”。
4.在“备份到”下拉列表中选择备份文件的位置和名称。
5.单击“确定”开始备份日志。
6. 在 SQL Server Management Studio 中选择要截断日志的数据库。
7.右键单击数据库,选择“任务”>“收缩”>“数据库文件”。
8.选择“日志文件”,设置“收缩动作”为“释放未使用的空间”,并选择“重新组织文件以使空间最优化”,然后单击“确定”开始截断日志。
备份并截断日志的频率也可以根据数据库的需求来设置。
方法三:使用事务日志清除
SQL Server 提供了一个系统存储过程 sp_cycle_errorlog,该存储过程用于循环日志文件,将当前日志文件重命名并创建一个新的日志文件。通过使用该存储过程,可以定期清除旧的日志文件,释放磁盘空间。
使用事务日志清除的具体步骤如下:
1. 在 SQL Server Management Studio 中打开“新建查询”窗口。
2.输入以下命令并执行: EXEC sp_cycle_errorlog;
3. 在 SQL Server Management Studio 中选择“查看”>“SQL
Server日志”。
4.右键单击“错误日志”,选择“重新加载”。
通过定期执行上述操作,可以清除旧的日志文件,释放磁盘空间。
方法四:修改日志文件的增长策略
SQL Server 的日志文件有一个增长策略,当日志文件达到预设的最大大小时,数据库会自动扩展日志文件的大小。因此,如果希望释放磁盘空间,还可以通过修改日志文件的增长策略来实现。
修改日志文件的增长策略的具体步骤如下:
1. 在 SQL Server Management Studio 中选择要修改增长策略的数据库。
2.右键单击数据库,选择“属性”。
3.在“文件”选项卡中,选择事务日志文件。
4.在“初始大小”和“最大大小”字段中,根据需求修改日志文件的大小。
5.单击“确定”保存修改。
通过适当地设置日志文件的增长策略,可以避免日志文件过大,从而释放磁盘空间。 综上所述,SQL Server 提供了备份日志、备份并截断日志、使用事务日志清除和修改日志文件的增长策略等四种方法来清除日志。根据数据库的需求,可以选择适合的方法来释放磁盘空间,优化数据库性能。
`SQLServer2008R2数据库备份与还原操作文档课案
1 SQL Server 2008 R2数据库备份与还原操作
本文档所涵盖内容如下:
一、数据库备份(对数据库进行单次完整备份)
二、数据库备份(计划任务方式、每天对数据库进行一次完整备份)
三、事务日志备份(每30分钟对esm数据库进行一次事务日志备份)
四、数据库还原
2
一、数据库备份(单次备份操作)
1、启动软件“SQL Server Management Studio”
3 2、通过“Windows身份验证”方式,“连接”到数据库服务器。
4 3、选中目标数据库esm,单击鼠标右键,然后选中“备份”菜单。
5 4、选择备份目的地,并输入备份数据的文件名
6 5、点击“确定”按钮,至此数据库备份完成。
7 二、数据库备份(计划任务方式)
1、选择“维护计划”,点击鼠标右键,然后选中“新建维护计划”下拉菜单。
8 2、输入维护计划名称
3、点击“新建作业计划”按钮
9 4、把作业频率改为“每天”,选择每次执行备份工作的时间,最后点击“确定”。
10 5、用鼠标把“工具箱”中的“备份数据库”任务、“清除历史记录”任务、“清除维护”任务拖到如下图所示窗口中。
11 6、参照下图对 “备份数据库”任务进行设定。
12 7、参照下图设定“清除维护”任务,即:选定数据库存放的文件夹,输入扩展名,并选择“包括一级文件夹”,文件保留时长是最近3个月数据(如果磁盘可用空间较大,可以多保留数据库备份)。
13 8、参照下图设定“清除历史记录”任务。
14 9、参照下图设定三个任务之间的“控制流”。
15 10、点击工具栏“保存”按钮,进行保存。至此,备份计划任务已经完成。
16 11、维护计划任务的执行,需要“SQL Server代理”服务处于“启动”状态。如下图所示:
17 三、事务日志备份(每30分钟备份一次)
1、新建维护计划任务,名称:backup_translog。
SQLServer2008日志文件无法收缩处理方法
SQL Server 2008 事务日志物理文件尺寸无法减小的解决办法(含日志收缩(shrink)技巧)
作者:宋林
发现有的数据库日志文件太大,无论如何收缩执行几次SQL语句都不行。事务日志达30+G,而且使用常规的截断、收缩方法均无法减小日志物理文件的尺寸,经过一番寻找,终于找到了解决方法。
查看日志信息
在查询分析器中执行如下代码来查看日志信息:
DBCC LOGINFO('数据库名称')
我们看到status=0的日志,代表已经备份到磁盘的日志文件;而status=2的日志还没有备份。当我们收缩日志文件时,收缩掉的空间其实就是status=0的空间,如果日志物理文件无法减小,这里一定能看到非常多status=2的记录。接下来分析为什么会有这么多status=2的记录
查看日志截断延迟原因
活跃(active)的日志无法通过收缩来截断,有各种原因会使日志截断延迟,具体表现就是事务日志的物理文件无法通过截断、收缩来减小,通过下面的代码可以看到实例上每个数据库的日志截断延迟原因: 1 USE [master]
2 SELECT [name] ,[database_id] ,[log_reuse_wait] ,[log_reuse_wait_desc] FROM [sys].[databases]
各种原因及解释如下:
log_reuse_wait_desc 值 说明
NOTHING 当前有一个或多个可重复使用的虚拟日志文件。
CHECKPOINT 自上次日志截断之后,尚未出现检查点,或者日志头部尚未跨一个虚拟日志文件移动(所有恢复模式)。
这是日志截断延迟的常见原因。有关详细信息,请参阅检查点和日志的活动部分。
LOG_BACKUP 需要日志备份,以将日志的头部前移(仅适用于完整恢复模式或大容量日志恢复模式)。
注意:日志备份不会妨碍截断。 完成日志备份后,日志的头部将前移,一些日志空间可能变为可重复使用。
SQLServer数据库中开启CDC导致事务日志空间被占满的原因
SQLServer数据库中开启CDC导致事务⽇志空间被占满的原因
SQLServer中开启CDC之后,在某些情况下会导致事务⽇志空间被占满的现象为:
在执⾏增删改语句(产⽣事务⽇志)的过程中提⽰,The transaction log for database '***' is full due to 'REPLICATION'(数据库“***”的事务⽇志已满,原因为“REPLICATION”).CDC以及复制的基本原理粗略地讲,对于⽇志的使⽤步骤如下:
1,每当基础表(开启了CDC或者replication的表)产⽣事务性操作(增删改)之后,对应的事务⽇志写⼊⽇志⽂件,
2,此时的⽇志被状态被标记为Replication,也即处于待复制状态,这个活动状态跟数据库的还原模式⽆关,即便是简单还原模式,
3,然后有后台进程来读取这个⽇志,根据事务⽇志的内存写⼊⽬标表,
这个⽬标对于cdc来说是记录数据变化的系统表,
对于replication来说是写⼊distribution这个库
4,步骤3完成之后,事务⽇志被标记为正常状态,如果是简单还原模式,被后台进程解析过的事务⽇志被截断,可以重⽤如果上述中间的第三个步骤出现问题,也即后台进程⽆法解析⽇志后释放可⽤的⽇志空间,再次往数据库中写⼊操作,就会出现:数据库“TestDB”的事务⽇志已满,原因为“REPLICATION”的情况
本⽂通过通过演⽰开启CDC的情况下⽇志空间被占满的现象,以及对应的处理办法
测试环境搭建
⾸先建⽴⼀个测试数据库,USE masterGOCREATE DATABASE TestLogFull ON PRIMARY ( NAME = N'TestLogFull', FILENAME = N'D:\DBFile\TestLogFull\TestLogFull.mdf' , SIZE = 500MB , MAXSIZE = UNLIMITED, FILEGROWTH = 100MB )LOG ON ( NAME = N'TestLogFull_log', FILENAME = N'D:\DBFile\TestLogFull\TestLogFull_Log.ldf' , SIZE = 1MB , MAXSIZE = 512MB ) 这⾥指定⽇志⽂件的最⼤为512M,主要是为了演⽰⽇志空间被占满的现象
sqlserver 回滚方案
sqlserver 回滚方案
SQL Server 回滚方案
在数据库管理中,回滚是指将数据库恢复到之前某个时间点或事务开始的状态。回滚是数据库管理中非常重要的一项功能,它可以保证数据的一致性和完整性。下面将介绍一些常见的 SQL Server 回滚方案。
1. 事务回滚
事务是 SQL Server 中保证数据一致性的核心机制。当执行多个 SQL 语句时,可以将这些语句放在一个事务中,如果其中某个语句执行出错,可以简单地回滚整个事务,使数据恢复到事务开始之前的状态。
使用事务回滚需要使用 BEGIN TRAN 开启一个事务,然后在执行完所有操作后,如果出现错误,可以使用 ROLLBACK 进行回滚,或者使用 COMMIT 提交事务。
2. 数据库备份和还原
数据库备份是一种将数据库的数据和结构保存在文件中的方法。在执行重要操作之前备份数据库可以保证操作出错时可以轻松地进行恢复。当需要回滚时,可以使用备份文件进行数据库还原,将数据库恢复到备份文件创建时的状态。
SQL Server 提供了多种备份方法,包括完全备份、差异备份和增量备份。根据不同需求选择合适的备份方法可以提高回滚的效率。
3. 数据库日志
SQL Server 使用事务日志来记录数据库中的操作。当执行写操作时,会先将操作记录到事务日志中,然后才会将操作应用到数据库。如果需要回滚,可以使用事务日志中的信息进行恢复。 数据库日志有两种模式:简单模式和完整模式。在简单模式下,事务日志只保存最近的操作记录;在完整模式下,事务日志记录了数据库中每次操作的详细信息,可以更精确地进行回滚。
4. 事务锁定
事务锁定是一种在回滚时保护数据库一致性的机制。当一个事务开始时,数据库会对事务所涉及的数据进行锁定,其他操作无法对被锁定的数据进行修改。如果事务回滚,数据库会自动释放所有锁定的数据,使其恢复到事务开始时的状态。
事务锁定可以有效地防止数据误修改和数据冲突。在设计数据库时,可以根据业务需求合理设置锁定策略,以提高回滚的效率。
SQLServer附加数据库之后出现只读或失败的解决方法
SQLServer附加数据库之后出现只读或失败的解决方法
SQLServer 附加数据库之后出现只读或失败的解决方法
方法一:
碰到这中情况一般是使用的 sa 或者其它 SQL Server 身份验证登录的,只要改为 Windows 身份验证,再附加数据库即可。
方法二:
右键选择数据库 –> “属性” –> “选项” –> “状态”,发现“数据库为只读”这一项为 True,改为 False,如果能够修改的话,那么恭喜你,你的人品不错哦!
我在修改的.时候又报了这样一个错误:
这种情况下,找到你的数据文件和日志文件,右击“属性”-->“安全”,添加一个“Network Service”账户,或者直接修改
Users 用户权限,赋予该账户完全控制的权限即可。
SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)
SQL获取第⼀条记录的⽅法(sqlserver、oracle、mysql
数据库)
Sqlserver 获取每组中的第⼀条记录
在⽇常⽣活⽅⾯,我们经常需要记录⼀些操作,类似于⽇志的操作,最后的记录才是有效数据,⽽且可能它们属于不同的⽅⾯、功能下⾯,从数据库的术语来说,就是查找出每组中的⼀条数据。下⾯我们要实现的就是在sqlserver中实现从每组中取出第⼀条数据。例⼦我们要从上⾯获得的有效数据为:
对应的sql语句如下所⽰:select * from t1 t where id = (select top 1 id from t1 where grp = t.grp order by createtime desc )下⾯给⼤家介绍oracle查询取出每组中的第⼀条记录oracle查询:取出每组中的第⼀条记录
按type字段分组,code排序,取出每组中的第⼀条记录 ⽅法⼀:
select type,min(code) from group_info group by type;注意:select 后⾯的列要在group by ⼦句中,或是⽤聚合函数包含,否则会有语法错误。
⽅法⼆:SELECT * FROM(SELECT z.type , z.code ,ROW_NUMBER()OVER(PARTITION BY z.type ORDER BY z.code) AS code_idFROM group_info z)WHERE code_id =1;
这⾥涉及到的over()是oracle的分析函数
参考sql reference⽂档:Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that theyreturn multiple rows for each group.Analytic functions are the last set of operations performed in a query except for the final ORDER BY clause. All joins and allWHERE , GROUP BY , and HAVING clauses are completed before the analytic functions are processed. Therefore, analyticfunctions can appear only in the select list or ORDER BY clause.
sql安装失败的解决方法
1.
安装sql的时候,如果出现以前有挂起的文件。或者安装后期出配置服务器失败。那么可以
通过如下方法解决。
一.找到下面的注册表项目删除之(注意。一定要先对注册表进行一个备份) HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\ExceptionComponents
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft SQL
Server 2000
HLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenam
eOperations
//可以用下面命令在cmd或者建立bat文件进行删除
delsqlinfo.bat reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\Excep
tionComponents
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mic
rosoft SQL Server 2000
reg delete HLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
2.删除c:\program files\microsoft sql server 2000 整个目录
3.重新启动电脑。
4.在次安装就可以成功拉。 该方法已经经过n次实践拉。
二、 1。将Program files下的SQL安装目录删除(此处如果有重要的数据,请先备份) C:\Program Files\Microsoft SQL Server\80\Tools。 C:\Program Files\Microsoft SQL Server\MSSQL。
如何查看sqlserver的操作日志?
如何查看sqlserver的操作⽇志?
如何查看SQL SERVER的事务⽇志
在SQL SERVER 7.0和2000中,可以⽤下⾯的命令查看:
DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )
参数:Dbid or dbname - 任⼀数据库的ID或名字
type - 输出结果的类型:
0 - 最少信息(operation, context, transaction id)
1 - 更多信息(plus flags, tags, row length)
2 - ⾮常详细的信息(plus object name, index name,page id, slot id)
3 - 每种操作的全部信息
4 - 每种操作的全部信息加上该事务的16进制信息
默认 type = 0
要查看MSATER数据库的事务⽇志可以⽤以下命令:DBCC log (master)
Sqlserver数据库备份与还原
Sqlserver数据库备份与还原
⼀、数据库存储概述1、数据⽂件类型
· Primary data files:每个数据库都有⼀个单独的主要数据⽂件,默认以.mdf扩展名。主要数据⽂件不仅包含数据信息,还包含与该数据库结构相关的信息。创建数据库时,数据库结构相关信息不仅存在于master数据库中,同时还包含在primary data file上.· Secondary data files⼀个数据库可以有⼀个或者多个⼆级数据⽂件,默认以.ndf为扩展名。⼀般来说⼆级数据⽂件并不是必须的,因为⼆级数据⽂件不包含⽂件位置等信息。· Transaction logs: 数据库必须⾄少有⼀个事务⽇志⽂件,默认以.ldf为扩展名。⽇志是整个数据库的命脉,事务⽇志不可读的话,将⽆法对数据库进⾏任何操作。
当你在数据库上进⾏数据操作时,数据并不是直接写⼊数据⽂件,⽽是先将相关操作信息写⼊事务⽇志⽂件。当⼀个事务结束时,该事务被标记为已提交,但这也并不意味着数据从⽇志⽂件写⼊了数据⽂件中。⼀个标记为已提交的事务仅仅意味着所有与该事务相关的元素已经成功完成。The buffer cache may be updated, but not necessarily the data file.
检查点(checkpoint)会周期性的发⽣。检查点发⽣时,是确认所有已提交的事务,不管是在buffer cache或者事务⽇志中,都被写⼊相关的数据⽂件中。检查点(checkpoint)可以通过以下⽅式来触发:1、显⽰调⽤checkpoint命令;
2、Recover Interval 实例设置的周期达到(⽤来标识多久发⽣⼀次checkpoint)
3、做了数据库备份(在简单模式下);
4、数据库⽂件结构被改变(在简单模式下);
5、数据库引擎被结束。
⼀般来说,写数据的过程是由系统⾃动完成的,如下图所⽰,但数据并不是直接写⼊.mdf或者.ndf ⽂件中,⽽是先将有关变化写⼊事务⽇志中,这也是数据库中的write-ahead机制。
SQLServer中update没带where的回滚操作(Update或者Delete误操。。。
SQLServer中update没带where的回滚操作(Update或者Delete
误操。。。
SQLServer中update没带where的回滚操作(Update或者Delete误操作恢复⽅法)
SQLServer 2008以上误操作数据库恢复⽅法——⽇志尾部备份
问题:
经常看到有⼈误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了。⼈⾮圣贤孰能⽆过,做
错可以理解,但不能纵容,这个以后再说,现在先来解决问题。
遇到这种情况,要分两种情况来分别对待:
⼀:数据库曾经做过完整备份的
⼆:数据库从未做过完整备份的
--------------------------------------------------------------------------------------------------------------------------
⼀:数据库曾经做过完整备份的
--------------------------------------------------------------------------------------------------------------------------
⼆:数据库从未做过完整备份的
如果都是没有做备份,请按下⽅⽅法来解决。⾸先要冷静,否则会有更⼤的灾难。直到你放弃。
解决⽅法:
对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的⼯具Log Exploer,听说还挺好⽤的,这个⽹上⼤把教程,这⾥
就不多说了。但是唯⼀遗憾的是,不⽀持2008及更⾼版本,这时除了其他第三⽅⼯具,那么最常⽤的就是本⽂提到的⽅法——⽇志尾部备
份。本⽂实验环境2008R2,对于2008及其以上版本可以使⽤这个⽅法,其实2005也可以,2000很少⽤,没试过,只是2008之前可以使⽤Log Exploer,所以就没必要⽤这种⽅法。
