MS SQLServer DBCC MAINTAIN

use Sfis

GO


--如果出现错误:未处理修复语句。数据库需处于单用户模式下。

--更改成单用户

USE master

GO

sp_dboption initSfis, single, true

alter database initSfis set single_user with rollback immediate


DBCC CHECKFILEGROUP(1) --{ 'filegroup' | filegroup_id } 适用于文件组,分区表机制的数据库


DBCC CHECKDB('initSfis') --加上WITH TABLOCK 参数很快,但会阻塞

DBCC CHECKDB('initSfis', REPAIR_FAST) --快速修复 

DBCC CHECKDB('initSfis', REPAIR_REBUILD) --重建索引并修复 

DBCC CHECKDB('initSfis', REPAIR_ALLOW_DATA_LOSS)--如果必要允许丢失数据修复 


DBCC CHECKALLOC('initSfis') --检查指定数据库的磁盘空间分配结构的一致性


--还原数据库为多用户模式  

alter database initSfis set multi_user with rollback immediate


dbcc checktable('dbo.t_productarrage')

dbcc checkdb('initSfis')


--检查表的特定索引

USE Sfis;

GO

DECLARE @indid int;

SET @indid = (SELECT index_id 

              FROM sys.indexes

              WHERE object_id = OBJECT_ID('dbo.t_productarrage')

                    AND name = 'IX_gd');

DBCC CHECKTABLE ("dbo.t_productarrage", @indid);


DBCC SHOWCONTIG('dbo.t_productarrage', 'pk_t_productarrage') --索引情况

DBCC SHOW_STATISTICS ('dbo.t_productarrage', 'pk_t_productarrage'); --统计情况  WITH HISTOGRAM;

UPDATE STATISTICS dbo.t_productarrage --更新统计


DBCC DBREINDEX('dbo.t_productarrage','IX_gd',80) --重建索引,填充因子为%80

DBCC INDEXDEFRAG('initSfis', 'dbo.t_productarrage','IX_gd') --索引碎片整理

ALTER INDEX IX_gd ON dbo.t_productarrage REBUILD --重建索引

ALTER INDEX IX_gd ON dbo.t_productarrage REORGANIZE --重组索引


DBCC FREEPROCCACHE WITH NO_INFOMSGS --缓存中删除所有元素

DBCC PROCCACHE --以表格格式显示有关过程缓存的信息

DBCC UPDATEUSAGE('initSfis', 'dbo.t_productarrage') --报告目录视图中的页数和行数错误并进行更正

DBCC LOG('initSfis') --查看数据库的事务日志信息


dbcc traceon(3604)

SP_HELPDB Sfis

dbcc page(Sfis,1,100,1)    --查看Sfis数据库第1个文件中的100页


--修改数据库名字

sp_renamedb 'old_name', 'new_name'


--修改 Tempdb 路径,修改完成后,重启 SQL Server生效

sp_helpdb Tempdb /* (查看路径) */

ALTER DATABASE TEMPDB MODIFY FILE

(NAME='TEMPDEV',FILENAME='NEWPATH\tempdb.mdf',SIZE=500MB)

ALTER DATABASE TEMPDB MODIFY FILE

(NAME='TEMPLOG',FILENAME='NEWPATH\templog.ldf',SIZE=500MB)



--数据库快照

Create Database Data_snapshot_Credit

ON

( NAME = 'Credit',    --这里的名称必须为实际数据库名称,查出所对应的NAME名称(exec sp_helpdb 'Credit')

 Filename = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Credit_snapshot.snap'

)

AS Snapshot of Credit

GO


DROP DATABASE Data_snapshot_Credit    --删除快照

GO


RESTORE DATABASE Credit FROM Database_snapshot = 'Data_snapshot_Credit'    --利用快照恢复数据库

GO




/*

 * 收缩数据库

 * 

*/

USE [Sfis_PrintBarcode]

GO

SELECT * FROM sys.database_files

GO


/*

USE [Sfis_PrintBarcode]

GO

DBCC SHRINKDATABASE(N'Sfis_PrintBarcode' )

GO

*/


USE [master]

GO

ALTER DATABASE [Sfis_PrintBarcode] SET RECOVERY SIMPLE WITH NO_WAIT

GO




USE [Sfis_PrintBarcode]

GO

DBCC SHRINKFILE (N'sfis' , 0, TRUNCATEONLY)

GO


USE [Sfis_PrintBarcode]

GO

DBCC SHRINKFILE (N'sfis_log' , 0, TRUNCATEONLY)

GO


/*

 * 恢复模式为完整

USE [master]

GO

ALTER DATABASE [Sfis_PrintBarcode] SET RECOVERY FULL WITH NO_WAIT

GO

*/


USE [Sfis_PrintBarcode]

GO

SELECT * FROM sys.database_files

GO


你可能感兴趣的:(数据库,database,single,空间,修复)