/*-----------------------------*/
-- lyfzdb Ϊ���ݿ���
-- ����Ϊlyfzdb�����ݱ�;
/*-----------------------------*/

/*
MS Sql Server �ṩ�˺ܶ����ݿ��޸�����������ݿ����ɻ����е��޷���ɶ�ȡʱ���Գ�����Щ�޸���� 
1. DBCC CHECKDB 
��������������û�н����κβ���������£���SQL��ѯ��������ִ������SQL�������ݿ���޸����޸����ݿ���ڵ�һ���Դ�����������
*/
 
/*
�:
use master 
declare @databasename varchar(255) 
set @databasename='��Ҫ�޸������ݿ�ʵ�������' 
exec sp_dboption @databasename, N'single', N'true' --��Ŀ�����ݿ���Ϊ���û�״̬ 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
exec sp_dboption @databasename, N'single', N'false'--��Ŀ�����ݿ���Ϊ���û�״̬ 
*/

�÷�ʾ��:
use master 
declare @databasename varchar(255) 
set @databasename='lyfzdb' 
exec sp_dboption @databasename, N'single', N'true' --��Ŀ�����ݿ���Ϊ���û�״̬ 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
exec sp_dboption @databasename, N'single', N'false'--��Ŀ�����ݿ���Ϊ���û�״̬ 

-- Ȼ��ִ�� DBCC CHECKDB('��Ҫ�޸������ݿ�ʵ�������') ������ݿ��Ƿ��Ծɴ��ڴ���ע�⣺�޸�����ܻ���ɲ������ݵĶ�ʧ�� 

/*
2. DBCC CHECKTABLE 
���DBCC CHECKDB ����Ծɴ��ڴ��󣬿���ʹ��DBCC CHECKTABLE���޸��� 

�:
use ��Ҫ�޸������ݿ�ʵ������� 
declare @dbname varchar(255) 
set @dbname='��Ҫ�޸������ݿ�ʵ�������' 
exec sp_dboption @dbname,'single user','true' 
dbcc checktable('��Ҫ�޸������ݱ�������',REPAIR_ALLOW_DATA_LOSS) 
dbcc checktable('��Ҫ�޸������ݱ�������',REPAIR_REBUILD) 
------�ѡ� ��Ҫ�޸������ݱ������ơ�����Ϊִ��DBCC CHECKDBʱ���������ݱ������� 
exec sp_dboption @dbname,'single user','false' 
*/

�÷�ʾ��:
use master 
declare @dbname varchar(255) 
set @dbname='lyfzdb' 
exec sp_dboption @dbname,'single user','true' 
dbcc checktable('dindan',REPAIR_ALLOW_DATA_LOSS) 
dbcc checktable('dindan',REPAIR_REBUILD) 
------�ѡ� ��Ҫ�޸������ݱ������ơ�����Ϊִ��DBCC CHECKDBʱ���������ݱ������� 
exec sp_dboption @dbname,'single user','false' 



3. ������һЩ���õ��޸����� 
DBCC DBREINDEX �ؽ�ָ�����ݿ��б���һ���������� 
�÷���DBCC DBREINDEX(����,����) �޸��˱����е������� 

�÷�ʾ��:
DBCC DBREINDEX('dindansp',' ') --�޸��˱����е�����
����������������������������������������������������������������������

 
/*
SQL SERVER���ݿ�ļ�⼰�޸����� 
����K/3��Ʒ���ƹ㣬Ҫ��ͻ�������Ա��SQL SERVER���ݿ���˽�Ҳ��һ����ߡ���K/3��ʹ�ù����У����ݿ��ļ���Ƶ����ʹ�ã�
����ijЩԭ�����ݿ��п��ܱ��𻵣����Ľ����������������ݿ��⼰�޸�������һ�򵥽��⡣
ϣ����λ��ʵ�ʹ������������µķ���ʱ����ʱ�������ṩ��Ϣ���Ա�����һ���ĸ��¡� 
*/
1.1 SQL SERVER���ݿ�ļ�� 
SQL SERVER�ṩ�����ݿ�����������DBCC CHECKDB�����ݿ��и�������ķ��估�ṹ����ȷ�Խ��м�⣬
����ͨ��һ�������ƣ������еĴ�����Ϣ��ʾ���������﷨���£� 

