天天看点

SQL Server基础

一、四大系统数据库

  SQL Server有四大默认数据库:Master、Model、Tempdb、Msdb。

Master

  Master是SQL Server的主数据库,存放SQL Server所有元数据信息和一些基础信息。

Model

  Model是SQL Server的模型数据库,是用来创建新数据库的模板数据库,可以存放任何存储过程、视图、用户等内容。创建新数据库时,新数据库会存放模型数据库的所有对象。

Tempdb

  Tempdb用来存放临时对象,该数据库在实例重启后会重建。相关对象是根据Model数据库定义的对象创建的。该数据库会存放临时表、变量以及所有数据库的对象类型。

Msdb

  Msdb是SQL Server用来保存备份、SQL Agent信息、DTS程序包和SQL Server任务等信息,以及复制信息等。

二、三大物理文件

  SQL Server有三大物理文件:主数据文件、辅助数据文件、事务日志文件。

主数据文件

  默认扩展名为.mdf,只负责存储数据目录。

辅助数据文件

  默认扩展名为.ndf,一个数据库可以有多个辅助数据文件;所有的数据和对象存储都放在辅助数据文件中。

事务日志文件

  默认扩展名.ldf,记录操作但不记录操作的数据。

三、五类备份

完全备份

  完全备份可对整个数据库进行备份。 这包括对部分事务日志进行备份,以便在还原完整数据库备份之后,能够恢复完整数据库备份。 完全备份表示备份完成时的数据库。

文件备份

  可以分别备份和还原 SQL Server 数据库中的文件。 此外,可以指定整个文件组,而不是逐个指定每个构成文件。 请注意,如果文件组中的任何文件脱机,则整个文件组均将脱机并且无法备份。只读文件组的文件备份可以与部分备份一起使用。 部分备份包括所有读/写文件组以及可选的一个或多个只读文件组。

部分备份

  所有 SQL Server 恢复模式都支持部分备份, 但是,部分备份用于简单恢复模式中,旨在提高对非常大的数据库(包含一个或多个只读文件组)进行备份的灵活性。部分备份在希望不包括只读文件组时非常有用。 “部分备份” 与完整数据库备份类似,但部分备份不包含所有文件组。 而对于读写数据库,部分备份包含主文件组、每个读写文件组以及(可选)一个或多个只读文件中的数据。 只读数据库的部分备份仅包含主文件组。

差异备份

  差异备份基于最新的、以前的完整数据备份。 差异备份仅捕获自该次完整备份后发生更改的数据。 差异备份所基于的完整备份称为差异的“基准” 。 完整备份(仅复制备份除外)可以用作一系列差异备份的基准,包括数据库备份、部分备份和文件备份。 文件差异备份的基准备份可以包含在完整备份、文件备份或部分备份中。

日志备份

  日志备份分为事务日志备份和结尾日志备份;在创建任何日志备份之前,您必须至少创建一个完整备份。 然后,可以随时备份事务日志。建议经常执行日志备份,这样既可尽量减少丢失工作的风险,也可以截断事务日志。“结尾日志备份” 捕获尚未备份的任何日志记录(“结尾日志” ),以防丢失所做的工作并确保日志链完好无损。 在将 SQL Server 数据库恢复到其最近一个时间点之前,必须先备份数据库的事务日志。 结尾日志备份将是数据库还原计划中相关的最后一个备份。

四、三种恢复模式

SQL Server有三种恢复模式:简单恢复,完全恢复,大容量日志记录恢复。

恢复模式 说明 工作丢失的风险 能否恢复到指定时间点
简单 无日志备份。 自动回收日志空间以减少空间需求,实际上不再需要管理事务日志空间。 简单恢复模式不支持要求事务日志备份的操作。 在简单恢复模式中不能使用以下功能: -日志传送 -AlwaysOn 或数据库镜像 -没有数据丢失的介质恢复 -时点还原 最新备份之后的更改不受保护。 在发生灾难时,这些更改必须重做。 只能恢复到备份的结尾。
完整 需要日志备份。 数据文件丢失或损坏不会导致丢失工作。 可以恢复到任意时点(例如应用程序或用户错误之前)。 正常情况下没有。 如果日志尾部损坏,则必须重做自最新日志备份之后所做的更改。 如果备份在接近特定的时点完成,则可以恢复到该时点。
大容量日志 需要日志备份。 是完整恢复模式的附加模式,允许执行高性能的大容量复制操作。 通过使用最小方式记录大多数大容量操作,减少日志空间使用量。 如果在最新日志备份后发生日志损坏或执行大容量日志记录操作,则必须重做自该上次备份之后所做的更改。 否则不丢失任何工作。 可以恢复到任何备份的结尾。 不支持时点恢复。

五、三种触发器

DML

  DML 触发器为特殊类型的存储过程,可在发生数据操作语言 (DML) 事件时自动生效,以便影响触发器中定义的表或视图。 DML 事件包括 INSERT、UPDATE 或 DELETE 语句。 DML 触发器可用于强制业务规则和数据完整性、查询其他表并包括复杂的 Transact-SQL 语句。 将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。 如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。

DDL

  DDL 触发器将激发,以响应各种数据定义语言 (DDL) 事件。 这些事件主要与以关键字 CREATE、ALTER、DROP、GRANT、DENY、REVOKE 或 UPDATE STATISTICS 开头的 Transact-SQL 语句对应。 执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。

如果要执行以下操作,请使用 DDL 触发器:

  • 防止对数据库架构进行某些更改。
  • 希望数据库中发生某种情况以响应数据库架构的更改。
  • 记录数据库架构的更改或事件。

登陆触发器

  登录触发器将为响应 LOGON 事件而激发存储过程。 与 SQL Server实例建立用户会话时将引发此事件。 登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。 因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。 如果身份验证失败,将不激发登录触发器。

六、两种存储结构

  SQL Server 中数据存储的基本单位是页。 为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。 磁盘 I/O 操作在页级执行。 也就是说,SQL Server 读取或写入所有数据页。

  区是八个物理上连续的页的集合,SQL Server有两种区:统一区间和混合区间。