SQL code
--备份declare @sql varchar(8000) set @sql='backup database mis to disk=''d:\databack\mis\mis'+rtrim(convert(varchar,getdate(),112))+'.bak''' exec(@sql) --删除15天前备份文件 set @sql='del d:\databack\mis\mis' +rtrim(convert(varchar,getdate()-15,112))+'.bak''' exec master..xp_cmdshell@sql --清除日志dump transaction databasename with no_log backup log databasename with no_log --查看数据库里用户和进程的信息sp_who --查看SQL Server数据库里的活动用户和进程的信息sp_who 'active' --查看SQL Server数据库里的锁的情况sp_lock --进程号--50是SQL Server系统内部用的,进程号大于的才是用户的连接进程. --spid是进程编号,dbid是数据库编号,objid是数据对象编号--收缩数据库日志文件的方法--收缩简单恢复模式数据库日志,收缩后@database_name_log的大小单位为M backup log @database_name withno_log dbcc shrinkfile (@database_name_log, 5) --分析SQL Server SQL 语句的方法: set statisticstime {on | off} set statistics io {on | off} --图形方式显示查询执行计划--在查询分析器->查询->显示估计的评估计划(D)-Ctrl-L 或者点击工具栏里的图形--文本方式显示查询执行计划set showplan_all {on |off} set showplan_text { on | off } set statistics profile { on | off }

--完整备份,每周一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [demo] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

--截断日志
USE Master
GO
BACKUP LOG Demo  WITH NO_LOG
GO
--收缩日志文件
USE Demo
GO
DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
GO
--差异备份,每天一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\DiffBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
BACKUP DATABASE [Demo] TO DISK=@str
WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N'Demo差异备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

--日志备份,每小时一次
USE Demo
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\logbak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
BACKUP LOG [Demo] TO DISK=@str
WITH RETAINDAYS=3,NOFORMAT,NOINIT,
NAME=N'Demo日志备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

--删除过期的备份文件,每天两次
declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
set @dir='del D:\DBtext\jgj\DBABak\'
set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),'',''),':',''),8)
set @str=@dir+'fullbak'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),'',''),':',''),8)
set @str=@dir+'diffbak'+@filename+'*.diff'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),'',''),':',''),8)
set @str=@dir+'logbak'+@filename+'*.trn'
exec xp_cmdshell @str

SQL code
-- 如何删除 SQL2005 过期的数据库备份文件呢? 在 SQL2005 数据库中,不可以自动删除过期的备份文件,所以借用第三方插件完成此功能。 -- 方式一:通过 Forfiles 删除指定目录下过期的备份文件 目的:删除目录 i: \sqldataup 中天前的 . bak 文件: 步骤: 1 、定义 FORFILES 批处理脚本如下: C: \> FORFILES / P i: \sqldataup / M *. bak / C "cmd /C del /Q @path" / d - 5 如果执行成功则返回当前盘符 C: \> 。 --如果没有需要删除的文件则返回信息错误 : 用指定的搜索标准没有找到文件。比如: --C:\>FORFILES /P i:\sqldataup /M *.bak /C "cmd /C del /Q @path" /d -5 -- 错误 : 用指定的搜索标准没有找到文件。 2 、通过计划任务调用批处理脚本如图所示,图太长请看这里 3 、当然也可以用 SQLAgent 调用 CMDEXEC 完成批处理作业。 方式二:如果在 SQL2008 中因为默认安装 Powershell 1.0 程序,故可以用 Powershell 编写脚本来完成定时删除过期文件。 太多内容,请看文章http://blog.csdn.net/claro/archive/2009/08/18/4458417.aspx。

