--整理..邹建--2003.12--*/ /*--控制数据库恢复选项ALTER DATABASE 数据库名 SET RECOVERY <RECOVERY_OPTIONS><RECOVERY_OPTIONS>的取值: FULL | BULK_LOGGED | SIMPLE FULL: 系统将对介质错误提供完全保护。 如果数据文件损坏,介质恢复可以还原所有已提交的事务。 BULK_LOGGED: 将在介质错误保护程度与某些大规模或大容量操作 的最优性能及日志存储空间最少占用量之间进行权衡。 这些操作包括: SELECT INTO、 大容量装载操作(bcp 和 BULK INSERT)、CREATE INDEX 文本和图象操作(WRITETEXT 和 UPDATETEXT)。在大容量日志记录恢复模型下,对整个类只做最少的日志记录, 并且无法逐个操作地控制日志记录行为。SIMPLE: 系统将提供占用日志空间最小的备份策略。 服务器故障恢复不再需要的日志空间可被自动重用。重要 简单恢复模型比其它两种模型更容易管理, 但数据文件损坏时造成数据丢失的可能性更大。 最近的数据库备份或差异数据库备份之后的更改都将丢失,必须手工重新输入。默认恢复模型由 model 数据库的恢复模型确定。 若要更改新数据库的默认值,请用 ALTER DATABASE 设置 model 数据库的恢复选项。 --*/
1.先分离数据库,在数据库文件中把日志文件删除掉,然后附加数据库.2.如果附加上去的数据库问置疑的就运行下面的代码> USE MASTER GOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GOUPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名' Gosp_dboption '置疑的数据库名', 'single user', 'true' GoDBCC CHECKDB('置疑的数据库名') Goupdate sysdatabases set status =28 where name='置疑的数据库名' Gosp_configure 'allow updates', 0 reconfigure with override Go sp_dboption '置疑的数据库名', 'single user', 'false' Go 3.如果数据库文件附加不上去就把原来的数据库文件改个名字,再新建一个同名的数据库,停掉SQL服务器,把原来的数据库文件覆盖到新建的数据库文件中,再重新启动SQL服务器,看看数据库是否可用.
DBCC UPDATEUSAGE BACKUP LOG DB_NAME WITH NO_TRUNCATE DBCC SHRINKDATABASE
楼上的 你转载的文章有错误!! 关于一、二两句【DUMP命令】 Makes a backup copy of a database (DUMP DATABASE) or makes a copy of the transaction log (DUMP TRANSACTION) in a form that can be read into Microsoft® SQL Server™ using the BACKUP or LOAD statements.Important The DUMP statement is included in SQL Server version 2000 for backward compatibility. It is recommended that the BACKUP statement be used instead of the DUMP statement. In a future version of SQL Server, DUMP will not be supported.所以只要一句就可以了 不是狗屁什么清空日志 就是第二步操作也不会清空日志
--整理..邹建--2003.12--*/
/*--控制数据库恢复选项ALTER DATABASE 数据库名 SET RECOVERY <RECOVERY_OPTIONS><RECOVERY_OPTIONS>的取值: FULL | BULK_LOGGED | SIMPLE FULL: 系统将对介质错误提供完全保护。
如果数据文件损坏,介质恢复可以还原所有已提交的事务。 BULK_LOGGED: 将在介质错误保护程度与某些大规模或大容量操作
的最优性能及日志存储空间最少占用量之间进行权衡。
这些操作包括:
SELECT INTO、
大容量装载操作(bcp 和 BULK INSERT)、CREATE INDEX
文本和图象操作(WRITETEXT 和 UPDATETEXT)。在大容量日志记录恢复模型下,对整个类只做最少的日志记录,
并且无法逐个操作地控制日志记录行为。SIMPLE: 系统将提供占用日志空间最小的备份策略。
服务器故障恢复不再需要的日志空间可被自动重用。重要 简单恢复模型比其它两种模型更容易管理,
但数据文件损坏时造成数据丢失的可能性更大。
最近的数据库备份或差异数据库备份之后的更改都将丢失,必须手工重新输入。默认恢复模型由 model 数据库的恢复模型确定。
若要更改新数据库的默认值,请用 ALTER DATABASE 设置 model 数据库的恢复选项。
--*/
USE MASTER
GOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GOUPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
Gosp_dboption '置疑的数据库名', 'single user', 'true'
GoDBCC CHECKDB('置疑的数据库名')
Goupdate sysdatabases set status =28 where name='置疑的数据库名'
Gosp_configure 'allow updates', 0 reconfigure with override
Go sp_dboption '置疑的数据库名', 'single user', 'false'
Go
3.如果数据库文件附加不上去就把原来的数据库文件改个名字,再新建一个同名的数据库,停掉SQL服务器,把原来的数据库文件覆盖到新建的数据库文件中,再重新启动SQL服务器,看看数据库是否可用.
BACKUP LOG DB_NAME WITH NO_TRUNCATE
DBCC SHRINKDATABASE
2 截断当前日志(注意之后立即对数据库文件进行备份)
3 压缩数据库(回收Windows系统空间)
否则可能损坏你的数据库.
一般不建议做第4,6两步
第4步不安全,有可能损坏数据库或丢失数据
第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.
--*/--下面的所有库名都指你要处理的数据库的库名1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志:
BACKUP LOG 库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件 c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K 或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
a.分离
EXEC sp_detach_db @dbname = '库名' b.删除日志文件
c.再附加
EXEC sp_attach_single_file_db @dbname = '库名',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'5.为了以后能自动收缩,做如下设置:
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
--SQL语句设置方式:
EXEC sp_dboption '库名', 'autoshrink', 'TRUE' 6.如果想以后不让它日志增长得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增长限制为xM(x是你允许的最大数据文件大小) --SQL语句的设置方式:
alter database 库名 modify file(name=逻辑文件名,maxsize=20)
转贴推荐内容