日期:2014-05-18  浏览次数:20383 次

求一些常用的SQL(05版以上)数据库维护脚本
比如查看表数量 存储过程数量
锁状态
重建索引
镜像等等 要脚本代码 谢谢
帖子会再另开帖,再加400分,代码越实用越好..
代码回复在本帖就好.
谢谢

------解决方案--------------------
SQL code

---try

sysaltfiles 主数据库         保存数据库的文件
syscharsets 主数据库          字符集与排序顺序
sysconfigures 主数据库          配置选项
syscurconfigs 主数据库          当前配置选项
sysdatabases 主数据库          服务器中的数据库
syslanguages 主数据库          语言
syslogins 主数据库          登陆帐号信息
sysoledbusers 主数据库          链接服务器登陆信息
sysprocesses 主数据库          进程
sysremotelogins 主数据库          远程登录帐号

syscolumns 每个数据库        列
sysconstrains 每个数据库        限制
sysfilegroups 每个数据库        文件组
sysfiles 每个数据库         文件
sysforeignkeys 每个数据库         外部关键字
sysindexs 每个数据库         索引
sysmembers 每个数据库         角色成员
sysobjects 每个数据库         所有数据库对象
syspermissions 每个数据库         权限
systypes 每个数据库        用户定义数据类型
sysusers 每个数据库         用户

------解决方案--------------------
SQL code
/**//*********************************************************************************                                                                             
*  FielName   : backup.sql                                                    
*  Function   : 自动备份                                                     
*  Author     : Yahong<Yahongq111@163.com>
*  Date       : 2005-5-10   2005-5-19  2006-8-1   2007-09-18                   
*  Version    : 00          01         02         03                            
*                                                                             
*  Remark     :                                                               
*               2006-08-01  增加差异备份和完全备份两种情况,生成多个备份副本     
*               2008-09-18  增加备份一个实例中的所有数据库的情况,并在备份后清除日志
*
*********************************************************************************/

use master

declare @DbName varchar(255),@dir varchar(256),@dir_db varchar(256),
        @verb varchar(256),@cmd varchar(256),
        @backup_name varchar(256),@dynamic_name varchar(10),
        @disk_name varchar(256),@copy nvarchar(100),
        @today datetime,@weekday int

--建立网络连接
exec xp_cmdshell 'net use K: /delete'
exec xp_cmdshell 'net use I: /delete'

exec xp_cmdshell 'net use K: \\193.254.40.118\backup backup /user:Web\backup '
exec xp_cmdshell 'net use I: \\172.16.8.48\databackup backup /user:QA-SERVER-TEST\backup'

--设定名字
set @today=getdate()
set @dynamic_name=convert(varchar(10),@today,120)

set @dir='K:\'+@dynamic_name
set @dir_db=@dir+'Database'
set @verb='mkdir '

--建立目录
set @cmd=@verb+@dir_db
exec xp_cmdshell @cmd


declare cur_database cursor forward_only read_only  for
select name from sysdatabases
where dbid>4  --系统数据库的dbid<=4

open cur_database 

fetch next from cur_database
into @DbName

while @@fetch_status=0
begin    
    set @backup_name= @DbName+'_'+@dynamic_name
    set @disk_name=@dir_db+'\'+@backup_name+'.bak'
    
    --添加备份设备
    EXEC sp_addumpdevice 'disk',@backup_name, @disk_name
    
    set @weekday= datepart(dw,@today)
    if (@weekday=6) --如果是周五,则进行完全备份
       BACKUP DATABASE @DbName TO @backup_name  
    else       --其他时候进行差异备份
       BACKUP DATABASE @DbName TO @backup_name  with differential

    --清理日志
    backup log @DbName with no_log

    --释放设备
    exec sp_dropdevice @backup_name
    
    --复制备份副本到其他地方
    set @copy='copy '+@disk_name+'  I:'
    exec xp_cmdshell @copy
      
    --备份下一个数据库
    fetch next from cur_database
    into @DbName
end
close cur_database
deallocate cur_database

--删除网络连接
exec xp_cmdshell 'net use K: /delete'
exec xp_cmdshell 'net use I: /delete'


/**//******************************************************************************
*
*  File Name : Restore.sql
*  Function  : 数据库还原
*  Author    : Yahong<Yahongq111@163.com>  
*  Version   : 00
*  Date      : 2007-09-18
*  Remark    :
*
*******************************************************************************/


use master

dec