欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQLSERVER系统数据库概念

程序员文章站 2022-07-07 22:33:44
系统数据库 数据库管理员(DBA)的一项基本的技能是对SQL数据库引擎的系统数据库的深刻理解。数据库开发人员了解SQLSERVER自带的系统数据库也是十分有用的。下面就列出了其中...

系统数据库

数据库管理员(DBA)的一项基本的技能是对SQL数据库引擎的系统数据库的深刻理解。数据库开发人员了解SQLSERVER自带的系统数据库也是十分有用的。下面就列出了其中的一些系统数据库。(注:如果你决定研究一下这些系统数据库,那么你需要有一个开发数据库。)

Master

Master数据库保存有放在SQLSERVER实体上的所有数据库,它还是将引擎固定起来的粘合剂。如果不使用主数据库,SQLSERVER就不能启动,所以你必须要小心地管理好这个数据库。对这个数据库进行常规备份是十分必要的。建议在数据库发生变更的时候备份master数据库。

  这个数据库包括了诸如系统登录、配置设置、已连接的SERVER等信息,以及用于该实体的其他系统和用户数据库的一般信息。主数据库还存有扩展存储过程,它能够访问外部进程,从而让你能够与磁盘子系统和系统API调用等特性交互。这些过程一般都用像C++这样的现代编程语言。

  如果不幸碰到系统崩溃而必须恢复主数据库的情况,你可以参看MCSE/MCDBA StevenWarren在TechRepublic上发表的文章。这篇文章讲得十分透彻,它解释了恢复这一重要数据库所需要的一些特殊步骤。

Model

Model是一个用来在实体上创建新用户数据库的模版数据库。你可以把任何存储过程、视图、用户等放在模型数据库里,这样在创建新数据库的时候,新数据库就会包含你放在模型数据库里的所有对象了。因此新建的数据库最小应该有model数据库那么大。我们在创建数据库的时候会指定数据库的大小,通常会大于model数据库的大小,这是因为里面填充了空的page。

Tempdb

  正如其名字所提示的,tempdb存有临时对象,例如全局和本地临时表格和存储过程。 这个数据库在SQLSERVER每次重启的时候都会被重新创建,而其中包含的对象是依据模型数据库里定义的对象被创建的。除了这些对象,tempdb还存有其他对象,例如表格变量、来自表格值函数的结果集,以及临时表格变量。由于tempdb会保留SQLSERVER实体上所有数据库的这些对象类型,所以对数据库进行优化配置是非常重要的。

  在SQL Server 2005里,tempdb数据库还有一项额外的任务;它还被用作一些特性的版本库,例如新的快照隔离层和在线索引操作等。关于新的隔离层的简要说明,请参考我关于SQLServer 2005高级特性的文章。

Distribution

  当你的SQLSERVER实体被配置为复制分发SERVER时,这个数据库就会被添加到你的系统里。在默认情况下,数据库的名字就是distribution,但是你可以更改它的名字。这个数据库用来保存历史和快照、合并和事务复制等的元数据。

Msdb

Msdb数据库用来保存于数据库备份、SQL Agent信息、DTS程序包、SQLSERVER任务等信息,以及诸如日志转移这样的复制信息。

sql server系统表详细说明

下列这些系统表都是存放在master数据库下的Views中,而不是在Tables中。

系统表

数据库

功能

sysaltfiles    

主数据库

保存数据库的文件

syscharsets    

主数据库

字符集与排序顺序

sysconfigures     

主数据库

配置选项

syscurconfigs

主数据库

当前配置选项

sysdatabases

主数据库

服务器中的数据库

syslanguages

主数据库

语言

syslogins

主数据库

登陆帐号信息

sysoledbusers

主数据库

链接服务器登陆信息

sysprocesses

主数据库

进程

sysremotelogins

主数据库

远程登录帐号

syscolumns

每个数据库

sysconstrains

每个数据库

限制

sysfilegroups

每个数据库

文件组

sysfiles

每个数据库

文件

sysforeignkeys

