3. 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件:
USE master
GO
CREATE DATABASE db_name ON
(
NAME = dbname_dat1,
FILENAME = 'D:\MSSQL\Data\dbname_dat1.ndf',
SIZE = 1000MB,
FILEGROWTH = 50MB
)
GO
--更改该数据库以添加一个 2GB 大小的新数据文件
ALTER DATABASE db_name
ADD FILE
(
NAME = dbname_dat2,
FILENAME = 'F:\MSSQL\DATA\dbname_dat2.ndf',
SIZE = 2000MB,
FILEGROWTH = 50MB
)
GO
--更改该数据库以添加一个1GB 大小的新日志文件
ALTER DATABASE db_name
ADD LOG FILE
( NAME = db_name_log2,
FILENAME = 'F:\MSSQL\Data\db_name_log2.ldf',
SIZE = 1000MB,
FILEGROWTH = 20MB),
GO
4. 停止并重新启动 SQL Server:
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢复。
5. 释放磁盘空间并且重新运行恢复操作,按照下面的步骤收缩日志。
sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。
为从根本上解决这样的问题,你可以按下面的操作配置SQLSERVER 2000:
a.如果不需要恢复到指定的时间点,你可以将数据库的恢复模式配置为简单,这样
UPDATE,DELETE,SELECT就不会记录日志,日志就不会增加的很大:
USE MASTER
GO
ALTER DATABASE DB_NAME SET RECOVERY SIMPLE
b.如果你的恢复模式是全部,你一定要配置日志字段收缩:
USE MASTER
GO
sp_dboption 'databasename','trunc. log on chkpt.',true
sp_dboption 'databasename','autoshrink',true
c.通过每日备份将日志收缩:
BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES
BACKUP LOG DATABASE_NAME TO LOG_DEVICES
OR
BACKUP LOG DATABASE_NAME with truncate_only
**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志并没有收缩!
d.每天在备份数据库完成之后,重新启动MS SQLSERVER SERVICE.
USE DATABASE_NAME
go
DBCC SHRINKFILE(2,truncateonly)
**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志已经收缩!
e.手动快速收缩日志:
/ *run below script,you will shrink you database log files
immediately, in my experience,you need to run the script for 3 or
4 minutes before stopping it manually */
use databasename
dbcc shrinkfile(2,notruncate)
dbcc shrinkfile(2,truncateonly)
create table t1(char1 char(4000))
go
declare @i int
select @i=0
while(1=1)
begin
while(@i<100)
begin
INSERT INTO T1 VALUES ('A')
SELECT @I=@I+1
END
TRUNCATE table T1
BACKUP LOG youdatabasename with truncate_only
end
GO