sybase缩小tempdb

本文介绍了一种缩小SQL Server中tempdb数据库的方法,包括备份关键系统表、调整sysusages表中的记录并重启数据库服务器等步骤。
查看文章
  
缩小tempdb数据库大小
2008/12/08 21:51

1. 如果有条件,强烈建议先做好所有用户数据库,包括master数据库的备份
至少要做一个master数据库的备份

2. 将下列master数据库中系统表进行bcp备份
master..sysusages
master..sysdevices
master..sysdatabases
master..syslogins
master..sysconfigures
master..syscharsets

3. isql -Usa -Ppasswd -Sservername
1>; use master
2>; go
1>; sp_configure “allow updates”, 1
2>; go

1>; begin transaction
2>; go
1>; select * from sysusages
2>; where dbid = db_id(’tempdb’)
3>; go
1>; select * from sysusages where dbid=2
2>; go
例:
dbid segmap lstart size vstart pad unreservedpgs
—— ———– ———– ———– ———– —— ————-
2 7 0 1024 4100 NULL 380
2 3 1024 76800 33554432 NULL 76500
2 4 77824 25600 33631232 NULL 25500

如果其中两兆(即lstart为0 size为1024)的行中segmap不为7,需要先将其更改为7
1>; update sysusages
2>; set segmap = 7 where dbid = db_id(’tempdb’)
3>; and lstart = 0
4>; go
如果已经为7,上述步骤可以略过

删除其中lstart不为0的所有行
1>; delete sysusages where dbid = db_id(’tempdb’)
2>; and lstart != 0
3>; go

检查删除后的结果是否正确
1>; select * from sysusages where dbid = db_id(’tempdb’)
2>;go
例:
dbid segmap lstart size vstart pad unreservedpgs
—— ———– ———– ———– ———– —— ————-
2 7 0 1024 4100 NULL 380
剩且仅剩一行信息。

如果发现删除后信息不正确,马上回滚所有已作动作
1>; rollback transaction
2>; go
如果正确,提交已作动作,这样将无法恢复
1>; commit transaction
2>; go

重新启动数据库服务器
1>; checkpoint
2>; go
1>; shutdown
2>; go

之后如果服务器正常,在没有用户进程连接进行操作的情况下,新建数据库tempdb设备,并进行数据库tempdb的扩容,之后如果一切正常,进行master数据库的备份。
1>; dump database master to ” dump_device”
2>; go


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值