DBCC CHECKDB 
('database_name' [,NOINDEX | { REPAIR_ALLOW_DATA_LOSS 
| REPAIR_FAST 
| REPAIR_REBUILD 
}] 
) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}] 

����˵���� 
'database_name'�������������ݿ�ʵ������ 
NOINDEXָ��ϵͳ���ķǾ�����������⣻ 
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST| REPAIR_REBUILD ֱָ���޸����ֵĴ�������REPAIR_ALLOW_DATA_LOSS���������˴������޸�ʱ��ϵͳ��ֱ��ɾ��������ݡ�����������������һ��ʱ�����ݿ���봦�ڵ��û�ģʽ������Enterprise Manager�е����ݿ����������ã� 
ALL_ERRORMSGS��������⵽�Ĵ�����Ϣȫ����ʾ���������򣬶���ÿ�ű����ֻ��ʾ200��������Ϣ�� 
NO_INFOMSGS�����������е���Ϣ��ռ�ÿռ�ı��档 
������⣬���ڴ���Ķ��󣬽���OBJECT ID����ʽ��������������Ϣ���ɸ���OBJECT ID��ϵͳ��sysobjects�в��ҵ���صı�����NAME�� 

1.2 SQL SERVER�������ݿ���޸� 

--�������ݿ���󣬿���Գ��ֵ������ȡ��Ӧ�Ĵ�ʩ���д�������ͨ�����󣬷��ֶ����������Ŵ������⣬����DBCC CHECKALLOC�������޸��� 
DBCC CHECKALLOC ('database_name' | REPAIR_REBUILD }] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}] 

--���Ƿ�ϵͳ��������������������DBCC DBREINDEX�����޸��� 
DBCC DBREINDEX ( [ 'database.owner.table_name' [, index_name [, fillfactor ] ] ] ) [WITH NO_INFOMSGS] 

�������������Ҳ��ֱ��ʹ��DBCC CHECKDB(��db_name��,repair_rebuild)���޸��� 

����һ��������ڽ��м��ʱ����ʾ�޷������������ӣ���ʱ���������ݿ����𻵡�����������������ǿɲ�ȡ���´�ʩ�������޸��� 
���ȣ���SQL Enterprise���½�һ���ݿ⣨�����ݿ���Ϊtest��,�������ݿ��ֹͣSQL Server Service Manager��
�����ͻ����ݿ��MDF�ļ�����Ϊtest _data.mdf(���½����ݿ�����ļ���)��Ȼ���ø�������ļ������½����ݿ�ͬ���ļ���
���ţ�����SQL Server Service Manager����Master���ݿ⽫ϵͳ������Ϊ�ɸ���״̬ 
Use Master 
Go 
sp_configure 'allow updates', 1 
reconfigure with override 
Go 


--�����ݿ���Ϊ����״̬�� 
--update sysdatabases set status = -32768 where database ' 
update sysdatabases set status = -32768 where dbid=DB_ID('lyfzdb')
ֹͣ����������SQL Server Service Manager�����ؽ�Log�ļ��� 
DBCC TRACEON (3604) 
DBCC REBUILD_LOG('lyfz','lyfz _log_ldf') 

--�����ݿ�����Ϊ���û�ģʽ��Ȼ����м�⣺ 
sp_dboption 'lyfz', 'single user', 'true' 
DBCC CHECKDB('lyfz') 
Go 

�����ݿ�ִ��CHECKDB�Ĺ����з���һЩ�����������ƻ���������Ծ���ı������ؽ������IJ����� 
DBCC DBREINDEX�������� 
��ִ�����ϲ�����Ȼ���ܽ�����������ƻ��ı�����ʱ�����ǹؼ�������ɴ��½����������룬
���������������ͨ�����ڵı����������ݣ��ָ�����û��һ�����ݣ����޷��޸��� 

1.3 SQL Server���ݿ�Ϊʲô�����أ� 
������΢���ṩ��һЩ�����������ݿ��𻵵�ԭ��һЩԤ����ʩ�� 
�������⣬�������𶯻������Ȱ�Ӳ�̡�ɾ��һЩ���ݿ��ļ��� 
Ӳ�����⣬�������̿����������⣻ 
����ϵͳ���⣬������ϵͳ��ص�һЩ�������� 

1.4 Ԥ����ʩ�� 
1������/������ִ��CHKDSK(��������)���Լ��Ӳ�������ṹ���޸�һЩCHKDSK��������⣻ 
2�����������ݡ� 

