暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server DBA日常运维语句

SQL数据库开发 2020-04-13
1810

点击上方SQL数据库开发,关注获取SQL视频教程


SQL专栏

SQL数据库基础知识汇总

SQL数据库高级知识汇总


上次我们介绍了SQL Server DBA平时的一些工作任务,还没看的小伙伴可以戳下面的链接:
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        --立即回滚事务

只有sysadmin,dbcreator,db_owner角色的成员可以访问数据库

--多用户模式
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';


请大家收藏以后备用~

——End——


后台回复关键字:资料领取,获取一份精心整理的技术干货

后台回复关键字:进群,带你进入高手如云的交流群。

推荐阅读


点击「阅读原文」了解SQL训练营

文章转载自SQL数据库开发,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论