数据库维护常见问题解决方法
(1)SQL SERVER 日志损坏后,不能用 sp_atttach_single_file_db 恢复,用如下步骤: 方法一 1、建一个同名的数据库 2、修改服务器设置:允许对系统目录进行直接修改(sp_configure 'allow updates',1) 3、停止 SQL Server 4、用原 mdf 文件覆盖新建库的数据库文件 5、重启 SQL Server(这时数据库应该是置疑) 6、将数据库置为紧急状态:update master.dbo.sysdatabases set status = 32768 where name=dbname 7、重建日志:dbcc rebulid_log('dbname', 'logfile') 8、update master.dbo.sysdatabases set status=16 where name = dbname 9. 修改服务器设置:取消 允许对系统目录进行直接修改 (sp_configure 'allow updates',0) 方法二 1.新建一个同名的数据库 2.再停掉 sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启 sql server 5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据 库名) 6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是, 利用 数据库的脚本创建一个新的数据库,并将数据导进去就行了. USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名' Go --重起 SQL SERVER sp_dboption '置疑的数据库名', 'single user', 'true' Go DBCC CHECKDB('置疑的数据库名') Go update sysdatabases set status=16 where name='置疑的数据库名' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption '置疑的数据库名', 'single user', 'false'
1
Go (2).从旧数据库导入新数据库后,新库会有很多冗余空间,所以请执行下面的瘦身计划: DBCC SHRINKDATABASE (pacs,NOTRUNCATE) go DBCC SHRINKDATABASE (pacs,TRUNCATEONLY) go --下例将 pacs 数据库中的文件减小,以使 pacs 中的文件有 10% 的可用空间 DBCC SHRINKDATABASE (pacs, 10) GO (3)以下是清空 pacs 库表的一些语句(导数据之前用): use pacs go delete from examrecord go delete from image go delete from imageback go delete from kbase go delete from template1 go delete from template2 go delete from template3 go delete from pdfreport go
2