1: 删除LOG
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的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'
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG 再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了3:
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的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'
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG 再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了3:
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M
backup log 数据库 with no_log再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
alter database test set recovery simple
你的数据库服务器-》企业管理器-》管理-》SQL Server 代理-》作业-》新建作业,按照要求填就可以了,在“步骤”的“命令”中填写你要执行的存储过程或语句,在“调度”里面填写什么时间执行每天用作业执行:
DUMP TRANSACTION 库名 WITH NO_LOG
或:
backup log 数据库 with no_log
backup log DatabaseName with no_logdbcc shrinkdatabase(DatabaseName)或者接下来,用企业管理器收缩数据库即可!代码如下:with TADOQuery.Create(Self) dotryConnection := FrmDm.dbKS;///清除日志,并且收缩数据库,减少物理文件大小SQL.Add('backup log KS with no_log');SQL.Add('dbcc shrinkdatabase(KS)');ExecSQL;finallyFree;end;---------------------------------------nzfsoft下面这段sql代码是改自Microsoft的, 你运行一下生成的stored proc, 可以把你的log文件缩小到10M, ^_^注意把里面注释的数据库名改成你自己的库名啊if exists (select * from sysobjects where id = object_id(N'[dbo].[Truncate_Log_File]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[Truncate_Log_File]GOSET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ONGOCREATE PROCEDURE [Truncate_Log_File] ASSET NOCOUNT ONDECLARE @LogicalFileName sysname,@MaxMinutes INT,@NewSize INTSELECT @LogicalFileName = 'XXXX_LOG', -- 这里的XXXX_LOG替换成泥自己数据库的log名@MaxMinutes = 10,@NewSize = 10DECLARE @OriginalSize intSELECT @OriginalSize = sizeFROM sysfilesWHERE name = @LogicalFileNameDECLARE @Counter INT,@StartTime DATETIME,@TruncLog VARCHAR(255)WHILE @OriginalSize*8/1024>@NewsizeBEGINCREATE TABLE DummyTrans(DummyColumn char (8000) not null)SELECT @StartTime = GETDATE(),@TruncLog = 'BACKUP LOG ['+ db_name() + '] WITH TRUNCATE_ONLY'DBCC SHRINKFILE (@LogicalFileName, @NewSize)EXEC (@TruncLog)WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE())AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)AND (@OriginalSize * 8 /1024) > @NewSizeBEGINSELECT @Counter = 0WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 5000))BEGININSERT DummyTrans valueS ('Fill Log')DELETE DummyTransSELECT @Counter = @Counter + 1ENDEXEC (@TruncLog)ENDSELECT @OriginalSize=sizeFROM sysfilesWHERE name = @LogicalFileNameDROP TABLE DummyTransENDSET NOCOUNT OFFGOSET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ONGO
缩短事务日志(删去已提交的事务),每当检查点过程发生时引发——在开发过程中用来保留事务日志空间。不要在生产数据库中使用。