每个数据库

外部关键字

sysindexs

每个数据库

索引

sysmenbers

每个数据库

角色成员

sysobjects

每个数据库

所有数据库对象

syspermissions

每个数据库

权限

systypes

每个数据库

用户定义数据类型

sysusers

每个数据库

用户

sysaltfiles

在特殊情况下,包含与数据库中的文件相对应的行。该表存储在 master 数据库中。

列名

数据类型

描述

fileid

smallint

每个数据库的唯一文件标识号。

groupid

smallint

文件组标识号。

size

int

文件大小(以 8 KB 页为单位)。

maxsize

int

最大文件大小(以 8 KB 页为单位)。0 值表示不增长,–1 值表示文件应一直增长到磁盘已满。

growth

int

数据库的增长大小。0 值表示不增长。根据状态的值,可以是页数或文件大小的百分比。如果 status 为 0x100000,则growth 是文件大小的百分比;否则是页数。

status

int

仅限内部使用。

perf

int

保留。

dbid

smallint

该文件所属数据库的数据库标识号。

name

nchar(128)

文件的逻辑名称。

filename

nchar(260)

物理设备的名称,包括文件的完整路径。

syscharsets

每个字符集在表中各占一行,表中还包含定义供 Microsoft? SQLServer? 使用的排序次序。排序次序中的一个在 sysconfigures 中标记为默认排序次序,该次序是实际使用的唯一次序。

列名

数据类型

描述

type

smallint

该行表示的实体类型。1001 是字符集;2001 是排序次序。

id

tinyint

字符集或排序次序的唯一 ID。注意排序次序和字符集不能共享相同的 ID 号。保留从 1 到 240 的 ID 范围供 SQL Server 使用。

csid

tinyint

如果该行表示字符集,则不使用该字段。如果该行表示排序次序,则该字段是在其上生成排序次序的字符集 ID。假设具有该 ID 的字符集行存在于该表中。

status

smallint

内部系统状态信息位。

name

sysname

字符集或排序次序的唯一名称。该字段必须只包含字母 A-Z 或 a-z、数字 0 – 9 和下划线 (_)。必须以字母开头。

description

nvarchar(255)

字符集或排序次序功能的可选描述。

binarydefinition

varbinary(255)

仅限内部使用。

definition

image

字符集或排序次序的内部定义。该字段中的数据结构取决于类型。

sysconfigures

用户设置的每个配置选项在表中各占一行。 sysconfigures 包含最近启动 Microsoft? SQL Server? 前定义的配置选项,还包含最近启动后设置的所有动态配置选项。该表只位于 master 数据库中。

列名

数据类型

描述

value

int

变量的用户可修改值(仅在已执行 RECONFIGURE 后由 SQL Server 使用)。

config

smallint

配置变量号。

comment

nvarchar(255)

对配置选项的解释。

status

smallint

表示选项状态的位图。可能的值包括:

0 = 静态(该设置在服务器重新启动时生效)。
1 = 动态(该变量在 RECONFIGURE 语句执行时生效)。
2 = 高级(仅当设置了显示高级选项时才显示该变量)。
3 = 动态和高级。

syscurconfigs

每个当前配置选项各占一项。另外,该表还包含四个描述配置结构的项。 syscurconfigs 在由用户查询时动态生成。有关更多信息,请参见sysconfigures。

列名

数据类型

描述

value

int

用户可修改的变量值(仅在已执行 RECONFIGURE 的情况下由 Microsoft? SQL Server? 使用)。

config

smallint

配置变量号。

comment

nvarchar(255)

对配置选项的解释。

status

smallint

表示选项状态的位图。可能的值包括:

0 = 静态(该设置在服务器重新启动时生效)。
1 = 动态(该变量在 RECONFIGURE 语句执行时生效)。
2 = 高级(仅当设置了显示高级选项时才显示该变量)。
3 = 动态和高级。

sysdatabases

