上篇我们介绍了SQL Server DBA平时的一些工作任务,今天我们介绍一下,日常工作中的一些运维语句,可以当作工具直接来使用。
1、检查数据库完整性
dbcc checkdb(Portal) dbcc checkdb(Portal) with tablock
(提示:可以左右移动代码)
2、数据库重命名、修改恢复模式、修改用户模式
--数据库重命名 ALTER DATABASE WC MODIFY NAME = test
--设置数据库为完整恢复模式 alter database testset recovery full
--只允许一个用户访问数据库 alter database test set single_user with rollback after 10 seconds --指定多少秒后回滚事务
--只允许一个用户访问数据库 alter database test set single_user with rollback after 10 seconds --指定多少秒后回滚事务 --只有sysadmin,dbcreator,db_owner角色的成员可以访问数据库 alter database wc set restricted_user with rollback immediate --立即回滚事务 --多用户模式 alter database wc set multi_user with no_wait --不等待立即改变,如不能立即完成, --那么会导致执行错误
3、扩展数据库:增加文件组、增加文件、修改文件大小、修改文件的逻辑名称
--添加文件组 ALTER DATABASE testADD FILEGROUP WC_FG8
--添加数据文件 ALTER DATABASE testADD FILE( NAME = WC_FG8, FILENAME = 'D:\WC_FG8.ndf', SIZE = 1mb, MAXSIZE = 10mb, FILEGROWTH = 1mb )TO FILEGROUP WC_FG8
--添加日志文件 ALTER DATABASE testADD LOG FILE( NAME = WC_LOG3, FILENAME = 'D:\WC_FG3.LDF', SIZE = 1MB, MAXSIZE = 10MB, FILEGROWTH = 100KB )
--修改数据文件的大小,增长大小,最大大小 ALTER DATABASE test MODIFY FILE( NAME = 'WC_FG8', SIZE = 2MB, --必须大于之前的大小,否则报错 MAXSIZE= 8MB, FILEGROWTH = 10%)
--修改数据文件或日志文件的逻辑名称 ALTER DATABASE test MODIFY FILE( NAME = WC_LOG3, NEWNAME = WC_FG33 )
4、移动文件
--由于在SQL Server中文件组、文件不能离线,所以必须把整个数据库设置为离线 checkpoint go ALTER DATABASE WCSET OFFLINE go
--修改文件名称 ALTER DATABASE WC MODIFY FILE( NAME = WC_fg8, FILENAME = 'D:\WC\WC_FG8.NDF') go
--把原来的文件复制到新的位置:'D:\WC\WC_FG8.NDF' --设置数据库在线 ALTER DATABASE WCSET ONLINE
5、设置默认文件组、只读文件组
--设置默认文件组 ALTER DATABASE WC MODIFY FILEGROUP WC_FG8 DEFAULT
--设为只读文件组 --如果文件已经是某个属性,不能再次设置相同属性 ALTER DATABASE WC MODIFY FILEGROUP WC_FG8 READ_WRITE
6、收缩数据库、收缩文件
--收缩数据库 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 --清空文件,清空文件后,才可以删除文件 )
7、删除文件、删除文件组
7.1.要删除文件,必须要先把文件上的数据删除,或者移动到其他文件或文件组上
--删除数据后,必须要清空文件的内容 DBCC SHRINKFILE(WC_FG8,EMPTYFILE)
--删除文件,同时也在文件系统底层删除了文件 ALTER DATABASE test REMOVE FILE WC_FG8
7.2.要删除文件组,必须先删除所有文件
--最后删除文件组 ALTER DATABASE test REMOVE FILEGROUP WC_FG8
8、重新组织索引
ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock] REORGANIZE WITH ( LOB_COMPACTION = ON )
use testgo select 'DBCC INDEXDEFRAG('+db_name()+','+o.name+','+i.name + ');' --,db_name(), --o.name, --i.name, --i.* from sysindexes iinner join sysobjects o on i.id = o.idwhere o.xtype = 'U' and i.indid >0 and charindex('WA_Sys',i.name) = 0
9、重新生成索引
ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock] REBUILD PARTITION = ALLWITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, ONLINE = OFF, SORT_IN_TEMPDB = OFF )
10、更新统计信息
--更新表中某个的统计信息 update statistics temp_lock(_WA_Sys_00000001_07020F21) update statistics temp_lock(_WA_Sys_00000001_07020F21) with sample 50 percent update statistics temp_lock(_WA_Sys_00000001_07020F21) with resample, --使用最近的采样速率更新每个统计信息 norecompute --查询优化器将完成此统计信息更新并禁用将来的更新
--更新索引的统计信息 update statistics temp_lock(idx_temp_lock_id) with fullscan
--更新表的所有统计信息 update statistics txt with all
11、执行SQL Server代理作业
exec msdb.dbo.sp_start_job @job_name =N'job_update_sql';
请大家收藏以后备用~