backup log dbname with no_log
dbcc shrinkdatabase('dbname') --dbname为目标数据库,注意单引号是半角的,截断前请为数据库做完全备份
方法2(这个方法在sqlserver2000的环境下做一般能成功,在sqlserver7及以下版本就不一定了):
第一步:
先备份整个数据库以备不测
第二步:
备份结束后,在Query Analyzer中执行如下的语句:
exec sp_detach_db dbname,true --卸除这个DB在MSSQL中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在Query Analyzer中执行如下的语句:
exec sp_attach_single_file_db dbname,'d:\microsoft sql server\mssql\data\dbname_data.mdf'
--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。
方法3
第一步:
backup log dbname with no_log
或者 backup log dbname with truncate_only --no_log和truncate_only是在这里是同义的,随便执行哪一句都可以
第二步:
1.收缩特定数据库的所有数据和日志文件,执行 dbcc shrinkdatabase(dbname,[,target_percent])--dbname是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比
2.收缩一次一个特定数据库中的数据或日志文件,执行 dbcc shrinkfile(file_id,[,target_size]) --file_id是要收缩的文件的标识 (ID) 号,若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库中搜索 sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc shrinkfile 将文件大小减少到默认文件大小
两个dbcc命令都可以带上参数notruncate或truncateonly,具体意思看联机帮助。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/68303/viewspace-251507/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/68303/viewspace-251507/