Microsoft?SQL Server? 上的每个数据库在表中占一行。最初安装 SQLServer 时, sysdatabases 包含 master model msdb mssqlwebtempdb 数据库的项。该表只存储在 master 数据库中。

列名

数据类型

描述

name

sysname

数据库的名称。

dbid

smallint

数据库 ID。

sid

varbinary(85)

数据库创建者的系统 ID。

mode

smallint

用于创建数据库时在内部锁定该数据库。

status

int

状态位,其中某些状态位可由用户使用sp_dboption read only dbo use only single user 等)进行设置:

1 = autoclose ;使用 sp_dboption 设置。
4 = select into/bulkcopy ;使用sp_dboption 设置。
8 = trunc. log on chkpt ;使用sp_dboption 设置。
16 = torn page detection ,使用sp_dboption 设置。
32 = loading
64 = pre recovery
128 = recovering
256 = not recovered
512 = offline ;使用 sp_dboption 设置。
1024 = read only ;使用 sp_dboption 设置。
2048 = dbo use only ;使用
sp_dboption 设置。
4096 = single user ;使用 sp_dboption 设置。
32768 = emergency mode
4194304 = autoshrink
1073741824 = cleanly shutdown

可以同时打开多个位。

status2

int

16384 = ANSI null default ;使用sp_dboption 设置。
65536 = concat null yields null ,使用sp_dboption 设置。
131072 = recursive triggers ,使用sp_dboption 设置。
1048576 = default to local cursor ,使用sp_dboption 设置。
8388608 = quoted identifier ,使用
sp_dboption 设置。
33554432 = cursor close on commit ,使用 sp_dboption 设置。
67108864 = ANSI nulls ,使用sp_dboption 设置。
268435456 = ANSI warnings ,使用sp_dboption 设置。
536870912 = full text enabled ,使用
sp_fulltext_database 设置。

crdate

datetime

创建日期。

reserved

datetime

留作以后使用。

category

int

包含用于复制的信息位图:

1 = 已发布。
2 = 已订阅。
4 = 合并已发布。
8 = 合并已订阅。

cmptlevel

tinyint

数据库的兼容级别。有关更多信息,请参见sp_dbcmptlevel。

filename

nvarchar(260)

数据库主文件的操作系统路径和名称。

version

smallint

创建数据库时使用的 SQL Server 代码内部版本号。仅供 SQL Server 工具在内部用于升级处理。

syslanguages

出现在 Microsoft? SQL Server? 中的每种语言在表中各占一行。虽然美国英语不在 syslanguages 内,但该表始终可由 SQL Server 使用。该表只存储在 master 数据库中。

列名

数据类型

描述

langid

smallint

唯一语言 ID。

dateformat

nchar(3)

日期顺序(如 DMY)。

datefirst

tinyint

一周的第一天:1 表示星期一,2 表示星期二,依此类推,直到 7 表示星期日。

upgrade

int

留作系统使用。

name

sysname

正式语言名称(例如,fran?ais)。

alias

sysname

备用语言名称(如 French)。

months

nvarchar(372)

按从一月到十二月的顺序排列的用逗号分隔的月份全称列表,每个名称最多包含 20 个字符。

shortmonths

varchar(132)

按从一月到十二月的顺序排列的用逗号分隔的缩写月份名称列表,每个名称最多包含 9 个字符。

days

nvarchar(217)

按从一月到十二月的顺序排列的用逗号分隔的天名称列表,每个名称最多包含 30 个字符。

lcid

int

此种语言的 Microsoft Windows NT? 区域设置 ID。

mslangid

smallint

SQL Server 消息组 ID。

安装了 SQLServer 提供的三十三种语言。下面是语言列表。

用英语表示的名称

NT LCID

SQL Server 消息组 ID

English

1033

1033

German

1031

1031

French

1036

1036

Japanese

1041

1041

Danish

1030

1030

Spanish

3082

3082

Italian

1040

1040

Dutch

1043

1043

Norwegian

2068

2068

Portuguese

2070

2070

Finnish

1035

1035

Swedish

1053

1053

Czech

