SQL Server 包括以下系统数据库。
系统数据库 | DESCRIPTION |
---|---|
master 数据库 | 记录 SQL Server 实例的所有系统级信息。 |
msdb 数据库 | SQL Server 代理用于调度警报和作业。 |
model Database | 用作在 SQL Server 实例上创建的所有数据库的模板。 对 模型 数据库所做的修改(例如数据库大小、排序规则、恢复模型和其他数据库选项)将应用于之后创建的任何数据库。 |
资源数据库 | 是一个只读数据库,其中包含 SQL Server 附带的系统对象。 系统对象在 资源 数据库中以物理方式持久保存,但它们在逻辑上显示在每个数据库的 sys 架构中。 |
tempdb 数据库 | 用于保存临时对象或中间结果集的工作区。 |
修改系统数据
SQL Server 不支持用户直接更新系统对象(如系统表、系统存储过程和目录视图)中的信息。 但 SQL Server 提供了一组完整的管理工具,用户可以使用这些工具充分管理其系统并管理数据库中的所有用户和对象。 其中包括:
管理实用工具,如 SQL Server Management Studio。
SQL-SMO API。 这样,程序员就可以在其应用程序中包括用于管理 SQL Server 的完整功能。
Transact-SQL 脚本和存储过程。 这些可以使用系统存储过程和 Transact-SQL DDL 声明。
这些工具保护应用程序免受系统对象更改的防护。 例如,SQL Server 有时必须更改新版本 SQL Server 中的系统表,以支持在该版本中添加的新功能。 发出直接引用系统表的 SELECT 语句的应用程序通常依赖于系统表的旧格式。 站点在重写从系统表中进行选择的应用程序之前,可能无法升级到新版本的 SQL Server。 SQL Server 考虑系统存储过程、DDL 和 SQL-SMO 已发布接口,并努力维护这些接口的向后兼容性。
SQL Server 不支持在系统表上定义的触发器,因为它们可能会修改系统的作。
注释
系统数据库不能驻留在 UNC 共享目录上。
查看系统数据库数据
不应编写直接查询系统表 Transact-SQL 语句的代码,除非这是获取应用程序所需的信息的唯一方法。 相反,应用程序应使用以下方法获取目录和系统信息:
系统目录视图
SQL-SMO
Windows Management Instrumentation (WMI) 接口
应用程序中使用的数据 API 的函数、方法、属性等的列出,例如 ADO、OLE DB 或 ODBC。
Transact-SQL 系统存储过程和内置函数。