SQL Server 2008 SQL2012 SQL2014 收缩日志 清空删除大日志文件
清理SQL Server数据库日志的两种方法
清理SQL Server数据库日志的两种方法sql server数据库使用时间长了,日志文件会很大,占用过多系统资源,数据库可能会报 log full 的错误,甚至磁盘空间占满让数据库处于不可用状态,这个时候我们需要清理数据库,以前有人开发了数据库日志清理工具,好像还要收费,其实很简单就可以完成这个操作,请跟我来:清理sql server数据库日志可用两种方法:方法一:清空日志。
1、打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2、再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至: ,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
方法二:有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1、删除LOG分离数据库企业管理器->服务器->数据库->右键->分离数据库2、删除LOG文件附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K。
注意:建议使用第一种方法。
如果以后,不想要它变大。
SQL2000下使用:在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:alter database 数据库名 set recovery simple另外,数据库属性有两个选项,与事务日志的增长有关:Truncate log on checkpoint(此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将 Truncate log on checkpoint 选项设为True 时才能进行。
sqlserver 清理日志语句
sqlserver 清理日志语句【最新版】目录1.SQL Server 清理日志的必要性2.SQL Server 日志文件的存储位置3.SQL Server 清理日志的方法4.SQL Server 清理日志的注意事项正文【1.SQL Server 清理日志的必要性】SQL Server 作为一种广泛应用的数据库管理系统,在运行过程中会产生大量的日志文件。
这些日志文件记录了数据库的运行状态、操作记录等信息,对于数据库的安全和稳定运行具有重要意义。
然而,随着日志文件的不断增加,磁盘空间会逐渐减少,从而影响数据库的性能。
因此,定期清理 SQL Server 日志文件非常必要。
【2.SQL Server 日志文件的存储位置】SQL Server 日志文件主要存储在数据库服务器的日志文件夹中。
默认情况下,日志文件位于“C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERLOG”(根据安装路径和版本号有所不同)目录下。
在此目录下,您可以找到名为“ERRORLOG.XML”和“LOG.XML”的日志文件。
【3.SQL Server 清理日志的方法】SQL Server 清理日志的方法主要有以下几种:(1)使用 SQL 语句清理日志使用以下 SQL 语句,可以删除指定日期之前的所有日志:```sqlDELETE FROM Log_TableWHERE Log_Date < "2021-01-01";```其中,“Log_Table”为日志表名,“Log_Date”为日志日期字段名。
(2)使用 SQL Server Management Studio 清理日志1.打开 SQL Server Management Studio,连接到目标数据库服务器。
2.在“对象资源管理器”中,展开“数据库”节点,找到需要清理日志的数据库。
3.右键点击数据库,选择“任务”>“维护”>“收缩数据库”。
SQL Server 2008 R2 日志收缩处理方法
SQL Server 2008 R2 日志收缩数据库日志文件收缩方法一:1、将数据库恢复模式改为简单模式,右击数据库选择属性,弹出窗口如下图,选择“选项”,将“恢复模式”改为“简单”。
2、右击数据库如下图选择,打开“收缩文件”窗口3、收缩文件窗口如下图,“文件类型”选择“日志”,单击“确定”完成日志收缩。
数据库日志文件收缩方法二:在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
SQL代码如下(用指定数据库名替换DNName):USE MASTERGOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLE--简单模式GOUSE DNNameGODBCC SHRINKFILE (N'DNName_Log',11, TRUNCA TEONL Y)GOUSE MASTERGOALTER DATABASE DNName SET RECOVERY FULL WITH NO_W AITGOALTER DATABASE DNName SET RECOVERY FULL--还原为完全模式GO优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内即可完成。
缺点:不过此动作最好不要经常使用,因为它的运行会带来系统碎片。
普通状态下LOG 和DIFF的备份即可截断日志。
此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响系统的情况下使用。
数据库日志文件收缩方法三:通过分离数据库,然后再删除事务日志文件,再附加mdf数据文件,也可以达到某种意义上的事务日志收缩。
总结:建议资讯同事用方法一来收缩日志,另外需求把日志文件增长方式按如下图来设置,将日志文件选择按MB来增长(目前正式账套F22X库已经设置OK);。
sqlserver2008 收缩数据库方法
sqlserver2008 收缩数据库方法
在SQL Server 2008 中,您可以使用以下方法来收缩数据库:
1. 使用SHRINK DATABASE 命令:
```sql
SHRINK DATABASE [YourDatabaseName];
```
这将收缩整个数据库文件。
请注意,这种方法可能会导致数据库文件中的数据碎片,并降低性能。
2. 使用SHRINK FILE 命令:
```sql
SHRINK FILE [YourLogicalFileName];
```
这将收缩指定的数据库文件。
您需要将`YourLogicalFileName` 替换为逻辑文件名。
这种方法只会收缩指定的文件,而不会影响整个数据库。
3. 使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令:
```sql
DBCC SHRINKDATABASE (YourDatabaseName, TargetSizeInMB);
DBCC SHRINKFILE (YourLogicalFileName, TargetSizeInMB);
```
这些命令提供了更多的选项和灵活性,允许您指定收缩的目标大小(以MB 为单位)。
请注意,这些命令可能需要一些时间来执行,具体取决于数据库的大小和目标大小。
请注意,频繁地收缩数据库可能会对性能产生负面影响,并导致数据碎片。
在大多数情况下,最好避免频繁地收缩数据库,而是使用定期维护和备份策略来管理数据库大小。
清空SQL Server日志
Http高级显示友好http错误信息
两种方法:
一种方法:清空日志。
1.打开查询分析器,输入命令
DUMP TRANSACTION 数据库名WITH NO_LOG
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志
文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这
个数,确定就可以了。
另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1: 删除LOG
分离数据库企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
附加数据库企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K。
如果以后,不想要它变大。
SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:
alter database 数据库名set recovery simple。
SQL Server 2008 日志文件清除操作步骤
SQL Server 2008 日志文件清除操作步骤:
一、登录SQLServere企业管理器
二、选中需要日志清除的数据库,打开清除日志的SQL脚本文件,执行选中的蓝色阴影部分代码,数据库将在“简单模式”下进行清除日志动作。
(圈内改成相应的数据库名、日志文件名)
三、如不清楚日志文件名可执行涂色选中部分这段代码查询
四、执行完清除日志后将数据库还原为“完全模式”
五、SQL代码
-- 在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
USE[master]
GO
ALTERDATABASE ChinaLZY SETRECOVERYSIMPLEWITH NO_WAIT
GO
ALTERDATABASE ChinaLZY SETRECOVERYSIMPLE--简单模式
GO
USE ChinaLZY
GO
DBCC SHRINKFILE(N'Amodel_log', 11,TRUNCATEONLY)
GO
-- '这里的Amodel_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查
USE ChinaLZY
GO
SELECT file_id,name FROM sys.database_files;
GO
--还原为完全模式
USE[master]
GO
ALTERDATABASE ChinaLZY SETRECOVERYFULLWITH NO_WAIT
GO
ALTERDATABASE ChinaLZY SETRECOVERYFULL--还原为完全模式
GO。
sqlserver2012日志文件超大,清除日志的处理过程
sqlserver2012日 志 文 件 超 大 , 清 除 日 志 的 处 理 过 程
有一个项目使用了sql server2012版本的数据库,一开始可能没有注意到日志文件,使得日志文件越来越大,当使用sql2008的收缩文件的方 法进行操作时,问题出现了。
查询到是LOG_BACKUP,所以我的解决办法就是
USE [dbname] GO backup log dbname to disk='D:\dbbackup\2014-08-24-2.log' GO DBCC SHRINKFILE (N'a23648263485_Log' , 700, TRUNCATEONLY) GO
DUMP TRANSACTION BigData WITH NO_LOG BACKUP LOG BigData WITH NO_LOG
使用上面的方法并不能解决问题,因为2012已决的办法: 给出原办法出处:
通过select log_reuse_wait_desc from sys.databases where name='DBNAME'确认log状态
Байду номын сангаас
SQL 2008清理数据库日志文件
SQL 2008清理数据库日志文件
首先,清理数据库日志文件的脚本是这样的。
其次,需要清理的数据库日志文件有多大,可以在SQL Server Management Studio看到:鼠标右键点击对应的数据库,选择属性,在“文件”这个标签下就能看到日志文件大小。
现在开始清理:
打开SQL Server Management Studio。
连接上数据库服务器后,新建查询。
新建查询的方式有两种,结果都是一样的。
第一步:新建查询。
1:右击需要进行清理的数据库,选择“新建查询”。
或者,
2:点击“新建查询”,然后在下方选择需要处理的数据库。
第二步:录入查询脚本。
以打开或者手工录入的形式,将脚本文件内容输入进去。
最后是这样一个情况,请注意左上的数据库名。
第三步:开始清理。
接下来将脚本中的“数据库名”更换为需要清理的数据库的名字。
因为我的数据库名字中有特殊字符“-”,所以需要用到“[”“]”。
如果您的数据库名称第一位是数字,也需要这么处理。
点击执行:
接下来出现了这个:
切换到“结果”:
将这里的数据库Name填写进刚才的脚本中。
再次执行。
完成收工。
SQL SERVER 收缩数据库的命令
SQL SERVER 收缩数据库的命令1.清空日志DUMP T RANSACTION库名WIT H NO_LOG2.截断事务日志:BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。
a.分离E X E C sp_detach_db @dbname='pubs'b.删除日志文件c.再附加E X E C sp_attach_single_file_db @dbname='pubs',@physname='c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.m df'5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:E X E C sp_dboption '数据库名', 'autoshrink', 'T RUE'6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database数据库名modify file(nam e=逻辑文件名,maxsize=20)特别注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.另外提供一种更简单的方法,本人屡试不爽,建议大家使用。
SQL Server 2008 清空删除日志文件
SQL Server 2008 清空删除日志文件(瞬间日志变几M)SQL2008清空删除日志:方法一:USE [master]GOALTER DATABASE AFMS SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE AFMS SET RECOVERY SIMPLEGOUSE AFMSGODBCC SHRINKFILE (N'AFMS_Log' , 11, TRUNCATEONLY)GOUSE [master]GOALTER DATABASE AFMS SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE AFMS SET RECOVERY FULLGO方法2:在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLE --简单模式GOUSE DNNameGODBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)GO'这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询'USE DNName'GO'SELECT file_id, nameFROM sys.database_files;'GOUSE [master]GOALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY FULL --还原为完全模式GOSQL2005清空删除日志:Backup Log DNName with no_log '这里的DNName是你要收缩的数据库名,自己注意修改下面的数据库名,我就不再注释了。
SQL2008收缩日志方法
说明:由于SQL2008对文件和日志管理进行了优化,所以截断日志语句dump transaction DBName(数据库名字) with no_log在SQL2005中可以运行但在SQL2008中已经被取消。
下边是SQL2008收缩数据库日志方法。
一.查看数据库日志大小
二.打开数据库SQL2008软件,点击“新建查询”。
1.输入下边的语句
USE [master]
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY SIMPLE WITH
NO_WAIT
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY SIMPLE
GO
USE [DYCommonDataBase20]
GO
DBCC SHRINKFILE (N' DYCommonDataBase20_log' , 1, TRUNCA TEONLY)
GO
USE [master]
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY FULL WITH
NO_WAIT
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY FULL
GO
(注意:红色部分需要根据实际情况进行修改)
2.点击“分析”按钮
3.当下边“出现命令已经完成”,再点击“执行”按钮
三.再次查看相应数据库日志文件,查看是否成功收缩
四.右键你要压缩的数据库--属性--选项--右边“自动收缩”--改为“TRUE”,这样就不会变大了。
SQLServer2008下日志清理方法(非dump语句)
SQLServer2008下⽇志清理⽅法(⾮dump语句)每次看到暴涨的数据库⽇志就有些头⼤,于是乱搜⼀通找个办法把⽇志⼲掉,下次⼜头⼤,⼜搜半天,于是还是写篇blog,不⽤乱找了。
1.将数据库设置成简单模式选择要收缩的数据库,点右键属性->选项,选择简单模式2.选择任务->收缩->⽂件3.选择⽇志或者⽤如下语句代码USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLEGOUSE DNNameGODBCC SHRINKFILE (N'LogFileName' , 0,TRUNCATEONLY)GOUSE [master]GOALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY FULLGOServer 2000要清理使⽤的是dump语句,但是在SQL ⾥,这个语句不管⽤了,如果⽇志⽂件很⼤,⽐如超过1G,就需要截断⼀下⽇志⽂件以加快sqlserver的运⾏速度,在SQL Server2008⾥,⽅法改为:有数据库 xxdb 在 SQL Server 2008 下,⽇志⽂件已经超过1G。
以往使⽤BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断⽇志语句已经变为了“BACKUP LOG 语句不指定 WITH COPY_ONLY”使⽤语句 BACKUP LOG xxdb to disk='x:\work\1.bak' 将⽇志⽂件备份,并截断⽇志⽂件。
这⾥x:代表你想要备份⽂件的盘符。
然后使⽤ DBCC SHRINKFILE (xxdb_log,10) 收缩⽇志⽂件到 10M总结:完整的收缩⽇志⽂件的 T-SQL 语句:BACKUP LOG xxdb to disk='x:\work\1.bak'DBCC SHRINKFILE (xxdb_log,10)GO--BACKUP LOG <db_name> to disk=<'backupfilename'>DBCC SHRINKFILE (<log_filename>,10)GO⾥⾯的x:\work是随意设置的。
sql 2014维护计划加收缩日志
SQL 2014维护计划加收缩日志近年来,数据库管理日益重要,特别是对于大型企业或组织来说。
数据库的维护和管理需要精心设计的计划和策略,以确保数据的安全和性能的稳定。
SQL Server 2014作为一种主流的数据库管理系统,其维护计划的设计和实施尤为重要。
其中,加收缩日志是维护计划中的关键一环,对数据库的性能和空间管理至关重要。
在进行SQL Server 2014的维护计划设计时,加收缩日志是一个需要重点考虑的方面。
下面将从几个方面探讨SQL Server 2014维护计划加收缩日志的重要性和实施方法。
一、加收缩日志的重要性1. 释放空间:日志文件是数据库中用于记录事务操作的重要组成部分,但随着时间的推移,日志文件可能会变得庞大,占用大量存储空间。
加收缩日志可以释放这些空间,提高数据库的性能和响应速度。
2. 防止日志文件过大:过大的日志文件会影响数据库的性能,甚至导致数据库无法正常运行。
加收缩日志可以及时清理过大的日志文件,防止出现这样的问题。
3. 改善数据库性能:加收缩日志可以提高数据库的性能,加快数据库操作和查询的速度,提升用户体验。
4. 定期维护数据库:加收缩日志是数据库定期维护的一部分,通过加收缩日志可以保持数据库的稳定和正常运行。
二、加收缩日志的实施方法1. 使用SQL Server Management Studio(SSMS)进行加收缩日志。
在SSMS中,可以通过图形化界面对数据库进行维护和管理,包括加收缩日志操作。
具体操作步骤为:在SSMS中选择相应的数据库,右键点击“任务”,选择“收缩”选项,然后选择“文件”。
在弹出的对话框中,选择“日志文件”,点击“释放空间”按钮即可进行加收缩日志的操作。
2. 使用Transact-SQL语句进行加收缩日志。
通过编写Transact-SQL 语句,可以对数据库进行更加精细和灵活的维护操作。
具体操作步骤为:使用`DBCC SHRINKFILE`命令对数据库的日志文件进行收缩,命令语法为`DBCC SHRINKFILE (file_name, size)。
sqlserver数据库清除日记的方式
SQL Server 数据库清除日记的方式方式一:一、打开查询分析器,输入命令BACKUP LOG database_name WITH NO_LOG二、再打开企业管理器--右键要紧缩的数据库--所有任务--收缩数据库--收缩文件--选择日记文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,肯定就可以够了。
方法二:设置检查点,自动截断日志一般情况下,SQL数据库的收缩并非能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当按期进行此操作以避免数据库日志过大1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式当选择“简单”,然后按确定保留2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默许设置不用调整,直接点确定3、收缩数据库完成后,建议将您的数据库属性从头设置为标准模式,操作方法同第一点,因为日志在一些异样情况下往往是恢复数据库的重要依据方法三:通过SQL收缩日志把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可SET NOCOUNT ONDECLARE @LogicalFileName sysname,@MaxMinutes INT,@NewSize INTUSE tablename -- 要操作的数据库名SELECT @LogicalFileName = 'tablename_log', -- 日志文件名@MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 1 -- 你想设定的日志文件的大小(M)-- Setup / initializeDECLARE @OriginalSize intSELECT @OriginalSize = sizeFROM sysfilesWHERE name = @LogicalFileNameSELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfilesWHERE name = @LogicalFileNameCREATE TABLE DummyTrans(DummyColumn char (8000) not null)DECLARE @Counter INT,@StartTime DATETIME,@TruncLog VARCHAR(255)SELECT @StartTime = GETDATE(),@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'DBCC SHRINKFILE (@LogicalFileName, @NewSize)EXEC (@TruncLog)-- Wrap the log if necessary.WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSizeBEGIN -- Outer loop.SELECT @Counter = 0WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))BEGIN -- updateINSERT DummyTrans VALUES ('Fill Log')DELETE DummyTransSELECT @Counter = @Counter + 1ENDEXEC (@TruncLog)ENDSELECT 'Final Size of ' + db_name() + ' LOG is ' +CONVERT(VARCHAR(30),size) + ' 8K pages or ' +CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'FROM sysfilesWHERE name = @LogicalFileNameDROP TABLE DummyTransSET NOCOUNT OFF方法四:删除日志文件。
sqlserver数据库收缩步骤
sqlserver数据库收缩步骤收缩数据库是一种优化数据库性能的方式。
它的作用是释放数据库中的未使用空间,减小数据库文件的大小,从而提高数据库的性能和效率。
下面是收缩数据库的步骤:1. 首先,连接到 SQL Server 数据库引擎,并选择要收缩的数据库。
2. 在 SSMS(SQL Server Management Studio)中,右键单击要收缩的数据库,然后选择“任务”->“收缩”->“文件”。
3.在“收缩文件”对话框中,选择要收缩的数据库文件。
-如果要收缩数据文件,选择“文件类型”为“数据”,然后选择要收缩的数据文件。
-如果要收缩日志文件,选择“文件类型”为“日志”,然后选择要收缩的日志文件。
4.如果选择了数据文件,则可以选择“释放空间到文件系统”选项。
这会在收缩操作完成后将未使用的空间释放给操作系统,以便其他文件可以使用该空间。
5.点击“确定”开始收缩数据库文件。
这可能需要一些时间,具体时间取决于数据库的大小和硬件性能。
6.收缩操作完成后,关闭对话框并刷新数据库。
需要注意的是,收缩数据库可能会导致数据库性能下降,因为它会引起索引碎片。
索引碎片会影响查询的性能。
因此,在进行收缩操作前,最好先执行索引优化操作,以确保数据库性能。
此外,对于大型数据库,可以考虑使用分区技术来减少数据库的大小和提高查询性能。
分区可以将数据库分成多个较小的文件组,每个文件组都包含一部分数据。
这样可以减少数据库文件的大小,并提高查询的效率。
除了以上步骤,还有一些额外的注意事项需要考虑:-在进行收缩操作前,最好先备份数据库。
这是为了防止在收缩过程中发生意外情况,导致数据丢失。
-收缩数据库的操作也有可能造成事务日志文件增长。
如果你的数据库采用了完全恢复模式,事务日志文件可能会增长很多。
为了避免事务日志文件过大,可以在收缩操作前先备份事务日志,并在操作完成后进行事务日志的截断。
-对于频繁进行数据插入和删除操作的数据库,建议定期进行收缩操作,以及维护索引和统计信息,以保持数据库的性能。
sql2012收缩 语句
sql2012收缩语句
在 SQL Server 2012 中,如果你想要收缩数据库或特定的文件,你可以使用 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 命令。
以下是基本的语法:
1.收缩整个数据库:
DBCC SHRINKDATABASE (N'YourDatabaseName', target_percent);
其中YourDatabaseName是你的数据库名称,target_percent是你想要收缩到的目标百分比。
2.收缩特定的数据文件:
DBCC SHRINKFILE (N'YourLogicalFileName', target_size);
其中YourLogicalFileName是数据库中逻辑文件的名称,target_size是你想要收缩到的目标大小(以 MB 为单位)。
注意:
●在大多数情况下,不推荐经常收缩数据库或文件,因为这可能会导致性能
问题、碎片化以及其他问题。
在生产环境中,最好仅在绝对必要时才进行收缩操作。
●在进行任何收缩操作之前,确保备份你的数据库。
●如果你经常需要收缩数据库或文件,这可能是由于数据库设计、数据模式
或存储问题。
在这种情况下,可能需要考虑更高级的解决方案,如重新设计数据库结构或调整存储参数。
SQLSERVER收缩数据库的命令
SQLSERVER收缩数据库的命令SQL SERVER 收缩数据库的命令1.清空日志DUMP T RANSACTION库名WIT H NO_LOG2.截断事务日志:BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。
a.分离E X E C sp_detach_db @dbname='pubs'b.删除日志文件c.再附加E X E C sp_attach_single_file_db @dbname='pubs',@physname='c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.m df'5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:E X E C sp_dboption '数据库名', 'autoshrink', 'T RUE'6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database数据库名modify file(nam e=逻辑文件名,maxsize=20)特别注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.另外提供一种更简单的方法,本人屡试不爽,建议大家使用。
SQLserver2008无法收缩日志
SQLserver2008⽆法收缩⽇志SQL server2008⽆法收缩⽇志,错误信息为:1:由于最⼩⽇志空间要求,⽆法收缩⽇志⽂件2:⽆法收缩⽇志⽂件 2 (XXX_log),因为该⽂件结尾的逻辑⽇志⽂件正在使⽤描述:⽤的是⽹上普遍有的收缩代码USE [master]GOALTER DATABASE shujuku SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE shujuku SET RECOVERY SIMPLE --简单模式GOUSE shujukuGODBCC SHRINKFILE (N'shujuku_Log' , 11)GOUSE [master]GOALTER DATABASE shujuku SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE shujuku SET RECOVERY FULL --还原为完全模式GO最后收缩失败,失败信息如下:⽆法收缩⽇志⽂件 2 (shujuku_log),因为该⽂件结尾的逻辑⽇志⽂件正在使⽤始终⽆法收缩成功!找了各种解决办法,试了各种SQL但是⾸先有个事情我是很确定的。
这个⽇志的增长是因为我创建了发布和订阅,并且在刚创建的⼏天都能正常的收缩,运⾏了⼏天后才发现突然不能收缩了。
最后我发现故障出现在订阅的客户机上,由于我只关注了发布机器的⽇志,忽略了订阅客户机的⽇志。
发现订阅客户机的⽇志已经把客户机磁盘撑满了,造成发布和订阅⽆法正常完成。
因此发布机的事务⼀直未得到正常的执⾏,所以⽇志⽂件不能收缩。
解决:1:在订阅客户机上收缩⽇志,并且创建⼀个定时任务。
2:当同步完成后,再收缩发布机,⽇志正常收缩成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server 2008 SQL2012 SQL2014 收缩日志清空删除大日志文件
SQL2008 SQL2012 SQL2014 的收缩日志
由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)
BackupLog DNName with no_log
go
dumptransaction DNName with no_log
go
USE DNName
DBCC SHRINKFILE (2)
Go
--------------------------------------------------------------
(SQL2008):
在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
方案一:完全命令模式
USE[master]
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE --简单模式
GO
USE DNName
GO
DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
GO
USE[master]
GO
ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY FULL --还原为完全模式
GO
方案二:部分命令模式+ 任务-收缩-文件(单个数据库)
ALTER DATABASE DNName SET RECOVERY SIMPLE --简单模式
GO
右键-任务-收缩-文件-确定下来数据库的日志只保留了1M
ALTERDATABASE DNName SET RECOVERY FULL --还原为完全模式
GO
优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内
即可完成。
缺点:不过此动作最好不要经常使用,因为它的运行会带来系统碎片。
普通状态下LOG和DIFF的备份即可截断日志。
此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。