1029

1029

Hungarian

1038

1038

Polish

1045

1045

Romanian

1048

1048

Croatian

1050

1050

Slovak

1051

1051

Slovene

1060

1060

Greek

1032

1032

Bulgarian

1026

1026

Russian

1049

1049

Turkish

1055

1055

British English

2057

1033

Estonian

1061

1061

Latvian

1062

1062

Lithuanian

1063

1063

Brazilian

1046

1046

Traditional Chinese

1028

1028

Korean

1042

1042

Simplified Chinese

2052

2052

Arabic

1025

1025

Thai

1054

1054

syslogins

每个登录帐户在表中占一行。

列名

数据类型

描述

sid

varbinary(85)

安全标识符。

status

smallint

仅限内部使用。

createdate

datetime

添加登录的日期。

updatedate

datetime

更新登录的日期。

accdate

datetime

仅限内部使用。

totcpu

int

仅限内部使用。

totio

int

仅限内部使用。

spacelimit

int

仅限内部使用。

timelimit

int

仅限内部使用。

resultlimit

int

仅限内部使用。

name

varchar(30)

用户的登录 ID。

dbname

nvarchar(128)

建立连接时,用户的默认数据库名。

password

nvarchar(128)

用户的加密密码(可以是 NULL)。

language

nvarchar(128)

用户的默认语言。

denylogin

int

如果登录是 Microsoft? Windows NT? 用户或组且已被拒绝访问,则为 1。

hasaccess

int

如果已授权登录访问服务器,则为 1。

isntname

int

如果登录是 Windows NT 用户或组,则为 1;如果登录是 Microsoft SQL Server? 登录,则为 0。

isntgroup

int

如果登录是 Windows NT 组,则为 1。

isntuser

int

如果登录是 Windows NT 用户,则为 1。

sysadmin

int

如果登录是 sysadmin 服务器角色成员,则为 1。

securityadmin

int

如果登录是 securityadmin 服务器角色成员,则为 1。

serveradmin

int

如果登录是 serveradmin 固定服务器角色成员,则为 1。

setupadmin

int

如果登录是 setupadmin 固定服务器角色成员,则为 1。

processadmin

int

如果登录是 processadmin 固定服务器角色成员,则为 1。

diskadmin

int

如果登录是 diskadmin 固定服务器角色成员,则为 1。

dbcreator

int

如果登录是 dbcreator 固定服务器角色成员,则为 1。

loginname

nvarchar(128)

登录的实际名称,该名称可能不同于 SQL Server 所使用的登录名。

sysoledbusers

每个指定的链接服务器的用户和密码映射在表中占一行。该表存储在 master 数据库中。

列名

数据类型

描述

rmtsrvid

smallint

服务器的 SID(安全标识号)。

rmtloginame

nvarchar(128)

loginsid 映射到的链接 rmtservid 的远程登录名。

rmtpassword

nvarchar(128)

链接 rmtsrvid 内的指定远程登录的加密密码。

loginsid

varbinary(85)

要映射的本地登录 SID。

status

smallint

如果该值为 1,映射应使用用户自己的凭据。

changedate

datetime

上次更改映射信息的日期。

sysprocesses

sysprocesses 表中保存关于运行在 Microsoft? SQL Server? 上的进程的信息。这些进程可以是客户端进程或系统进程。 sysprocesses 只存储在master 数据库中。

列名

数据类型

描述

Spid

smallint

SQL Server 进程 ID。

Kpid

smallint

Microsoft Windows NT 4.0? 线程 ID。

blocked

smallint

分块进程的进程 ID ( spid )。

waittype

binary(2)

保留。

waittime

int

当前等待时间(以毫秒为单位)。当进程不处于等待时,为 0。

lastwaittype

nchar(32)

表示上次或当前等待类型名称的字符串。

waitresource

nchar(32)

锁资源的文本化表示法。

Dbid

smallint

当前正由进程使用的数据库 ID。

Uid

smallint

执行命令的用户 ID。

Cpu

int

