MSSQL数据库日志压缩
SQLServer压缩日志与减少SQLServer文件大小的方法

SQLServer压缩⽇志与减少SQLServer⽂件⼤⼩的⽅法⼀般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据。
第6步如果⽇志达到上限,则以后的数据库处理会失败,在清理⽇志后才能恢复。
1.清空⽇志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务⽇志 BACKUP LOG 数据库名 WITH NO_LOG 3.收缩数据库⽂件 (如果不压缩,数据库的⽂件不会减⼩企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩⽂件 选择⽇志⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了 选择数据⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了,也可以⽤SQL语句来完成 收缩数据库 DBCC SHRINKDATABASE(客户资料) 收缩指定数据⽂件,1是⽂件号,可以通过这个语句查询到: select * from sysfiles DBCC SHRINKFILE(1)4.为了最⼤化的缩⼩⽇志⽂件(如果是sql 7.0,这步只能在查询分析器中进⾏) 分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 在我的电脑中删除LOG⽂件 附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将⽣成新的LOG,⼤⼩只有500多K 或⽤代码: 下⾯的⽰例分离 pubs,然后将 pubs 中的⼀个⽂件附加到当前服务器。
分离 EXEC sp_detach_db @dbname = 'pubs' 删除⽇志⽂件 再附加 EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 4.为了以后能⾃动收缩,做如下设置 企业管理器--服务器--右键数据库--属性--选项--选择"⾃动收缩" SQL语句设置⽅式: EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE' 5.如果想以后不让它⽇志增长得太⼤ 企业管理器--服务器--右键数据库--属性--事务⽇志 将⽂件增长限制为xM(x是你允许的最⼤数据SQL Server ⽂件⼤⼩) SQL语句的设置⽅式: alter database 数据库名 modify file(name=逻辑⽂件名,maxsize=20)这⾥⼩编为⼤家分享个我⾃⼰经常使⽤的⽅法:DUMP TRANSACTION [jb51] WITH NO_LOGBACKUP LOG [jb51] WITH NO_LOGDBCC SHRINKDATABASE([jb51])jb51就是数据库名称。
SQL2012自动备份及日志压缩

SQLServer2012自动备份及日志压缩配置一、自动备份1.打开SQL Server Management Studio。
如下图所示。
2.左侧树状图点开“管理”选择“维护计划”,右键维护计划选择“维护计划向导”。
在弹出的向导对话框中依次进行如以下图所示操作。
(若弹出错误提示请参考附录[1])点击下一步继续计划名称自取(这里取名为backup),运行身份:SQL Server代理服务器。
点击下一步继续。
选择“备份数据库(完整)”点击下一步继续。
点击下一步继续。
在“数据库”选项选择需要备份的数据库(这里选择testdb)。
选择“跨一个或多个文件备份数据库”点击“添加”按钮选择备份文件路径及名称(这里选择E盘,备份名为backupdb)。
在“如果备份文件存在”选项选择“覆盖”。
过程如下图所示。
设置好备份路径及名称后点击确定完成设置。
如果备份文件存在则覆盖。
完成以上设置后点击下一步继续。
点击下一步继续。
确认无误后点击完成。
维护计划添加成功,点击关闭。
3.成功完成维护计划的添加后,即可在主窗口树形图中发现刚添加的维护计划,双击刚添加的维护计划,即可在主窗口右侧区域显示维护计划列表。
如下图所示。
点击作业计划属性按钮即可设置作业计划的名称、类型、是否启动、频率及持续时间。
确认无误后点击确定完成计划属性设置。
如下图所示注:为了为之后的SQL Server代理作业添加做准备,完成计划属性设置后需及时保存(点击主窗口的保存按钮即可)。
至此,数据库的自动备份功能已实现(为进行测试可调高计划发生频率如每10S备份一次,这样过10S就可在备份路径下查看数据库是否备份,若一切正常即可看见备份文件。
)二、日志压缩及数据表清除1.压缩日志需要在SQL Server代理中添加作业,这时若SQL Server代理处于停止状态请右键启动SQL Server代理。
如下图所示。
2.启动完成后展开SQL Server代理树形图选择“作业”在展开的作业中就会发现先前添加的任务计划。
SQL数据库操作5--数据库压缩

"所有任务"--"收缩数据库"--打开对话框
2)收缩对话框--选择不同的收缩策略
自动收缩:[收缩操作]
手动收缩:[收缩文件]
3)设置相关参数收缩数据库空间
日志文件到:100M
例:将数据库AAA中,分别收缩:
主文件收缩到:10M
二级文件收缩到:10M
日志文件收缩到:10M
查看收缩后的文件空间大小。
参数:
datafile name :数据库名
target_percent:进行压缩后数据库文件中所剩余可用的空间百分比.
notruncate:数据库压缩后所释放的空间保留在文件中,不返回给操作系统.
truncateonly:数据库压缩后所释放的空间返回给操作系统,并将文件压缩到上一次所分配的大小.如果选择此项,则target_percent所指定的参数变为无效.
GO
Dbcc shrinkdatabase (AAA,80,notruncate)
GO
SP_HELPDB AAA
GO
.返回企业管理器,刷新ttt数据库,查看是否已经收缩.
■自动收缩
自动对整个数据库中的主文件、二级文件,日志文件,按设置的大小进行调整。
[收缩操作]---设置参数:将原来的空间减少百分之。。
例:新建一个数据库AAA,
主文件空间A1:1M
go
SP_HELPDB AAA
GO
查看A1文件是否已经收缩.
二级文件空间A2:1M
日志文件空间A3:1M
例:将数据库AAA中文件扩充
MSSqlServer查询数据库文件大小和剩余空间,数据库日志压缩

