数据库(三)之管理数据库

数据库组成
  表,视图,存储过程,触发器,用户与角色和其他数据库部分。

创建数据库
  使用CREATE DATABASE语句:
  

CREATE DATABASE database_name
  [ ON
    [ PRIMARY ] 
     [ <filespec> 
       [ ,...n]
       [, <filegroup> [,...n]]
       [ LOG ON { <filespec> [,...n] }]
    ]
    [ COLLATE collation_name ]
    [ WITH <external_acess_option>]
   ]
   [;]

  一个简单例子:

CREATE DATABASE 学生管理系统
ON
(
    NAME = 学生管理系统_DATA,
    FILENAME = 'D:DataSQL学生管理系统_DATA.mdf',
    SIZE = 5MB,
    MAXSIZE = 20MB,
    FILEGROWTH = 5%
)
LOG ON
(
    NAME = 教务管理系统_LOG,
    FILENAME = 'D:DataSQL学生管理系统_DATA.ldf',
    SIZE = 2MB,
    MAXSIZE = 10MB,
    FILEGROWTH = 1MB
)

 查看数据库状态
   使用目录视图:右键点击数据库,查看属性
   使用函数:select DATABASEPROPERTYEX('教务管理系统', 'Space')
   使用系统存储过程:sp_helpdb

修改数据库
   通过目录视图直接修改属性:数据库名,数据库大小,增长率,文件位置等
   使用函数:ALTER DATABASE 教务管理系统 MODIFY NAME = 教务管理系统

删除数据库
   通过目录视图直接删除
   通过函数删除:DROP DATABASE 教务管理系统

分离数据库
   分离数据库就是指将数据库从SQL Server的实例中分离出去,但是不会删除该数据库的文件和事务日志文件,这样,该数据库可以再附加到其他的SQL Server的实例上去。
   在下列状态下无法分离数据库:已复制并发布数据库。数据库中存在数据库快照,数据库处于未知状态。

附加数据库
   附加数据库是指将当前数据库以外的数据库附加到当前数据库实例中。在附加数据库时,所有的数据库文件(.mdf和.ndf文件)都必须是可用的。如果任何数据文件的路径与创建数据库或上次附加数据库时的路径不同,则必须指定文件的当前路径。在附加数据库的过程中,如果没有日志文件,系统将创建一个新的日志文件。

收缩数据库

数据库快照
   数据库快照就像是为数据库照了相片一样。相片实际是照相时刻被照对象的静态呈现,而数据库快照则提供了源数据库在创建快照时刻的只读,静态视图。一旦为数据库建立了快照后,这个数据库快照就是我们创建快照那个时刻数据库的情况,虽然数据库还在不断变化,但是这个快照不会再改变了。

   优点:维护历史数据以生成报表。由于数据库快照可提供数据库的静态视图,因而可以通过快照访问特定时间点的数据。
   将查询实施在数据库的快照上,可以释放主体数据库上的资源。
   加快恢复操作效率,使用快照将数据库恢复到生成快照是的状态比从备份还原快得多;但是,此后将无法对数据进行前滚操作。根据磁盘资源,可以每24小时创建6到12个滚动快照。此后,每创建一个新快照,就删除最早的快照。如果要恢复,可以将数据库恢复到错误发生的前一时刻的快照。或者,也可以利用快照中的信息,手动重新创建删除的表或其他丢失的数据。
 
   限制:不能对数据库进行删除,分离或还原。
   源数据库的性能收到影响。由于每次更新页时都会对快照执行“写入时复制”操作,导致源数据的IO增加。
   不能从源数据库或任何快照中删除文件。
   源数据必须处于在线状态,除非该数据库在数据库镜像会话中是镜像数据库。

  创建数据库快照:语法格式

CREATE DATABASE database_snapshot_name
    ON
    (
    NAME = logical_snapshot_name,
    FILENAME = 'os_file_name'
    )[,...n]
    AS SNAPSHOT OF source_database_name
    [;]

  例子:

CREATE DATABASE 人事管理系统_3_9
ON
(
    name = 人事管理系统,FILENAME = 'D:DATA人事管理系统.mdf'
)
as snapshot of 人事管理系统

例子:
    RESTORE DATABASE <database_name>
    FROM
    DATABASE_SMAPSHOT = <database_snapshot_name>

  复制数据库

原文地址:https://www.cnblogs.com/ZGreMount/p/8551900.html