21. SQL -- ​创建数据库及数据库文件

  • 创建数据库及数据库文件

SQL Server 的物理存储

SQL SERVER 数据库分为:系统数据库/用户数据库

系统数据库:

Master:master 数据库记录 SQL Server 系统的所有系统级信息。主要包括实例范围的元数据、端点、链接服务器和系统配置设置以及记录了所有其他数据库的存在、数据库文件的位置以及SQL Server 的初始化信息

Model: 提供了SQL Server 实例上创建的所有数据库的模板

Msdb: 主要由 SQL Server 代理用于计划警报和作业

Tempdb: tempdb 系统数据库是一个全局资源,可供连接到 SQL Server 实例的所有用户使用,并可用于保存显式创建的临时用户对象、SQL Server 数据库引擎创建的内部对象,行版本数据等

用户数据库:由用户自己创建的数据库

DatabaseOptions

Optioncategory Purpose

Automatic:  Controlsautomatic behaviors such as statistics, database closing, and shrinking

Availability:Controls whether database is online, who canconnect to it, and whether database is read-only

Cursor:  Controlscursor behavior and scope

Recovery:Controls the recovery model for the database

SQL: Controls ANSI compliance options such as ANSInulls and recursive triggers

SQL 文件类型:

SQL Server 数据库具有三种类型的文件:

A、主数据文件(行数据文件):主数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有一个主数据文件。主数据文件的推荐文件扩展名是.mdf。

B、次要数据文件(行数据文件):除主数据文件以外的所有其他数据文件都是次要数据文件。某些数据库可能不含有任何次要数据文件,而有些数据库则含有多个次要数据文件。次要数据文件的推荐文件扩展名是.ndf。

C、日志文件(记录数据变化的过程):日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,当然也可以有多个。日志文件的推荐文件扩展名是.ldf。

SQL Server 不强制使用 .mdf、.ndf和 .ldf 文件扩展名,但使用它们有助于标识文件的各种类型和用途。

SELECT * FROM SYS.database_files 查询数据库文件结构

SQL 文件名:

SQL Server 文件有两个名称:

A、logical_file_name 是在所有 Transact-SQL 语句中引用物理文件时所使用的名称。逻辑文件名必须符合 SQL Server 标识符规则,而且在数据库中的逻辑文件名中必须是唯一的。

B、os_file_name 是包括目录路径的物理文件名。它必须符合操作系统文件命名规则。

文件大小

SQL Server 文件可以从它们最初指定的大小开始自动增长。在定义文件时,您可以指定一个特定的增量。每次填充文件时,其大小均按此增量来增长。如果文件组中有多个文件,则它们在所有文件被填满之前不会自动增长。填满后,这些文件会循环增长。每个文件还可以指定一个最大大小。如果没有指定最大大小,文件可以一直增长到用完磁盘上的所有可用空间

文件数据页:

SQL Server 中数据存储的基本单位是页。为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 读取或写入所有数据页。SQL Server 数据文件中的页按顺序编号,文件的首页以 0 开始。数据库中的每个文件都有一个唯一的文件 ID 号。若要唯一标识数据库中的页,需要同时使用文件 ID 和页码。每个文件的第一页是一个包含有关文件属性信息的文件的页首页。在文件开始处的其他几页也包含系统信息(例如分配映射)。有一个存储在主数据文件和第一个日志文件中的系统页是包含数据库属性信息的数据库引导页。SQL 中,每页大小为8K,1M 共128 页. 每页的开头是 96 字节的标头,用于存储有

关页的系统信息。此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID。

数据库文件中所使用的页类型:

页类型 内容

Data 当 text in row 设置为 ON 时,包含除 textntextimage

nvarchar(max)varchar(max)varbinary(max) xml 数据之外的所

有数据的数据行。

Index 索引条目。

Text/Image 大型对象数据类型:

textntextimagenvarchar(max)varchar(max)varbinary(max)

xml 数据。

数据行超过 8 KB 时为可变长度数据类型列:

varcharnvarcharvarbinary sql_variant GlobalAllocation Map、