MSSqlServer查询数据库文件大小和剩余空间,数据库日志压缩Sql Server查询数据库文件大小和剩余空间,数据库日志压缩•A、磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率•o1、查询各个磁盘分区的剩余空间:o2、查询数据库的数据文件及日志文件的相关信息o3、查询当前数据库的磁盘使用情况:o4、查询数据库服务器各数据库日志文件的大小及利用率o5、一次性的查询数据库中所有的表的大小•B、数据库日志收缩•o1、查看当前的存放位置o2、修改文件的存放位置(下次启动生效)o3、修改默认的数据库文件存放位置(即时生效)o4、修改默认的日志文件存放位置(即时生效)o5、日志压缩步骤o▪1)、修改数据库为简单模式▪2)、收缩相关数据库的指定数据文件或日志文件大小▪3)、还原数据库为完全模式▪4)、查询收缩日志后数据库信息A、磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率在MS Sql Server中,使用以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率:1、查询各个磁盘分区的剩余空间:exec master.dbo.xp_fixeddrives2、查询数据库的数据文件及日志文件的相关信息--(包括文件组、当前文件大小、文件最大值、文件增长设置、文件逻辑名、文件路径等)select * from [数据库名].[dbo].[sysfiles]--转换文件大小单位为MB:select name, convert(float,size) * (8192.0/1024.0)/1024. from [数据库名].dbo.sysfiles3、查询当前数据库的磁盘使用情况:exec sp_spaceused4、查询数据库服务器各数据库日志文件的大小及利用率DBCC SQLPERF(LOGSPACE)5、一次性的查询数据库中所有的表的大小--========================================= ====---- 更新查询数据库中各表的大小,结果存储到数据表中---- 运行方式: EXEC sp_UpdateTableSpaceInfo-- 结果查询: SELECT * FROM temp_tableSpaceInfo----========================================= ====create procedure [dbo].[sp_UpdateTableSpaceInfo]ASbegin--查询是否存在结果存储表if not exists (select * from sysobjects where id = object_id(N'temp_tableSpaceInfo') AND objectproperty(id, N'IsUserTable') = 1)begin--不存在则创建create table temp_tableSpaceInfo(name nvarchar(128),rows char(11),reserved varchar(18),data varchar(18),index_size varchar(18),unused varchar(18))end--清空数据表delete from temp_tableSpaceInfo--定义临时变量在遍历时存储表名称declare @tablename varchar(255)--使用游标读取数据库内所有表表名declare table_list_cursor cursor for --申明游标select name from sysobjectswhere objectproperty(id, N'IsTable') = 1 and name not like N'#%%' order by name--打开游标open table_list_cursor--将提取结果代入游标fetch next from table_list_cursor into @tablename--遍历查询到的表名while @@fetch_status = 0 --最近一条FETCH语句的标志begin--检查当前表是否为用户表if exists (select * from sysobjects where id = object_id(@tablename) AND objectproperty(id, N'IsUserTable') = 1)begin--当前表则读取其信息插入到表格中execute sp_executesql N'insert into temp_tableSpaceInfo exec sp_spaceused @tbname', N'@tbname varchar(255)', @tbname = @tablenameend--读取下一条数据fetch next from table_list_cursor into @tablenameend--释放游标close table_list_cursor --解除游标deallocate table_list_cursor --将游标内容代入最后结果endGOB、数据库日志收缩1、查看当前的存放位置--查看当前的存放位置select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files where database_id=db_id(N'数据库名');2、修改文件的存放位置(下次启动生效)--修改文件的存放位置下次启动生效--testDb为数据库名,alter database 数据库名 modify file ( name = 文件名(不包含后缀), filename = '文件存储路径');alter database 数据库名 modify file ( name = 文件名(不包含后缀), filename = '文件存储路径');eg.alter database testDb modify file ( name = testDb, filename = 'G:\SQL_DATA\testDb\testDb.mdf');alter database testDb modify file ( name = testDb_log, filename = 'G:\SQL_DATA\testDb\testdb_log.ldf');3、修改默认的数据库文件存放位置(即时生效)--修改默认的数据库文件存放位置(即时生效)EXEC xp_instance_regwrite@rootkey='HKEY_LOCAL_MACHINE',@key='Software\Microsoft\MSSQLServer\MSSQLServer', @value_name='DefaultData',@type=REG_SZ,@value='E:\MSSQL_MDF\data'GO4、修改默认的日志文件存放位置(即时生效)--修改默认的日志文件存放位置(即时生效)EXEC master..xp_instance_regwrite@rootkey='HKEY_LOCAL_MACHINE',@key='Software\Microsoft\MSSQLServer\MSSQLServer', @value_name='DefaultLog',@type=REG_SZ,@value='E:\MSSQL_MDF\log'GO5、日志压缩步骤1)、修改数据库为简单模式-- 修改数据库为简单模式USE[master]GOALTER DATABASE dbstore-pole-an SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE dbstore-pole-an SET RECOVERY SIMPLEGO2)、收缩相关数据库的指定数据文件或日志文件大小-- 收缩相关数据库的指定数据文件或日志文件大小USE dbstore-pole-anDBCC SHRINKFILE (N'dbstore-pole-an_log' , 700)3)、还原数据库为完全模式--还原数据库为完全模式USE[master]GOALTER DATABASE dbstore-pole-an SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE dbstore-pole-an SET RECOVERY FULLGO4)、查询收缩日志后数据库信息-- 查询收缩日志后数据库信息select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files where database_id=db_id(N'dbstore-pole-an');。
MS-SQL-Server-2008-R2(简体中文版)日志收缩详解