进程的累计 CPU 时间。无论 SET STATISTICS TIME ON 选项是 ON 还是 OFF,都为所有进程更新该条目。

physical_io

int

进程的累计磁盘读取和写入。

memusage

int

当前分配给该进程的过程高速缓存中的页数。一个负数,表示进程正在释放由另一个进程分配的内存。

login_time

datetime

客户端进程登录到服务器的时间。对于系统进程,是存储 SQL Server 启动发生的时间。

last_batch

datetime

客户端进程上次执行远程存储过程调用或 EXECUTE 语句的时间。对于系统进程,是存储 SQL Server 启动发生的时间。

Ecid

smallint

用于唯一标识代表单个进程进行操作的子线程的执行上下文 ID。

open_tran

smallint

进程的打开事务数。

status

nchar(30)

进程 ID 状态(如运行、休眠等)。

Sid

binary(85)

用户的全局唯一标识符 (GUID)。

hostname

nchar(128)

工作站的名称。

program_name

nchar(128)

应用程序的名称。

hostprocess

nchar(8)

工作站进程 ID 号。

Cmd

nchar(16)

当前正在执行的命令。

nt_domain

nchar(128)

客户端的 Windows NT 4.0 域(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 域。

nt_username

nchar(128)

进程的 Windows NT 4.0用户名(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 用户名。

net_address

nchar(12)

指派给每个用户工作站上的网络接口卡唯一标识符。当用户登录时,该标识符插入net_address 列。

net_library

nchar(12)

用于存储客户端网络库的列。每个客户端进程都在网络连接上进入。网络连接有一个与这些进程关联的网络库,该网络库使得这些进程可以建立连接。有关更多信息,请参见客户端和服务器 Net-Library。

loginame

nchar(128)

登录名。

sysremotelogins

每个允许调用Microsoft? SQL Server? 上的远程存储过程的远程用户占一行。

列名

数据类型

描述

remoteserverid

smallint

远程服务器标识。

remoteusername

nvarchar(128)

远程服务器上的用户登录名。

status

smallint

选项的位图。

sid

varbinary(85)

Microsoft Windows NT? 用户安全 ID。

changedate

datetime

添加远程用户的日期和时间。

syscolumns

每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表位于每个数据库中。

列名

数据类型

描述

name

sysname

列名或过程参数的名称。

id

int

该列所属的表对象 ID,或与该参数关联的存储过程 ID。

xtype

tinyint

systypes 中的物理存储类型。

typestat

tinyint

仅限内部使用。

xusertype

smallint

扩展的用户定义数据类型 ID。

length

smallint

systypes 中的最大物理存储长度。

xprec

tinyint

仅限内部使用。

xscale

tinyint

仅限内部使用。

colid

smallint

列或参数 ID。

xoffset

smallint

仅限内部使用。

bitpos

tinyint

仅限内部使用。

reserved

tinyint

仅限内部使用。

colstat

smallint

仅限内部使用。

cdefault

int

该列的默认值 ID。

domain

int

该列的规则或 CHECK 约束 ID。

number

smallint

过程分组时(0 表示非过程项)的子过程号。

colorder

smallint

仅限内部使用。

autoval

varbinary(255)

仅限内部使用。

offset

smallint

该列所在行的偏移量;如果为负,表示可变长度行。

status

tinyint

用于描述列或参数属性的位图:

0x08 = 列允许空值。
0x10 = 当添加 varcharvarbinary 列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留varbinary 列的尾随零。
0x40 = 参数为 OUTPUT 参数。
0x80 = 列为标识列。

type

tinyint

systypes 中的物理存储类型。

usertype

smallint

systypes 中的用户定义数据类型 ID。

printfmt

varchar(255)

仅限内部使用。

prec

smallint

该列的精度级别。

scale

int

该列的小数位数。

iscomputed

int

表示是否已计算该列的标志:

0 = 未计算。
1 = 已计算。

isoutparam

int

表示该过程参数是否是输出参数:

1 = 真。
0 = 假。

isnullable

int

表示该列是否允许空值:

1 = 真。
0 = 假。

sysconstraints

包含约束映射,映射到拥有该约束的对象。该系统目录存储在每个数据库中。

列名

数据类型

描述

constid

int

约束号。

id

int

拥有该约束的表 ID。

colid

smallint

在其上定义约束的列 ID,如果是表约束则为 0。

spare1

tinyint

保留。

status

int

位图指示状态。可能的值包括:

1 = PRIMARY KEY 约束。
2 = UNIQUE KEY 约束。
3 = FOREIGN KEY 约束。
4 = CHECK 约束。
5 = DEFAULT 约束。
16 = 列级约束。
32 = 表级约束。

actions

int

保留。

error

int

保留。

sysfilegroups

数据库中的每个文件组在表中占一行。该表存储在每个数据库中。在该表中至少有一项用于主文件组。

列名

数据类型

描述

groupid

smallint

每个数据库的唯一组标识号。

allocpolicy

smallint

保留。

status

int

0x8 = READ ONLY
0x10 = DEFAULT

groupname

sysname

文件组的名称。

sysfiles

数据库中的每个文件在表中占一行。该系统表是虚拟表,不能直接更新或修改。

列名

数据类型

描述

fileid

smallint

每个数据库的唯一文件标识号。

groupid

smallint

文件组标识号。

size

int

文件大小(以 8 KB 页为单位)。

maxsize

int

最大文件大小(以 8 KB 页为单位)。0 值表示不增长,–1 值表示文件应一直增长到磁盘已满。

growth

int

数据库的增长大小。0 值表示不增长。根据状态的值,可以是页数或文件大小的百分比。如果 status 包含 0x100000,则 growth 是文件大小的百分比;否则,它是页数。

status

int

growth 值(以兆字节 (MB) 或千字节 (KB) 为单位)的状态位。

0x1 = 默认设备。
0x2 = 磁盘文件。
0x40 = 日志设备。
0x80 = 自上次备份后已写入文件。
0x4000 = 由 CREATE DATABASE 语句
隐性创建的设备。
0x8000 = 在数据库创建过程中创建的设备。
0x100000 = 按百分比而不是按页数增长。

perf

int

保留。

name

nchar(128)

文件的逻辑名称。

filename

nchar(260)

物理设备的名称,包括文件的完整路径。

sysforeignkeys

包含关于表定义中的 FOREIGNKEY 约束的信息。该表存储在每个数据库中。

列名

数据类型

描述

constid

int

FOREIGN KEY 约束的 ID。

fkeyid

int

具有 FOREIGN KEY 约束的表对象 ID。

rkeyid

int

在 FOREIGN KEY 约束中引用的表对象 ID。

fkey

smallint

正在引用的列 ID。

rkey

smallint

已引用的列 ID。

keyno

smallint

该列在引用列列表中的位置。

sysindexes

数据库中的每个索引和表在表中各占一行。该表存储在每个数据库中。

列名

数据类型

描述

id

int

表 ID(如果 indid = 0 或 255)。否则为索引所属表的 ID。

status

int

内部系统状态信息。

first

binary(6)

指向第一页或根页的指针。

indid

smallint

索引 ID:

1 = 聚集索引
>1 = 非聚集
255 = 具有 textimage 数据的表条目

root

binary(6)

如果 indid >= 1 和 < 255, root 是指向根页的指针。如果 indid = 0 或 indid = 255, root 是指向最后一页的指针。

minlen

smallint

最小行大小。

keycnt

smallint

键的数目。

groupid

smallint

在其上创建对象的文件组 ID。

dpages

int

如果 indid = 0 或 indid = 1, dpages 是已用数据页的计数。如果 indid = 255,其设置为 0。否则是已用索引页的计数。

reserved

(0)
打赏 SQLSERVER系统数据库概念 微信扫一扫

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

SQLSERVER系统数据库概念
验证码: SQLSERVER系统数据库概念
Copyright © 2017-2022  保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com