Shared GlobalAllocation  Map 有关区是否分配的信息。

Page Free Space 有关页分配和页的可用空间的信息。

Index Allocation Map 有关每个分配单元中表或索引所使用的区的信息。

Bulk Changed Map 有关每个分配单元中自最后一条 BACKUP LOG 语句之后的大容量操作所修改的区的信息。

Differential ChangedMap 有关每个分配单元中自最后一条BACKUP DATABASE 语句之后更改的区的信息。

查看SQL 中数据页结构:

DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])

具体参数描述如下:

dbid 包含页面的数据库ID

dbname 包含页面的数据库的名称

filenum 包含页面的文件编号

pagenum 文件内的页面

printopt 可选的输出选项;选用其中一个值:

0:默认值,输出缓冲区的标题和页面标题

1:输出缓冲区的标题、页面标题(分别输出每一行),以及行偏移量表

2:输出缓冲区的标题、页面标题(整体输出页面),以及行偏移量表

3:输出缓冲区的标题、页面标题(分别输出每一行),以及行偏移量表;每一行后跟分别列出的它的列值

执行代码:

--开启跟踪标记

dbcc traceon(3604)

go

--从sysindexes 中取出first 的值

declare @firstbinary(6)

select @first = firstfrom sysindexes where id = object_id(‘test‘) and indid in(0,1)

declare @PageNum int

select @PageNum =convert(int, substring(@first,4,1) + substring(@first,3,1) +

substring(@first,2,1)+ substring(@first,1,1) )

declare @FileNum int

select @FileNum =convert(int, substring(@first,6,1) + substring(@first,5,1))

select @FileNum,@PageNum

--执行DBCC Page

declare @sqlvarchar(1000)

select @sql = ‘dbccpage (‘‘‘ + db_name() + ‘‘‘, ‘ + convert(varchar(10),@FileNum) + ‘, ‘ +

convert(varchar(10),@PageNum)+ ‘, 1)‘

select @sql

dbcc traceon(3604)

exec (@sql)

DBCC Page 的输出主要分为5 个部分: Page、BUFFER、Page Hearder、Data、OFFSET Table(行的偏移量数组)。

Page: 指出该表的文件编号及页码。

Buffer: 指出关于给定页面的缓冲区的信息。

Page Header:指出页面中所有标题字段的数据。

Data: 指出每一行的信息。对于每一行,DBCC Page 指出行在槽中的位置,以及该行在页面中的偏移量。页面数据被分成3 部分,左列指出的是所显示的数据在行中的字节位置。接着4 列包含页面存储的实际数据,以16 进制的形式显示。右列包含数据的字符表示(只有字符数据是可读的)。

Offset Table:指出页面末尾的行偏移量数组的内容。注意这里并不是行物理存储的顺序,而是以槽的编号的顺序来显示的,不过这里可以通过槽的编号看出它的物理存储顺序,比如槽的编号最小的为物理存储的第一行,依此类推。

 

区是管理空间的基本单位。一个区是八个物理上连续的页(即 64 KB)。这意味着 SQLServer数据库中每 MB 有 16 个区。为了使空间分配更有效,SQLServer 不会将所有区分配给包含少量数据的表。

SQLServer 有两种类型的区:

统一区,由单个对象所有。区中的所有 8 页只能由所属对象使用。

混合区,最多可由八个对象共享。区中八页的每页可由不同的对象所有。通常从混合区向新表或索引分配页。当表或索引增长到 8 页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成8 页,则对该索引的所有分配都使用统一区进行。

 

文件组

每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。

文件组 说明

主要 包含主要文件的文件组。所有系统表都被分配到主要文件组中。

用户定义 用户首次创建数据库或以后修改数据库时明确创建的任何文件组。

文件组概念:

它只是个容器,任何一个文件必然属于一个文件组。用来管理存储空间,用来组织空间,用于分区表。获得对数据存储空间的分配,还可以获得可管理性。多个文件和多个文件组可提高性能,CPU 时间,I/O,提高一点可管理性,每增加一个文件就增加一线程,去抢占CPU。创建时,先创建文件组,再去创建文件。