MS SQL Server 2008 R2(简体中文版)
日志收缩详解
1、右击要收缩的数据库,选择“属性”,如下图所示。
2、在弹出的窗口左侧“选择页”中点击“选项”,在右侧选择“恢复模式”值为“简单”,点击“确定”按钮,如下图所示。
3、右击数据库,选择“任务”-“收缩”-“文件”,如下图所示:
4、在“收缩文件”对话框中,选择“文件类型”值为“日志”,在收缩操作中选择“在释放未使用的空间前重新组织页”,将文件收缩到指定大小,单击“确定”按钮,完成日志收缩。
5、右击数据库,选择“属性”,在弹出的窗口左侧“选择页”中点击“选项”,在右侧选择“恢复模式”值为“完整”,点击“确定”按钮即可。
[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]。
sql数据减肥处理

SQL 数据库瘦身程序前提: 1. 在所有使用者皆离线状况下(无使用者进入下, 包括Terminal 模式)2. 离线时间必须先予计算, 旧数据库汇出为文字文件时间+文字文件汇入新数据库时间(例: 汇出为文字文件时间为 1 小时, 汇入新数据库时间为28 小时, 那就必须要有2 天时间内, 使用者是不能进入Pilot 内作业的)共分二步骤: (在主机上执行)第一步骤: ldf 压缩Step 1.登入Pilotadmin.exeStep 2.执行压缩SQL Server 日志Step 3.选择帐目进行压缩该帐目日志(Ldf)容量为1 MB# 此项仅为压缩MS_SQL 的Ldf (日志文件)并无法压缩Mdf(数据文件), MS_SQL本身提供的Mdf 压缩工具亦无法有效的压缩档案客量, 所以必须进步骤二所述的程序,才能真正降低Mdf的客量,并且加快Pilot AP的执行速度.第二步骤: Mdf 压缩Step 1.新开一个帐目# 1692 为新开帐目# 1692 为未来汇入成功后, 使用者新登入的帐目Step 2.将旧数据库(此例为1117 帐目)汇出为文字文件(GFS)# 使用「数据库更新」的汇出功能, 「选择帐目」及「帐别」均需指定# 再点选表格清单, 选择表格内容窗内任一笔数据, 先鼠标左键, 再按鼠标右键, 选择「全选」# S YSLOG 及 SYSLOGACT 此二表记录非常大,不建议汇出# 再按鼠标右键, 选择「汇出GFS 」# 指定汇出目录, 再按「确定」键按「数据表」后, 下方会重新排序Step 3.使用「一般文字文件汇入」功能, 再## 再次执行步骤一, 压缩新帐目的日志檔(Ldf), 因为上述的汇入后, 又会增加日志文件的容量, 所以再次压缩, 且「步骤一」也是日后的例行性工作.# !注意事项:1.先行测试, 并计算出「汇出」+「汇入」的完成时间, 再加上一小时的其执行程序所需时间, 得出总需求时间.2.寻找主机可停机的时间是大于总需求时间.3.规划此项事务的执行日期, 并对使用者公告, 从何时起, 登入Pilot的帐目为新帐目编号, 使用者登入的使用者代号及密码不变4.汇出为CSV格式时, 在其汇入时, 速度较快, 但是会碰到保留符号的问题(原始数据字段内含‘ / \ ” , 等符号), 造成汇入后数据不对, 较不保险. 相反的, 使用GFS 格式, 速度较慢, 但数据可避免上述问题, 可保证数据一致.5.Pilot 主机在执行开始到完成的期间内, 不可有任何Pilot使用端登入操作.。
MicrosoftSQLServer数据库日志截断

