数据库引擎是由SQL Server提供的核心服务,允许用户存储、检索、处理和保护数据安全。
数据库引擎服务 使用户能够构建高性能的联机事务处理应用系统和支持联机分析处理。
存储引擎 是SQL Server数据库的“灵魂”,控制着数据在磁盘上的存储方式和数据被应用程序访问的方式。
数据库引擎是一个不会与用户直接交互的核心部件,它由一些至关重要的存储和管理数据的部件组成。
存储引擎管理着基于表和列数据类型定义的数据存储。
为了便于查询,使用索引。
使用分区,可以把大表和索引拆分到多个存储结构中。
使用锁定和事务管理功能仲裁数据的多用户访问,从而确保一致的数据访问。
为了保护数据免受灾难性的丢失,我们可以对数据库进行完整备份或增量备份,以便通过备份来恢复被损坏的数据。
SQL Server 2008自带几个系统数据库,用于管理数据库引擎的各个方面:master、model、msdb、tempdb和distribution。
master数据库包含一个实例中核心对象的信息。
创建一个新的数据库时,model数据库被SQL Server用作数据库模板。
model数据库的作用是使管理员在创建数据库时自动创建那些需要加入新数据库中的对象。
msdb数据库的核心角色是存储SQL Server代理执行的任务和调度计划。
tempdb数据库是SQL Server通用“擦除”区域。 永远不要再tempdb里创建任何需要永久存储的对象,因为实例重启时,将丢失存储在tempdb中的全部数据。
当启用复制特性时,distribution数据库将在分布设备上被创建。
在数据库里创建的对象通常指的是数据库的架构(Schema)。
用于定义数据库、存储组件的元素统称为数据库结构。
从物理角度看,SQL Server数据库是操作系统上的一些文件;从逻辑角度看,则是用来对数据库中的文件进行分组。
支持SQL Server数据库最常用的文件类型是数据文件和事务日志文件。这些文件的扩展名,主要的文件.mdf、辅助的文件.ndf、事务日志文件.ldf。
数据文件和事务日志文件的几个属性:初始文件大小,最大大小,物理文件名,文件增长因子。
SQL Server使用8KB大小的称为“页”的存储段初始化每个文件的内容。每个页,有一个指定的结构供SQL Server存储和接收数据。
8个页组成一个扩展。 64KB的块,称为扩展。扩展定义SQL Server存储引擎用来读/写数据的最大粒度I/O块。
文件组(filegroup),除了拥有一个操作系统文件集的名称外,没有任何其他的东西。
可以创建三种类型的文件组:Data(数据)、Full-text(全文)、FILESTREAM(文件流)。
除非使用分区功能,否则表和索引保存的数据不能分散到文件组。
创建文件时,可以设置两个可选属性:PRIMARY和DEFAULT。 每个数据库只能有一个PRIMARY或DEFAULT文件组。指定为PRIMARY的数据库文件组包含数据库相关的所有系统对象。
全文文件组,又称全文目录。
FILESTREAM文件组是为存储FILESTREAM数据指定的文件组。
FILESTREAM和数据库镜像、数据库快照不兼容。
创建数据库的语法。
CREATE DATABASE database_name
[ ON
[PRIMARY]
[<filespec> [,...n] [,<filegroup>[,...n]] [LOG ON { <filespec> [,...n]}] ]
[COLLATE collation_name]
[WITH <external_access_option>]
]
[;]
成功实现的实例:
启动SSMS,单击工具栏上的“新建查询”,输入以下代码:
CREATE DATABASE SQL2012SBS ON PRIMARY (NAME = N'SQL2012SBS', FILENAME = N'D:\SQL2012SBS.mdf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10%), FILEGROUP FG1 DEFAULT ( NAME = N'SQL2012SBSFG1_Dat1', FILENAME = N'D:\SQL2012SBS_1.ndf', SIZE = 2MB, MAXSIZE = UNLIMITED, FILEGROWTH = 2MB), (NAME = N'SQL2012SBSFG1_Dat2', FILENAME = N'D:\SQL2012SBS_2.ndf', SIZE = 2MB, MAXSIZE = UNLIMITED, FILEGROWTH = 2MB) LOG ON (NAME = N'SQL2012SBS_Log', FILENAME = N'D:\SQL2012SBS.1df', SIZE = 2MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10MB) GO
保存,执行。刷新对象资源管理器。在“数据库”目录下出现SQL2012SBS数据库。
迁移数据库:分离(从实例删除数据库项,关闭数据库关联的所有文件并释放所有操作系统锁),附加(在实例中创建一个新数据库并打开数据库关联的所有文件)。
如果在相同服务器的不同目录间移动文件,可以使用ALTER DATABASE命令。
不能分离数据库的情况:
(1)数据库正在参与复制
(2)数据库正在参与数据库镜像
(3)针对数据库的数据库快照已经被创建
(4)数据库处于可疑模式
(5)数据库是一个系统数据库