文件组的好处:

备份还原时你可以针对文件组来还原和备份,而不需要把整个db 的数

据文件拷贝过来进行;而且在使用时,部分还原的部分就可以联机,而其他文件组可以继续还原。我们不能指定将TABLE 存储于哪个文件,只能只定文件组,再把管理的权限交于文件组,由文件组去分配存储在哪些文件中。

Primary 文件组:

任何一个文件都必然属于一个文件组,当数据库在创建时,默认会创建primary 文件组。用户自己创建的数据库对象不建议存在primary 文件组,建议存在自己建的文件组中,以提高数据库的可用性

Schema(架构);

架构是指包含表、视图、过程等的容器。它位于数据库内部,而数据库位于服务器内部。这些实体就像嵌套框放置在一起。服务器是最外面的框,而架构是最里面的框。

完全限定的对象名称包含四部分:server.database.schema.object。

默认架构,DBO 是内置的架构

架构包含的所有安全对象:

必须位于架构内部的安全对象  类

类型 TYPE

XML 架构集合 XML SCHEMA COLLECTION

表 OBJECT

视图 OBJECT

过程 OBJECT

函数 OBJECT

聚合函数 OBJECT

约束 OBJECT

同义词 OBJECT

队列 OBJECT

统计信息 OBJECT

架构的优点 :

通过将架构的所有权分配给一个角色,多个用户都能够拥有一个架构,如果删除其中一个用户,对象的所有权不需要改变。简化删除用户的操作。多个用户可以共享一个架构,在用户之间提供统一的对象命名解决方案。完全限定名称包含架构,为:服务器.数据库.架构.对象。

架构概念的引入就是为了解决数据库对象太多不好管理的缺点。到现在为止,我们的数据库管理就变成了用户-架构-数据库对象的模式了

安全对象与架构关系:

  • 快照

数据库快照是数据库(源数据库)的只读、静态视图。多个快照可以位于一个源数据库中,并且可以作为数据库始终驻留在同一服务器实例上。创建快照时,每个数据库快照在事务上与源数据库一致。在被数据库所有者显式删除之前,快照始终存在。是一个源数据库在某个时间点的只读副本,它总是与相关源数据库保持事务一致性。快照可用于报表。另外,如果源数据库出现用户错误,还可将源数据库恢复到创建快照时的状态。丢失的数据仅限于创建快照后数据库更新的数据

快照的工作方式 :

数据库快照与源数据库相关。数据库快照必须与数据库在同一服务器实例上。此外,如果数据库因某种原因而不可用,则它的所有数据库快照也将不可用。快照可用于报表。另外,如果源数据库出现用户错误,还可将源数据库恢复到创建快照时的状态。丢失的数据仅限于创建快照后数据库更新的数据。此外,在对数据库进行重大更改(例如,更改表的架构或结构)之前创建数据库快照也很有用。

数据库快照在数据页级运行。在第一次修改源数据库页之前,先将原始页从源数据库复制到快照。此过程称为―写入时复制操作‖。快照将存储原始页,保留它们在创建快照时的数据记录。对已修改页中的记录进行后续更新不会影响快照的内容。对要进行第一次修改的每一页重复此过程。这样,快照将保留自创建快照后经修改的所有数据记录的原始页。

为了存储复制的原始页,快照使用一个或多个―稀疏文件‖。最初,稀疏文件实质上是空文件,不包含用户数据并且未被分配存储用户数据的磁盘空间。随着源数据库中更新的页越来越多,文件的大小也不断增长。创建快照时,稀疏文件占用的磁盘空间很少。然而,由于数据库随着时间的推移不断更新,稀疏文件会增长为一个很大的文件下图说明了写入时复制操作。快照关系图中的浅灰色方框表示稀疏文件中尚未分配的潜在空间。收到源数据库中页的第一次更新时,数据库引擎将写入文件,操作系统向快照的稀疏文件分配空间并将原始页复制到该处。然后,数据库引擎更新源数据库中的页。

