移动文件
-- 由于在SQL Server中文件组、文件不能离线 -- 所以必须把整个数据库设置为离线 checkpoint go ALTER DATABASE <DBName> SET OFFLINE go --修改文件名称 ALTER DATABASE <DBName> MODIFY FILE ( NAME = <FileName>, FILENAME = '<FilePath>' ) go --设置数据库在线 ALTER DATABASE <DBName> SET ONLINE
设置默认文件组、只读文件组
--设置默认文件组 ALTER DATABASE <DBName> MODIFY FILEGROUP <FileGroup> DEFAULT --设为只读文件组 --如果文件已经是某个属性,不能再次设置相同属性 ALTER DATABASE <DBName> MODIFY FILEGROUP <FileGroup> READ_WRITE
收缩数据库、收缩文件
--收缩数据库 DBCC SHRINKDATABASE( 'test', --要收缩的数据库名称或数据库ID 10 --收缩后,数据库文件中空间空间占用的百分比 ) DBCC SHRINKDATABASE( 'test', --要收缩的数据库名称或数据库ID 10, --收缩后,数据库文件中空闲空间占用的百分比 NOTRUNCATE --在收缩时,通过数据移动来腾出自由空间 ) DBCC SHRINKDATABASE( 'test', --要收缩的数据库名称或数据库ID 10, --收缩后,数据库文件中空间空间占用的百分比 TRUNCATEONLY --在收缩时,只是把文件尾部的空闲空间释放 ) --收缩文件 DBCC SHRINKFILE( wc_fg8, --要收缩的数据文件逻辑名称 7 --要收缩的目标大小,以MB为单位 ) DBCC SHRINKFILE( wc_fg8, --要收缩的数据文件逻辑名称 EMPTYFILE --清空文件,清空文件后,才可以删除文件 )
删除文件、删除文件组
要删除文件,必须要先把文件上的数据删除,或者移动到其他文件或文件组上
--删除数据后,必须要清空文件的内容 DBCC SHRINKFILE(<FileName>,EMPTYFILE) --删除文件,同时也在文件系统底层删除了文件 ALTER DATABASE <DBName> REMOVE FILE <FileName>
要删除文件组,必须先删除所有文件
--最后删除文件组 ALTER DATABASE <DBName> REMOVE FILEGROUP <FileGroupName>
重新组织索引
-- 重新组织索引 ALTER INDEX [IndexName] ON [TableName] REORGANIZE WITH ( LOB_COMPACTION = ON ) -- 批量生成重组索引 use test go select 'DBCC INDEXDEFRAG('+db_name()+','+o.name+','+i.name + ');' --,db_name(), --o.name, --i.name, --i.* from sysindexes i inner join sysobjects o on i.id = o.id where o.xtype = 'U' and i.indid >0 and charindex('WA_Sys',i.name) = 0
重建索引
ALTER INDEX [IndexName] ON [TableName] REBUILD PARTITION = ALL WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, ONLINE = OFF, SORT_IN_TEMPDB = OFF )