--参考 压缩⽇志及数据库⽂件⼤⼩ /*--注意事项 请按步骤进⾏,未进⾏前⾯的步骤,请不要做后⾯的步骤,否则可能损坏你的数据库. ⼀般情况下不建议做第4,6两步。
第4步不安全,有可能损坏数据库或丢失数据。
第6步如果⽇志达到上限,则以后的数据库处理会失败,在清理⽇志后才能恢复。
--*/ --下⾯的所有库名都指你要处理的数据库的库名。
1.清空⽇志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务⽇志: BACKUP LOG 库名 WITH NO_LOG 3.收缩数据库⽂件(RU 不压缩,数据库的⽂件不会减⼩ 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩⽂件 --选择⽇志⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了 --选择数据⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了 也可以⽤SQL语句来完成 --收缩数据库 DBCC SHRINKDATABASE(库名) --收缩指定数据⽂件,1是⽂件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1) 4.为了化的缩⼩⽇志⽂件(假如是SQL Server7.0,这步只能在查询分析器中进⾏) a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG⽂件 c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将⽣成新的LOG,⼤⼩只有500多K 或⽤代码: 下⾯的⽰例分离 pubs,然后将 pubs 中的⼀个⽂件附加到当前服务器。
a.分离 EXEC sp_detach_db @dbname = '库名' b.删除⽇志⽂件 c.再附加 EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:Program FilesMicrosoft SQL ServerMSSQLData库名.mdf' 5.为了将来能⾃动收缩,需要做下⾯的设置: 企业管理器--服务器--右键数据库--属性--选项--选择"⾃动收缩" --SQL语句设置⽅式: EXEC sp_dboption '库名', 'autoshrink', 'TRUE' 6.假如你想以后不让⽇志增长得过⼤ 企业管理器--服务器--右键数据库--属性--事务⽇志 --将⽂件增长限制为xM(x是你允许的数据⽂件⼤⼩)。
SQL 收缩日志

1、建议首先备份数据库(但不是必需的):
BACKUP DATABASE database_name TO LOG database_name TO backup_device
如果不需要当前事务日志中的记录进行数据库还原或没有足够的空间进行事务日志备份的的话,也可仅执行以下命令截断事务日志:
BACKUP LOG database_name WITH NO_LOG
3、收缩事务日志文件:
DBCC SHRINKFILE (log_file_name)
其中log_file_name是事务日志文件的逻辑名称,可以在企业管理器中数据库属性的“事务日志”页中看到(如Northwind数据库的默认事务日志文件逻辑名称为Northwind_log)。
4、如果日志文件仍然较大的话,可以尝试重复执行一次BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。
5、如果这时仍没有明显的效果,请执行DBCC OPENTRAN (database_name)检查当前数据库中是否存在长时间未提交的活动事务。有必要的话,可以断开这些连接并重新尝试截断事务日志和收缩日志文件。