SQL code
--最好备份日志,以后可通过日志恢复数据。。。以下为日志处理方法 一般不建议做第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复. --*/--下面的所有库名都指你要处理的数据库的库名1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG 库名 WITH NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成 --收缩数据库DBCC SHRINKDATABASE(库名) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1) 4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行) a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件 c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K 或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。 a.分离 EXEC sp_detach_db @dbname = '库名'b.删除日志文件 c.再附加 EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf' 5.为了以后能自动收缩,做如下设置: 企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:EXEC sp_dboption '库名', 'autoshrink','TRUE' 6.如果想以后不让它日志增长得太大 企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 库名 modify file(name=逻辑文件名,maxsize=20)

--查看表的索引信息
exec sp_helpindex tb

--结合sys.indexes和sys.index_columns,sys.objects,sys.columns查询索引所属的表或视图的信息
select
  o.name as 表名,
  i.name as 索引名,
  c.name as 列名,
  i.type_desc as 类型描述,
  is_primary_key as 主键约束,
  is_unique_constraint as 唯一约束,
  is_disabled as 禁用
from
  sys.objects o
inner join
  sys.indexes i
on
  i.object_id=o.object_id
inner join 
  sys.index_columns ic
on
  ic.index_id=i.index_id and ic.object_id=i.object_id
inner join
  sys.columns c
on
  ic.column_id=c.column_id and ic.object_id=c.object_id
go

--查询索引的键和列信息
select 
  o.name as 表名,
  i.name as 索引名,
  c.name as 字段编号,
from
  sysindexes i inner join sysobjects o
on
  i.id=o.id
inner join
  sysindexkeys k
on
  o.id=k.id and i.indid=k.indid
inner join
  syscolumns c
on
  c.id=i.id and k.colid=c.colid
where
  o.name='表名'
---查询索引操作的信息
select * from sys.dm_db_index_usage_stats

--查询指定表的统计信息(sys.stats和sysobjects联合查询)
select
  o.name,--表名
  s.name,--统计信息的名称
  auto_created,--统计信息是否由查询处理器自动创建
  user_created--统计信息是否由用户显示创建
from
  sys.stats
inner join
  sysobjects o
on
  s.object_id=o.id
where 
  o.name='表名'
go

--查看统计信息中列的信息
select
  o.name,--表名
  s.name,--统计信息的名称
  sc.stats_column_id,
  c.name---列名
from
  sys.stats_columns sc
inner join
  sysobjects o
on
  sc.object_id=o.id
inner join
  sys.stats s
on
  sc.stats_id=s.stats_id and sc.object_id=s.object_id
inner join
  sys.columns c
on
  sc.column_id=c.column_id and sc.object_id=c.object_id
where 
  o.name='表名'

--查看统计信息的明细信息
dbcc show_statistics

--查看索引自动创建的统计信息
exec sp_autostats '对象名'

--关闭自动生成统计信息的数据库选项
alter datebase 数据库名 set auto_create_statistics off

