TSQL管理数据库和数据库文件

1、查看数据库的状态
  目录视图:select name , state_desc from sys.databases  where name = 'stusystem'
  函数:select DATABASEPROPERTYEX('stusystem','status')
  存储过程:sp_helpdb stusystem
2、修改数据库
  2-1修改数据库名称
    alter database database_name modify name = new_name
    exec sp_renamedb 'studentsystem','stusystem'
  2-2扩大数据库
    alter database stusystem
    add file
    (  name , filename , size , maxsize , filegrowth )
  2-3收缩数据库,收缩后的数据库不能小于数据库的最小大小
    自动数据库收缩:在alter table 语句中,可以将auto_shrink选项设置为on
    手动收缩数据库:
      desc shrinkdatabase
      ( database_name | database_id | 0  要收缩的数据库名称或者ID,如果指定为0,则使用当前数据库
      [ , target_percent ]    收缩后的数据库文件中所需的剩余可用空间百分比
      )
  2-4收缩数据库文件
    手动数据库文件收缩
    dbcc shrinkfile
    (
      { file_name | file_id }
      { [ , emptyfile ]
      |  [ [ , target_size ] [ , { notruncate | truncateonly } ] ]
      }
    )
    [ with no_infomsgs ]
  2-5移动数据库文件(适用于同意SQL Server实例)
    alter database database_name
    modify file ( name = logical_name , filename = 'new_path\os_file_name' )
  2-6删除数据库
    drop database database_name [  , . . . n]
  2-7分离数据库
    分离数据库是指将数据库从SQL Server实例中删除 , 但使数据库在其数据文件和事务日志中保持不变
    如果存在下列任何情况,则不能分离数据库
      该数据库是系统数据库
      该数据库已经复制并发布。如果要分离数据库,必须首先执行sp_replicationdboption
      数据库中存在数据库快照。必须首先删除所有数据库快照再分离数据库
      数据库正在某个数据库镜像会话中进行镜像。必须先终止该会话再分离数据库
      数据库处于可疑状态,必须将数据库设为紧急模式再分离数据库
    exec  sp_detach_db stusystem
  2-8附加数据库
    create database stusystem
    on
    (
       name = stusystem_DAT,
       filename = 'E:\SQL\stusystem\stusystem_DAT.mdf',
       size = 20MB,
       maxsize = 40MB,
       filegrowth = 5%
    ),
    (
       name = stusystem_DAT1,
       filename = 'E:\SQL\stusystem\stusystem_DAT1.ndf',
       size = 20MB,
       maxsize = 40MB,
       filegrowth = 5%
    ),
    (
       name = stusystem_DAT2,
       filename = 'E:\SQL\stusystem\stusystem_DAT2.ndf',
       size = 20MB,
       maxsize = 40MB,
       filegrowth = 5%
    )
    log on
    (
       name = stusystem_LOG,
       filename = 'E:\SQL\stusystem\stusystem_LOG.ldf',
       size = 10MB,
       maxsize = 20MB,
       filegrowth = 1MB
    )
    for attach
3、数据库快照(Express 版本不支持,必须保存在NTFS文件系统的分区上)
  3-1工作原理
    数据库快照与源数据库相关。数据库快照必须与数据库在同一服务器实例上
    数据库快照运行在数据页级
  3-2创建数据库快照
    create database database_snapshot_name
    on
    (
      name = logical_file_name ,
      filename = 'os_file_name' ,
    )[ , . . . n ]
    as snapshot of source_database_name
  3-3数据库恢复到数据库快照
    resotre database database_name from database_snapshot = database_snapshot_name
    
    

原文地址:https://www.cnblogs.com/changweihua/p/2195104.html