对快照的读操作:

对于用户而言,数据库快照似乎始终保持不变,因为对数据库快照的读操作始终访问原始数据页,而与页驻留的位置无关。如果未更新源数据库中的页,则对快照的读操作将从源数据库读取原始页。更新页之后,对快照的读操作仍访问原始页,该原始页现在存储在稀疏文件中。

快照与备份的区别:

BAK 文件不能直接执行语句,快照DB 能直接提取数据,一时SOURCE DB 中需要还原数据的时候,就可以从快照中恢复。

创建快照:

根据源数据库的当前大小,确保有足够的磁盘空间存放数据库快照。数据库快照的最大大小为创建快照时源数据库的大小。

使用 AS SNAPSHOT OF 子句对文件执行 CREATE DATABASE 语句。创建快照需

要指定源数据库的每个数据库文件的逻辑名称。

创建数据库快照时,CREATE DATABASE 语句中不允许有日志文件、脱机文件、

还原文件和不起作用的文件。

语句:

CREATE DATABASE AdventureWorks_Snapshot1200 ON

( NAME = N‘AdventureWorks_Data‘, FILENAME =

N‘C:\Program Files\Microsoft SQL

Server\MSSQL.1\MSSQL\Data\AW_1200.ss‘)

AS SNAPSHOT OF AdventureWorks

go

SELECT AddressID, AddressLine1, ModifiedDate

FROM AdventureWorks.Person.Address

WHERE AddressID = 1

SELECT AddressID, AddressLine1, ModifiedDate

FROM AdventureWorks_Snapshot1200.Person.Address

WHERE AddressID = 1

go

UPDATE AdventureWorks.Person.Address

SET AddressLine1 = ‘1000 Napa Ct.‘

WHERE AddressID = 1

恢复数据库快照:

RESTORE DATABASE <数据库名称> FROM DATABASE_SNAPSHOT = <数据库快

照名称>

恢复指定表或行

删除快照:

DROP DATABASE

 

  • 创建数据库:

1)、通过mangement studio

数据库实例 → 数据库 → 新建数据库 → 配置数据库名称、数据库文件逻辑名称、物理名称 → 配置文件类型、文件组、文件初始大小

2)、使用T-SQL 创建数据库:

Create dataase mydb1

  • 创建schema

1)、通过mangement studio

数据库实例 → security → schema → 新架构

  • 创建登录名

创建数据库用户名

绑定登录名、用户名、架构

  • 初始配置数据库
  • 配置SQL SERVER 2008 启用FILE STREAM:
    A、服务管理器 → SQL Server(MSSQLSERVER) → Logon → Local system account
    B、SQL SERVER 配置管理器 → SQL SERVER Service →
    SQL Server(MSSQLSERVER) → FileStream →
    启用FILESTREAM for T-SQL
    启用FILESTREAM for File I/O
    允许remote client to have stream asscess
    B、 SQL Management Studio → 属性 → 高级 → FILE STREAM → 启用完全访

    C、 重启SQL Server(MSSQLSERVER)服务
  • 配置SQL SERVER 支持远程访问:
    A、SQL SERVER 配置管理器 → SQL Native Client 10.0 config(32 位) →
    client protocols → 启用 Shared memory
    TCP/IP
    Named pipes
    B 、SQL SERVER 配置管理器 → SQL Server network config → protocols for
    MSSQLSERVER → 启用: Shared memory
    TCP/IP
    Named pipes
    C、SQL SERVER 配置管理器 → SQL Server network config → client protocols →
    学习是不断积累及重复学习的过程,当学习变成一种习惯的时候,就真正进入了学习的殿堂!
    第 55 页 共 588 页
    启用 Shared memory
    TCP/IP
    Named pipes
  • 用户配置
    若安装时是选择WINDOWS身份认证,将其更改为SQL 和WINDOWS混合模式身份认证:
    A、 实例 → 属性 → 安全性 → SQL 和WINDOWS 混合身份验证模式
    B、 实便 → Security → logins → Sa → 属性 →
  • 配置密码
    状态: 启用登录
    授权连接到Database