1.5 Ӧ�����ݿ��޸����� 
declare @databasename varchar(255) 
set @databasename='lyfzdb'------һ��Ҫ�ֹ����� 
---------ִ��һ�����޸�����������ʱ,�����������ݶ�ʧ���޸� 
---------�����ݶ�ʧ���޸�Ҫ���ڵ��û��½���,��ʱ���˳��м��,�ͻ���,sql������ģ�� 
---���й����˳�,�ڲ�ѯ������master���������ݿ�Ϊ���û� 

exec sp_dboption @databasename, N'single', N'true' 

-----�ڲ�ѯ������master��,�����޸����ݿ� 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
------��ԭ���ݿ�״̬ 
exec sp_dboption @databasename, N'single', N'false' 


��2�����ݿ���־�𻵵��޸� 
���������²�������ͼ�ؽ����ݿ�������־. 

ע��: ����������־��ʧ, ���ݿ������û���ύ������. 

ע:��Ҫ�滻����ʵ�����ݿ����� 

2.1 ����1: 

����һ���µ����ݿ�,����Ϊԭ�����ݿ������. 

2.2����2: 

ֹͣSQL Server 

2.3����3: 

�������ݿ��MDF�ļ��滻�����ݿ����Ӧ��MDF�ļ�, ����LDF�ļ�ɾ�� 

2.4����4: 

��������SQL Server ����,Ȼ��������������: 

Use Master 
Go 
sp_configure 'allow updates', 1 
reconfigure with override 

Go 
begin tran 
update sysdatabases set status = 32768 where db_name 
-- Verify one row is updated before committing 
commit tran 

2.5����5: 
ֹͣSQLȻ����������SQL Server ����,Ȼ��������������: 

DBCC TRACEON (3604) 
DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF') 
Go 

2.6����6: 

ֹͣSQLȻ����������SQL Server ����,Ȼ������: 

use master 
update sysdatabases set status = 8 where 
Go 

sp_configure 'allow updates', 0 
reconfigure with override 
Go 

2.7����7: 
����dbcc checkdb(db_name)������ݿ��������. 

��3�� ���ݿ����ɵ�һ�㴦�� 
1��ִ������SQL�����޸�ϵͳ���Ŀ��أ��� 
EXEC sp_configure 'allow updates', 1 
RECONFIGURE WITH OVERRIDE 
2���޸����ݿ�Master�еı���sysdatabases 
�� status�ֶ���ֵ����Ϊ4 
3����ִ������SQL�� 
EXEC sp_configure 'allow updates', 0 
RECONFIGURE WITH OVERRIDE�� 


-----------------------------------------
--1����SQL��ѯ��������ִ��������䣺��ע�������õ�POSΪ���ݿ����ƣ����û��ֹ���Ϊ�Լ������ݿ����� 

use pos 
dbcc checkdb 

--2���鿴��ѯ������кܶ��ɫ������ʾ�����������������ʾ�� 

--CHECKDB --������x���������� x ��һ���Դ��������ݿ� 'pos' �У��� 

--һ������£������������ԭ���Ǵ����𻵻�ͻȻͣ�磻һ���Դ�����������ݿ��еı�����������һ�㶼���޸��� 
--3���鿴��ɫ���壬�����д�������ݿ������¼��������������𻵵ı�����¼������ 
--4�������ݿ�����Ϊ���û�ģʽ��ֱ���ڲ�ѯ��������ִ��������伴�ɣ�(�緢��������в��ɹ�������û��ĵ���ע��һ�£�������������һ�¡�) 

EXEC sp_dboption 'pos', 'single user', 'TRUE'  

 

--5�������ѯ������ִ��������䣺 

use pos 
dbcc checkdb��'pos',repair_allow_data_loss��  -------�޸����ݿ� 
dbcc checkdb ('pos',REPAIR_REBUILD)           -------�޸����ݿ����� 

 

--6����ִ�У�dbcc checkdb��������ݿ⣬���ֽ��Ϊ�� 

--CHECKDB  ������0���������� 0��һ���Դ��������ݿ� 'pos' �У��� 

--���ݿ��Ѿ��޸���ϡ�

 

--7��ȡ�����û�ģʽ����ֱ���ڲ�ѯ��������ִ��������伴�ɣ� 

EXEC sp_dboption 'pos', 'single user','FALSE'