--创建统计信息
create statistics 统计信息名称 on 表名(列名)
[with
[[fullscan
   sample number{percent|rows}]
[norecompute]
]
go
解释一下上面的参数:
fullscan:指定对表或视图中所有的行收集统计信息
sample number{percent|rows}:指定随机抽样应读取的数据行数或者百分比 sample选项不能与fullscan选项同时使用
norecompute:指定数据库引擎不自动重新计算统计信息

--计算随机抽样统计信息
create statistics 统计信息名称 on 表名(列名)
with sample 5 percent---创建统计信息,按5%计算随机抽样统计信息
go

--创建统计信息
exec sp_createstats--参数自己去查下帮助,在这里不一一列举

--修改统计信息
update statistics 表名|视图名
    索引名|统计信息名,索引名|统计信息名,.....
[with
[[fullscan
   sample number{percent|rows}]
[norecompute]
]
---参数与create statistics 语句相似,下面介绍几种常用应用
1.更新指定表的所有统计信息
update statistics 表名

2.更新指定表的单个索引的统计信息
update statistics 表名 索引名

3.对表进行全面扫描,更新统计信息
update statistics 表名(列名) with fullscan
--获取磁盘读写情况
select
  @@total_read as '读取磁盘的次数',
  @@total_write as '写入磁盘的次数',
  @@total_error as '磁盘写入错误数',
  getdate() as '当前时间'

--获取数据库文件的I/O统计信息
select * from fn_virtualfilestats(null,null)
--两个参数
database_id--指定数据库编号,如果为null,则为所有数据库实例返回I/O统计信息
file_id --文件的编号,如果为null,则为所有文件返回信息

--获取I/O工作情况
select 
  @@id_busy,--SQL自上次启动以来的用于执行输入和输出操作的时间
  @@timeticks, --每个时钟周期对应的微秒数
  @@id_busy*@@timeticks as 'I/O 操作毫秒数',
  getdate() as '当前时间'

--查看SQL SEVER CPU活动,工作情况
select
  @@cpu_busy,--自上次启动以来的工作时间
  @@timeticks, --每个时钟周期对应的微秒数 
  @@cpu_busy*cast(@@timeticks as float)/1000 as 'cpu工作时间(秒)',
  @@idie*cast(@@timeticks as float)/1000 as 'CPU空闲时间(秒)'
  getdate() as '当前时间'

--获取网络数据包统计信息
select
  getdate() as '当前时间',
  @@pack_received as'输入数据包数量',
  @@pack_sent as '输出数据包数量',
  @@packet_error as '错误包数量'
服务器配置选项
--启动AWE
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'awe enable',1--启动AWE选项,用于支持超过4G内存 具体用法见笔记三
go 
sp_configure 'show advanced options',0
reconfigure
go

--指定游标集中的行数
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'cursor threshold'--指定游标集中的行数,超过此行数,将异步生成游标键集
go 
sp_configure 'show advanced options',0
reconfigure
go

--指定全文索引列的默认语言值
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'default full-text language'--2052代表简体中文,具体的查询联机丛书
go 
sp_configure 'show advanced options',0
reconfigure
go

--控制是否让触发器返回结果集
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'disallow results from triggers',1--1代表on
go 
sp_configure 'disallow results from triggers',0--0代表off
go 
sp_configure 'show advanced options',0
reconfigure
go

--控制最初为创建索引分配的最大内存量
sp_configure 'index create memory', 4096
GO

--设置可用的锁的最大个数
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'locks'---要设置的话在后面加',数字'
go 
sp_configure 'show advanced options',0
reconfigure
go

--设置SQL进程可使用的工作线程数
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'max worker threads'--要设置的话在后面加',数字'
go 
sp_configure 'show advanced options',0
reconfigure
go

--指定一个查询在超时前等待所需资源的时间
sp_configure 'query wait',数字
go

--指定在SQL SERVER超时之前远程操作可以持续的时间
sp_configure 'remote query  timeout',数字
go

--是否允许运行系统存储过程xp_cmdshell
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
sp_configure 'show advanced options',0
reconfigure
go

--从运行SQL SERVER实例的本地或远程服务器上控制存储过程的执行
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'remote access',1 --1表示允许
reconfigure
go
sp_configure 'remote access',0 --0表示禁止
reconfigure
go
sp_configure 'show advanced options',0
reconfigure
go

---更多的查看联机丛书

--启动,暂停和停止本地的SQL SERVER 服务
net start MSSQLSERVER  --启动
net pause MSSQLSERVER  --暂停
net continue MSSQLSERVER  ---继续被停止的服务
net stop MSSQLSERVER --停止

--查询服务器配置选项信息
select * from sys.configurations
go
--得到的结果中
configuration_id --配置选项的唯一ID
name             --配置选项的名称
value            --配置选项的值
minimum          --配置选项的最小值
maximum          --配置选项的最大值
value_in_use     --配置选项当前使用的运行值
description      --配置选项的说明
is_dynamic       --等于1时表示需要执行reconfiguration语句才能生效的变量
is_anvanced      --等于1时表示需要执行show advanced语句才能生效的变量

--也可以使用sp_configure查询服务器配置选项信息,只是参数有所不同,具体查看联机丛书

sqlserver日常维护脚本的更多相关文章

  1. Oracle日常维护脚本

    1.正常停库流程     ps -ef|grep LOCAL=NO|cut -c 9-15|xargs kill -9      shutdown immediate; 2.备份数据库     bac ...

  2. MS SQL 日常维护管理常用脚本(二)

    监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息   Code Snippet SELEC ...

  3. Oracle 史上最全近百条Oracle DBA日常维护SQL脚本指令

    史上最全近百条Oracle DBA日常维护SQL脚本指令 https://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650281305&am ...

  4. oracle 容灾库日常维护 ,健康检查脚本 以及常见问题分析

    select DEST_ID, APPLIED_SCN FROM v$archive_dest select * from v$dataguard_status; SELECT gvi.thread# ...

  5. 第三篇——第二部分——第五文 配置SQL Server镜像——域环境SQL Server镜像日常维护

    本文接上面两篇搭建镜像的文章: 第三篇--第二部分--第三文 配置SQL Server镜像--域环境:http://blog.csdn.net/dba_huangzj/article/details/ ...

  6. SQL Server 日常维护经典应用

    SQL Server日常维护常用的一些脚本整理. 1.sql server开启clr权限: GO RECONFIGURE GO ALTER DATABASE HWMESTC SET TRUSTWORT ...

  7. 数据库日常维护-CheckList_01历史Agent Job执行情况检查

    检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...

  8. db2日常维护

    一. DB2日常维护操作 1.数据库的启动.停止.激活 db2 list active databases db2 active db 数据库名 db2start --启动 db2stop [forc ...

  9. 程序员必备:Oracle日常维护命令

        上一篇讲了Linux的日常维护命令,这篇讲讲Oracle的日常维护命令.工作中需要使用Oracle数据库的童鞋们,相信或多或少都需要对Oracle做一些基本的维护操作,例如导入导出总该有吧?( ...

随机推荐

  1. linux下查看当前用户的 三个命令

    linux下查看当前用户的 三个命令 1,whoami; 2,id -un; 3,who -H  可以列出当前所有的    NAME (用户名)    LINE (窗口列表)    TIME(开启时间 ...

  2. 查看域名对应的ip地址

    nslookup   www.google.com.hk

  3. 繁华模拟赛 David与Vincent的博弈游戏

    #include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...

  4. CSS3实现二十多种基本图形

    CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出.直接用CSS3画出这些图形,要比贴图性能更好,体验更加,是一种非常好的网页美观方式. 这32种图形分别为圆形,椭圆形,三角形,倒三角形, ...

  5. Jackson 框架,轻易转换JSON

    Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...

  6. 关于delphi PAServer 远程调试DLL文件

    用PAServer调试的话会产生一个默认user-connectionname的文件夹,且这个文件夹不能自定义.因此无法使调试的dll文件生成到host主程序所在的文件夹下而导致无法调试. 变通方法: ...

  7. linux 下如何查看和踢除正在登陆的其它用户 ==>Linux下用于查看系统当前登录用户信息的4种方法

    在linux系统中用pkill命令踢出在线登录用户 由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍 所以需要有时踢出指定的用户 1/#who   查出当前有那些终端登录(用 ...

  8. vs2013秘钥

    Ultimate:BWG7X-J98B3-W34RT-33B3R-JVYW9 Premium:FBJVC-3CMTX-D8DVP-RTQCT-92494  YKCW6-BPFPF-BT8C9-7DCT ...

  9. Sybase IQ导出文件的几种方式

    IQ有四种方法,将表的数据导出为文本文件:1.重定向 SELECT * FROM TABLE1 ># D:MYDATATABLE1.TXT -- 文件生成在执行语句的客户端上 2.通过选项导出 ...

  10. Linux下永久修改主机名

    红帽系列的Linux发行版主机名存放位置是/etc/sysconfig/network,Ubuntu Linux主机名存放位置是/etc/hostname,所以只要修改主机名存放文件便可以永久的修改计 ...