时间: 2024-08-12 16:46:07

21. SQL -- ​创建数据库及数据库文件的相关文章

SQL创建表、数据库、约束、文件夹语法

use mastergo ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------创建数据库存放位置(文件夹)----------------------------

在access中如何创建数据库?你认为数据库在网站开发中所扮演的角色是什么?使用数据库和使用文件,两者的优缺点是是什么?

1.启动ACCESS建空数据库,给数据库取名"数据库名".2.建一个表,如果有excel数据可直接导入或在设计视图里面建表,如段名分别为:学号.姓名.性别.出生日期.家庭住址等.给表取名"表名".3.用数据表做数据源,建立需要的查询.一个简单的数据库就建成了.我认为数据库在网站开发中扮演者重要的角色,它掌管着大量的重要数据.它是网站开发的核心,也可以说它是一个默默无闻的工作者 数据库是用来存储数据的,其中分好多类,小型的有ACCESS,中型的有SQL SERVER,

第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structured Query Language) SOL语句是和DBMS“交谈”专用的语言,不同的DBMS都认SQL语法. Sql中字符串使用单引号:通过写俩个单引号来转义一个单引号. Sql中的注释“——” 单行注释比较好 判断俩个数据是否相等使用=(单等号) 在sql语句中sql代码不区分大小写 SQL主要

SQL Server 【附】创建&quot;商品管理数据库&quot;、&quot;学生选课数据库&quot;的SQL语句

附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', filename='D:\商品管理系统\商品管理数据库_m.mdf', size=6mb,filegrowth=1mb,maxsize=unlimited) log on(name='商品管理数据库_l', filename='D:\商品管理系统\商品管理数据库_l.ldf', size=1,filegrowth=1

SQL学习之创建学生管理数据库

1.首先,学习创建数据库之前,如下图所示,我们先介绍一下数据库的类型: 从数据库的应用管理角度来看,SQL server数据库分为系统数据库和用户数据库 其次,那什么是系统数据库和用户数据库呢?它们分别有什么作用呢? 系统数据库:(1)定义:它是SQL server数据库管理系统自带和自动维护的,用于存放维护系统正常运行               的信息 (2)组成:master, 它是做重要的数据库,用于记录数据库管理系统中的所有系统级信息:                    若其损坏,

sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]

SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式.下面将主要讨论一下后者的备份与恢复.本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器) 1.正常的备份.恢复方式 正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断

SQLLite 可以通过SQL语言来访问的文件型SQL数据库

Web Storage分为两类: - sessionStorage:数据保存在session 对象中(临时) - localStorage:数据保存在本地硬件设备中(永久) sessionStorage: 保存数据的两种方法: sessionStorage.setItem('key','val'); sessionStorage.key = 'val'; 读取数据的两种方法: sessionStorage.getItem('key'); var temp = sessionStorage.key

SQL语言基础及数据库的创建

一.数据类型:1.二进制数据二进制数据以十六进制形式存储.二进制数据最多能存8000个英文字符,4000个汉字字符. 2.字符数据char:存100,不足100补足.varcha:存多少占多少. 3.日期时间数据datetime        范围为 1753.1.1-9999.12.31smalldatetime   范围为 1900.1.1-2079.6.6 4.数值型数据decimal[(p[,s])]   p为总位数,即精度,包含小数点,s为小数位数.float相当于double,rea

SQL Server 创建水平分布式数据库尝试

创建水平分布式数据库,需要分两步实现:划分子集和对子集进行并集操作.分布式数据库的优势是:IO分散,便于快速读取数据,劣势是消耗大量的网络带宽资源. 划分子集是将原始表水平切分成若干个较小的成员表,每一个成员表都是全集的一个划分(各子集的并集是全集,其交集是空集).每个成员表包含与原始表相同数量的列,并且每一列具有与原始表中的相应列同样的特性(如数据类型.大小.排序规则),水平切分原始表,也叫做数据库水平分片,sharding.在查询时,为了实现SQLServer内部水平分片对用户透明,必须利用