sql server 2000收缩数据库总是发生死锁?

我是给我们的网站数据库进行压缩,然后总是发生死锁?请问是不是只要有用户访问就无法压缩?还是什么?DBCC   SHRINKDATABASE这个语句怎么些?打个比方我想要“数据库文件”缩小到702M这个语句怎么写?或者日志文件缩小到16M。 

第1个回答  2012-02-14
出现死锁的情况:
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代表日志文件;后者参数是大小
相似回答