使用截断日志功能,把日志截断。
或者修改文件的属性,改成自增长的方式。如果磁盘空间满了,则有可能需要先加一个日志文件,然后再做截断日志功能。
② sql server 2008 r2如何收缩数据库和文件
1、右击数据库选择,打开Files窗口
2、Files窗口,File type 选择 Log,单击OK完成日志收缩。
按以上方法操作没有效果,原因是数据库的恢复模式不是简单模式,只需要将恢复模式改为简单模式即可用以上操作来收缩日志,方便又好用。
将数据库恢复模式改为简单模式方法:
1、右击数据库选择属性,弹出窗口如下图,选择Options选项,将 Recovery Model 改为 Simple 即可。
按如下方法操作也可收缩日志:
1、当数据库恢复模式为简单时。使用dbcc shrinkfile (logfile_name,target_size)命令来完成。如
use mydb
dbcc shrinkfile (mydb_log,10) --将mydb_log收缩至10m
2、当数据库恢复模式为完全时。可以先将数据库模式改为简单模式,再使用上述方法来进行。
use master
alter database mydb set recovery simple
dbcc shrinkfile (mydb_log,10) --将mydb_log收缩至10m
也可以直接备份事务日志文件后再收缩:
use master
backup log mydb to disk='d:/dd.bak'
use mydb
dbcc shrinkfile (mydb_log,10) --将mydb_log收缩至10m;
3、通过分离数据库,然后再删除事务日志文件,再附加mdf数据文件,也可以达到某种意义上的事务日志收缩。
以下是有关日志文摘
对于每一个数据库来讲,都需要至少一个事务日志文件。事务日志文件是整个数据库的血液,如果没有事务日志的话,那么将无法进行任何操作。
事务日志有什么东西?
事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息。
事务日志与数据库恢复(recovery)是密切相关的,其实数据库在启动时,便会进行相关的恢复(recovery)操作,如下所示。当然,在数据库还原时,也可以指定手工恢复(recovery).任何在数据库上的改变,如果在事务日志内被标记为已提交,并用一个LSN(LOG SEQUENCE NUMBER)来标识,同时相关改变就会体现在数据文件上,而被标记为未提交的改变将不会体现在数据文件上。
2010-01-12 18:31:48.72 spid7s Recovery is complete. This is an informationa message only. No user action is required.
事务日志文件还存储着数据库需要回滚的相关信息。在SQL Server数据库上,默认是隐式提交的,也就是说在查询分析器里面进行的每一个操作,在操作完成后,都是默认已经commit,但如果通过指定begin tran 和rollback tran的命令来标识事务时,rollback tran就需要使用事务日志内的相关信息才可以回滚。当然,如果SQL Server遇到相关错误时,如死锁,那么也会产生一个内部回滚,这些都需要用到事务日志文件。
为什么要收缩事务日志?
收缩日志的原因有很多种,有些则是考虑空间不足,有些则是应用程序限制导致的,一般情况下,是不建议对事务日志进行其他改变的,如需要控制事务日志的大小,则可以通过安排
③ 怎样在SQL Server 2000中收缩数据库
:
第1步,在SQL Server服务器上依次单击“开始”→“所有程序”→Microsoft SQL Server→“企业管理器”菜单命令,打开SQL Server Enterprise Manager窗口。使用Windows身份验证连接上SQL Server。
第2步,在左窗格中依次展开Microsoft SQL Server→“SQL Server组”→“SQL Server服务器”→“数据库”目录,然后右键单击目标数据库名称(如CPCW data),选择“属性”快捷命令。在打开的“CPCW data 属性”对话框中单击“选项”标签,并在“故障还原”模型下拉菜单中选择“简单”模型。最后单击“确定”按钮使设置生效,如图2008120233所示。
图2008120233 选择“简单”数据还原模型
第3步,返回企业管理器窗口,右键单击目标数据库名称,选择“所有任务”→“收缩数据库”快捷命令,如图2008120234所示。
图2008120234 选择“收缩数据库”命令
第4步,在打开的“收缩数据库”对话框中无须调整参数,直接单击“确定”按钮开始收缩数据库的操作。完成后单击“确定”按钮即可。日志在一些异常情况下往往是恢复数据库的重要依据,收缩数据库操作并不能在很大程度上减小数据库大小,其主要作用是收缩日志大小。因此应当定期进行上述操作,以免数据库日志过大,如图2008120235所示。
图2008120235 执行“收缩数据库”操作
④ SQL Server 2000数据库收缩
1、是不是我的数据库现在收缩失败了啊?
答:你的数据库收缩还没有完全失败,但已经可以视为失败,因为要做完收缩遥遥无期,需要的时间将十分漫长,具体原因见第三问。
2、大家有过对大型数据库的收缩经验吗?时间怎么这么久啊?
答:数据库的收缩时间与数据库大小是成正比的,数据库越大,收缩时间越长。所以建议要定时进行数据库收缩,每年一次或几个月一次,依数据库增长速度而定。
3、为什么我按百分比收缩时总是不成功?和盘符所剩空间有关系么?
答:不论是按百分比收缩还是按空间大小进行收缩,都要求数据库所在磁盘预留一定的空间,最好在15%以上。在数据库进行收缩时,系统将把这部分预留空间作为缓冲区,用来保存和整理数据库中的数据,然后再把整理过的数据写回数据库。像你说的这种情况,数据文件大小为598G,可用空间为9M,基本无法进行有效的数据库收缩。建议你把数据库文件解挂后,复制到750G以上的大容量硬盘中,重新附加数据库后再进行收缩。
4、数据库收缩的简单原理是什么啊?和盘符所剩空间有关系么?
答:数据库收缩的简单原理有两条,一是清理日志,因为日志记录的是数据库的历史操作,在一段时间后,如果没有保存价值可以清除;二是清理空白空间,这种空间是删除数据表(一般是临时表)后造成的,数据表删除后,数据库空间不会自动缩小,所以数据文件就会越来越大。和盘符所剩空间的关系,第三问已经回答了。
⑤ 收缩数据库 执行transact-sql 语句或批处理 报错……
1、先查看一下是否需要收缩数据库;是否占用了过多空间?
2、可以尝试修复一下数据库,再做收缩操作。有时候数据库有一些问题(数据库可以访问并不报错),导致收缩不能正常进行!
⑥ sql server 2000收缩数据库总是发生死锁
出现死锁的情况:
1). 不按同一顺序访问对象。(注:出现循环)
2). 事务中的用户交互。(注:增加持有资源的时间,较多锁竞争)
3). 事务冗长并处于多个批处理中。(注:增加持有资源的时间)
4). 使用较高的隔离级别。(注:使用较低的隔离级别(例如已提交读))
5). 不使用基于行版本控制的隔离级别:2005中支持快照事务隔离和指定READ_COMMITTE
隔离级别的事务使用行版本控制,可以将读与写操作之间发生的死锁几率降至最低。
6). 不使用绑定连接。
解决办法:
使用SET LOCK_TIMEOUT timeout_period(单位为毫秒)来设定锁请求超时。默认情况下,数据库没有超时期限(timeout_period值为-1,可以用SELECT @@LOCK_TIMEOUT来查看该值,即无限期等待)。当请求锁超过timeout_period时,将返回错误。timeout_period值为0时表示根本不等待,一遇到锁就返回消息。设置锁请求超时,破环了死锁的第二个必要条件(请求与保持条件)。
压缩文件,我觉得这样比较好,
use 数据库名;
select * from sys.database_files
dbcc shrinkfile(2,1) --前者参数1代表主数据文件,2代表日志文件;后者参数是大小
⑦ SQL SERVER如何收缩数据库
工具/材料
SQL SERVER 2008
- 01
首先打开SQL SERVER的管理工具,找到要操作的数据库,如下图所示,右键单击选择属性
- 02
然后在弹出的数据库属性信息界面中来查看一下可用空间,一般都是根据可用空间的大小来判断是否需要对数据库进行收缩的,如下图所示
- 03
然后我们在数据库属性页中选择”选项”页面,如下图所示,这个页面包括了自动收缩的选项设置
- 04
在选项页面的右侧找到自动栏信息,如下图所示,将自动收缩选项设置为TRUE。一旦将自动收缩设置为TRUE,数据库就会自动监控可用空间的大小进行数据收缩。
- 05
另外还可以在数据库中进行手动收缩设置,如下图所示,先选择数据库选项的收缩
- 06
在弹出的数据库收缩界面中,我们将收缩比进行设置,大家根据自己的实际需要设置即可
- 07
另外你也可以选择收缩数据库文件的选项,如下图所示,可以选择相应的收缩类型,我这里选择的是释放未使用空间的选项,大家根据自己情况进行选择
⑧ 对SQL Server 2008数据库进行收缩时,会遇到死锁现象,如何解决。
楼主 可以试试下面的方法:
清空日志
DUMP TRANSACTION 库名
WITH
NO_LOG
2.截断事务日志:
BACKUP LOG 数据库名 WITH
NO_LOG
3.收缩数据库文件
数据库名--右击--任务--收缩--文件
--文件类型选择日志--收缩操作选择第二个 将文件收缩到0 ,确定就可以了
4. 也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(客户资料)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from
sysfiles
DBCC SHRINKFILE(1)收缩的时候把恢复模式改为简单 否则收缩不了
希望解决了楼主的问题
⑨ SQL SERVER如何收缩数据库
工具/材料
SQLSERVER2008
首先打开SQL SERVER的管理工具,找到要操作的数据库,如下图所示,右键单击选择属性
然后在弹出的数据库属性信息界面中来查看一下可用空间,一般都是根据可用空间的大小来判断是否需要对数据库进行收缩的,如下图所示
然后我们在数据库属性页中选择”选项”页面,如下图所示,这个页面包括了自动收缩的选项设置
在选项页面的右侧找到自动栏信息,如下图所示,将自动收缩选项设置为TRUE。一旦将自动收缩设置为TRUE,数据库就会自动监控可用空间的大小进行数据收缩。
另外还可以在数据库中进行手动收缩设置,如下图所示,先选择数据库选项的收缩
在弹出的数据库收缩界面中,我们将收缩比进行设置,大家根据自己的实际需要设置即可
另外你也可以选择收缩数据库文件的选项,如下图所示,可以选择相应的收缩类型,我这里选择的是释放未使用空间的选项,大家根据自己情况进行选择
⑩ sql server简单模式下,收缩数据库有时候收缩很容易一会儿就收缩了,但是有那么几次总是收缩不了
主要是事务日志占空间
1.“备份类型”选“事务日志”。
2.收缩->数据库,选“在释放未使用的空间前重新组织文件……”。
反复操作上述两个步骤,如果不能设为单用户模式,动作要紧凑。
这样才能收缩到最小(只有几M)。