版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章第五章 管理事务和管理数据库管理事务和管理数据库 管理事务管理事务 管理数据库管理数据库事务的由来事务的由来 运用运用DELETE DELETE 命令或命令或UPDATE UPDATE 命令对数据库进展更新时,命令对数据库进展更新时,一次只能操作一个表,这会带来数据库的数据不一致一次只能操作一个表,这会带来数据库的数据不一致的问题。例如企业取消了后勤部,需求将后勤部从的问题。例如企业取消了后勤部,需求将后勤部从departmentdepartment表中删除,要修正表中删除,要修正department department 表,而表,而employee employee 表中的部门编号与
2、后勤部相对应的员工也表中的部门编号与后勤部相对应的员工也应删除。因此,两个表都需求修正,这种修正只能经应删除。因此,两个表都需求修正,这种修正只能经过两条过两条DELETE DELETE 语句进展。假设后勤部编号为语句进展。假设后勤部编号为10121012 第一条第一条DELETE DELETE 语句修正语句修正department department 表表 delete from departmentdelete from department where dept_id = 1012where dept_id = 1012 第二条第二条DELETE DELETE 语句修正语句修正empl
3、oyee employee 表表 delete from employee where dept_id = 1012delete from employee where dept_id = 1012 在执行第一条在执行第一条DELETE DELETE 语句后,数据库中的数语句后,数据库中的数据已处于不一致的形状。由于此时曾经没有后据已处于不一致的形状。由于此时曾经没有后勤部了,但勤部了,但employee employee 表中依然保管着属于后表中依然保管着属于后勤部的员工记录;只需执行了第二条勤部的员工记录;只需执行了第二条DELETE DELETE 语句后,数据才重新处于一致形状。但是假设
4、语句后,数据才重新处于一致形状。但是假设执行完第一条语句后,计算机忽然出现缺点,执行完第一条语句后,计算机忽然出现缺点,无法再继续执行第二条无法再继续执行第二条DELETE DELETE 语句,那么数语句,那么数据库中的数据将处于永远不一致的形状。因此据库中的数据将处于永远不一致的形状。因此必需保证这两条必需保证这两条DELETE DELETE 语句同时执行。为处语句同时执行。为处理类似的问题,数据库系统通常都引入了事务理类似的问题,数据库系统通常都引入了事务Transaction Transaction 的概念。的概念。事务的概念及特性 事务:指作为单个逻辑任务单元执行的事务:指作为单个逻辑
5、任务单元执行的一系列操作,而这些逻辑任务单元需求一系列操作,而这些逻辑任务单元需求具有原子性,一致性,隔离性和耐久性具有原子性,一致性,隔离性和耐久性四个属性,统称四个属性,统称ACIDACID特性。特性。 原子性:指事务必需是原子任务单元,原子性:指事务必需是原子任务单元,即对于事务所进展数据修正,要么全都即对于事务所进展数据修正,要么全都执行,要么全都不执行执行,要么全都不执行 一致性:指事务在完成时,必需使一切一致性:指事务在完成时,必需使一切的数据都坚持一致性形状,而且在相关的数据都坚持一致性形状,而且在相关数据库中,一切规那么都必需运用于事数据库中,一切规那么都必需运用于事务的修正,
6、以坚持一切数据的完好性。务的修正,以坚持一切数据的完好性。事务终了时,一切的内部数据构造都必事务终了时,一切的内部数据构造都必需是正确的。需是正确的。 隔离性:指由并发事务所做的修正必需与隔离性:指由并发事务所做的修正必需与任何其他并发事务所做的修正相隔离。事任何其他并发事务所做的修正相隔离。事务查看数据时数据所处的形状,要么是被务查看数据时数据所处的形状,要么是被另一并发事务修正之前的形状,要么是被另一并发事务修正之前的形状,要么是被另一事务修正之后的形状,即事务不会查另一事务修正之后的形状,即事务不会查看正在由另一个并发事务正在修正的数据。看正在由另一个并发事务正在修正的数据。 耐久性:指
7、事务完成之后,它对于系统的耐久性:指事务完成之后,它对于系统的影响是永久性的,即使出现系统缺点也是影响是永久性的,即使出现系统缺点也是如此。如此。事务的类型事务的类型 隐式事务隐式事务 :每次执行:每次执行SQL ServerSQL Server的任何的任何数据修正语句时,它都是一个隐式事务。数据修正语句时,它都是一个隐式事务。例如:以下例如:以下SQLSQL语句是一个独立事务:语句是一个独立事务: Insert talbe values(1,Insert talbe values(1,abcabc) ) Update table set col1=5 where col1=1Update t
8、able set col1=5 where col1=1 Delete from table1 where col1=5Delete from table1 where col1=5 gogo显式事务显式事务 通常在程序中用通常在程序中用BEGIN TRANSACTION BEGIN TRANSACTION 命令来标识一个事命令来标识一个事务的开场,用务的开场,用COMMIT TRANSACTION COMMIT TRANSACTION 命令标识事务终了;命令标识事务终了;这两个命令之间的一切语句被视为一体。只需执行到这两个命令之间的一切语句被视为一体。只需执行到COMMIT TRANSACT
9、ION COMMIT TRANSACTION 命令时,事务中对数据库的更新命令时,事务中对数据库的更新操作才算确认。和操作才算确认。和BEGINEND BEGINEND 命令类似。这两个命令命令类似。这两个命令也可以进展嵌套,即事务可以嵌套执行。也可以进展嵌套,即事务可以嵌套执行。 这两个命令的语法如下这两个命令的语法如下 BEGIN TRANSACTION transaction_name | BEGIN TRANSACTION transaction_name | tran_name_variabletran_name_variable COMMIT TRANSACTION transac
10、tion_name | COMMIT TRANSACTION transaction_name | tran_name_variable tran_name_variable 其中其中BEGIN TRANSACTION BEGIN TRANSACTION 可以缩写为可以缩写为BEGIN TRAN BEGIN TRAN 。COMMIT TRANSACTIONCOMMIT TRANSACTION可以缩写为可以缩写为COMMIT TRAN COMMIT TRAN 或或COMMIT COMMIT 。 transaction_nametransaction_name:指定事务的称号,只需前:指定事务的称
11、号,只需前32 32 个字符个字符会被系统识别。会被系统识别。 tran_name_variabletran_name_variable:用变量来指定事务的称号变量。:用变量来指定事务的称号变量。只能声明为只能声明为CHAR VARCHAR NCHAR CHAR VARCHAR NCHAR 或或NVARCHAR NVARCHAR 类型类型 例:例: 删除后勤部删除后勤部 declare transaction_name varchar(32)declare transaction_name varchar(32) select transaction_name = my_transaction
12、_delete select transaction_name = my_transaction_delete begin transaction transaction_namebegin transaction transaction_name go go use sampleuse sample gogo delete from department where dept_id = 1012delete from department where dept_id = 1012 gogo delete from employee where dept_id = 1012delete fro
13、m employee where dept_id = 1012 gogo commit transaction my_transaction_deletecommit transaction my_transaction_delete gogo事务回滚事务回滚 事务回滚事务回滚(Transaction Rollback) (Transaction Rollback) 是指当事务中是指当事务中的某一语句执行失败时的某一语句执行失败时, ,将对数据库的操作恢复到将对数据库的操作恢复到事务执行前或某个指定位置。事务执行前或某个指定位置。 事务回滚运用事务回滚运用ROLLBACK TRANSACTIO
14、N ROLLBACK TRANSACTION 命令,其语命令,其语法如下法如下 ROLLBACK TRANSACTION transaction_name | ROLLBACK TRANSACTION transaction_name | tran_name_variabletran_name_variable | savepoint_name | savepoint_variable | savepoint_name | savepoint_variable 其中其中savepoint_name savepoint_name 和和savepoint_variable savepoint_va
15、riable 参参数用于指定回滚到某一指定位置。数用于指定回滚到某一指定位置。 假设要让事务回滚到指定位置,那么需求在事务假设要让事务回滚到指定位置,那么需求在事务中设定保管点中设定保管点Save Point Save Point 。 所谓保管点是指定其所在位置之前的事务语句所谓保管点是指定其所在位置之前的事务语句不能回滚的语句,即此语句前面的操作被视为不能回滚的语句,即此语句前面的操作被视为有效。有效。 其语法如下:其语法如下: SAVE TRANSACTION savepoint_name | SAVE TRANSACTION savepoint_name | savepoint_vari
16、ablesavepoint_variable 各参数阐明如下:各参数阐明如下: avepoint_nameavepoint_name:指定保管点的称号。同事务:指定保管点的称号。同事务的称号一样,只需前的称号一样,只需前32 32 个字符会被系统识别。个字符会被系统识别。 savepoint_variablesavepoint_variable:用变量来指定保管点的:用变量来指定保管点的称号变量,只能声明为称号变量,只能声明为CHARCHAR、VARCHARVARCHAR、 NCHAR NCHAR 或或NVARCHAR NVARCHAR 类型。类型。 例:例: 删除后勤部再将后勤部的职工划归到
17、经理室删除后勤部再将后勤部的职工划归到经理室 begin transaction my_transaction_deletebegin transaction my_transaction_delete use sampleuse sample gogo delete from department where dept_id = 1012delete from department where dept_id = 1012 save transaction after_deletesave transaction after_delete update employee set dept_i
18、d = 1001update employee set dept_id = 1001 where dept_id = 1012 where dept_id = 1012 if error!=0 or rowcount=0 thenif error!=0 or rowcount=0 then beginbegin rollback tran after_delete / rollback tran after_delete /* * 回滚到保管点回滚到保管点after_delete after_delete 假设运用假设运用rollback my_transaction_delete rollb
19、ack my_transaction_delete 那么会回滚那么会回滚到事务开场前到事务开场前 * */ / print print 更新员工信息表时产生错误更新员工信息表时产生错误 commit transaction my_transaction_deletecommit transaction my_transaction_delete gogo事务任务机制事务任务机制 例如:例如:begin tran Insert table1 values(1,abc) Update table1 set col1=5 where col1=1 Delete from table1 where c
20、ol1=5 Commit tran 1、当、当begin tran语句到达数据库时,语句到达数据库时,sql server分分析出这是事务的开场,析出这是事务的开场,SQL server找到下一个可用找到下一个可用的内存日志页面,并给新事务分配一个事务的内存日志页面,并给新事务分配一个事务ID。 2、接着运转插入语句,新的行被记录到事务日志、接着运转插入语句,新的行被记录到事务日志中,数据页面在内存中进展修正,假设所需页面中,数据页面在内存中进展修正,假设所需页面不在内存中,那么从磁盘调出。不在内存中,那么从磁盘调出。 3、update语句以类似方式运转。语句以类似方式运转。 4、当、当sql
21、 server 收到收到commint tran时,日志页面被时,日志页面被写道数据库的日志设备上,这样才干保证日志页写道数据库的日志设备上,这样才干保证日志页面可被恢复。由于日志变化写入了硬盘,它保证面可被恢复。由于日志变化写入了硬盘,它保证事务是可恢复的,即使掉电了或在数据页写入磁事务是可恢复的,即使掉电了或在数据页写入磁盘时数据库解体了,也能进展事务恢复。盘时数据库解体了,也能进展事务恢复。检查点处置检查点处置 问题:系统何时将数据页写入磁盘呢?问题:系统何时将数据页写入磁盘呢? 日志页面是在日志页面是在commit tran时写入磁盘的,时写入磁盘的,那么何时将数据页面写入磁盘呢?在处
22、那么何时将数据页面写入磁盘呢?在处置检查点时。置检查点时。 检查点的概念:是检查点的概念:是sql server将数据页面将数据页面从内存拷贝到磁盘时的内部处置点。从内存拷贝到磁盘时的内部处置点。 检查点协助确保恢复已提交事务而不会检查点协助确保恢复已提交事务而不会破费额外的时间。当检查点出现时,将破费额外的时间。当检查点出现时,将写入一个日志项以指示一切修正了的页写入一个日志项以指示一切修正了的页面已写入磁盘。面已写入磁盘。锁锁- -锁的概念锁的概念 锁锁Lock) Lock) 是在多用户环境下对资源访问的一是在多用户环境下对资源访问的一种限制机制。当对一个数据源加锁后,此数据种限制机制。当
23、对一个数据源加锁后,此数据源就有了一定的访问限制,我们就称对此数据源就有了一定的访问限制,我们就称对此数据源进展了锁定。在源进展了锁定。在SQL ServerSQL Server中可以对以下的中可以对以下的对象进展锁定对象进展锁定: : 数据行:数据页中的单行数据数据行:数据页中的单行数据 索引行:索引页中的单行数据即索引的键值索引行:索引页中的单行数据即索引的键值 页:页是页:页是SQL Server SQL Server 存取数据的根本单位其存取数据的根本单位其大小为大小为8KB8KB 盘区:一个盘区由盘区:一个盘区由8 8 个延续的页组成个延续的页组成 表表 数据库数据库锁的类别锁的类别
24、 在在SQL Server SQL Server 中,中, 从数据库系统的角度从数据库系统的角度来看,锁分为以下三种类型:来看,锁分为以下三种类型: 独占锁独占锁Exclusive LockExclusive Lock:独占锁锁定的资:独占锁锁定的资源只允许进展锁定操作的程序运用,其它源只允许进展锁定操作的程序运用,其它任何对它的操作均不会被接受。执行数据任何对它的操作均不会被接受。执行数据更新命令,即更新命令,即INSERTINSERT、UPDATE UPDATE 或或DELETE DELETE 命令时命令时SQL Server SQL Server 会自动运用独占锁。会自动运用独占锁。但当
25、对象上有其它锁存在时,无法对其加但当对象上有其它锁存在时,无法对其加独占锁,独占锁不断到事务终了才干被释独占锁,独占锁不断到事务终了才干被释放。放。 共享锁共享锁Shared LockShared Lock:共享锁锁定的资源可以:共享锁锁定的资源可以被其它用户读取,但其它用户不能修正它。在被其它用户读取,但其它用户不能修正它。在SELECT SELECT 命令执行时,命令执行时,SQL Server SQL Server 通常会对对通常会对对象进展共享锁锁定,通常加共享锁的数据页被象进展共享锁锁定,通常加共享锁的数据页被读取终了后,共享锁就会立刻被释放读取终了后,共享锁就会立刻被释放 更新锁更
26、新锁Update LockUpdate Lock:更新锁是为了防止死锁:更新锁是为了防止死锁而设立的。当而设立的。当SQL Server SQL Server 预备更新数据时,预备更新数据时,它首先对数据对象作更新锁锁定,这样数据将它首先对数据对象作更新锁锁定,这样数据将不能被修正,但可以读取。等到不能被修正,但可以读取。等到SQL Server SQL Server 确定要进展更新数据操作时,它会自动将更新确定要进展更新数据操作时,它会自动将更新锁换为独占锁。但当对象上有其它锁存在时,锁换为独占锁。但当对象上有其它锁存在时,无法对其作更新锁锁定。无法对其作更新锁锁定。查看锁查看锁 可以经过企
27、业管理器或存储过程来查看锁可以经过企业管理器或存储过程来查看锁 用用Enterprise Manager Enterprise Manager 查看锁:在企业管理器中选择目查看锁:在企业管理器中选择目录树窗口中录树窗口中“管理管理 文件夹下文件夹下 “ “当前活动当前活动 中的锁中的锁 / /进程进程 ID ID 节点,那么可以查看当前锁定的进程。选择同节点,那么可以查看当前锁定的进程。选择同级的锁级的锁 / /对象节点下的相应字节点,那么可以查看当前对象节点下的相应字节点,那么可以查看当前锁定的对象。假设右键单击义务板窗口中的对象,从快锁定的对象。假设右键单击义务板窗口中的对象,从快捷菜单中
28、选择属性选项,那么会出现锁的进程细节对话捷菜单中选择属性选项,那么会出现锁的进程细节对话框,在此可以刷新或杀死锁的进程。框,在此可以刷新或杀死锁的进程。 杀死进程还可以用如下杀死进程还可以用如下Transact-SQL Transact-SQL 命令来进展命令来进展 KILL spidKILL spid spid spid 是是System Process IDSystem Process ID, 即系统进程编号的缩写。即系统进程编号的缩写。 用系统存储过程用系统存储过程Sp_lock Sp_lock 查看锁查看锁 存储过程存储过程Sp_lock Sp_lock 的语法如下的语法如下 sp_l
29、ock spid sp_lock spid SQL Server SQL Server 的进程编号的进程编号spid spid 可以在可以在master.dbo.sysprocesses master.dbo.sysprocesses 系统表中查到,系统表中查到,spid spid 是是INTINT类型的数据,假设不指定类型的数据,假设不指定spid spid 那么显示一那么显示一切的锁。切的锁。 例:例: 显示当前系统中一切的锁显示当前系统中一切的锁 use masteruse master exec sp_lockexec sp_lock 例:例:use masteruse master
30、exec sp_lock 52exec sp_lock 52死锁及其防止死锁及其防止死锁死锁 是在多用户或多进程情况下,为运用同一资源而产生的无是在多用户或多进程情况下,为运用同一资源而产生的无法处理的争用形状。通俗地讲,就是两个用户各占用一个资源,法处理的争用形状。通俗地讲,就是两个用户各占用一个资源,两人都想运用对方的资源但同时又不愿放弃本人的资源,就不断两人都想运用对方的资源但同时又不愿放弃本人的资源,就不断等待对方放弃资源。假设不进展外部干涉就将不断耗下去。死锁等待对方放弃资源。假设不进展外部干涉就将不断耗下去。死锁会呵斥资源的大量浪费,甚至会使系统解体。在会呵斥资源的大量浪费,甚至会
31、使系统解体。在SQL Server SQL Server 中中处理死锁的原那么是牺牲一个比两个都死强,即挑出一个进程作处理死锁的原那么是牺牲一个比两个都死强,即挑出一个进程作为牺牲者,将其事务回滚并向执行此进程的程序发送编号为为牺牲者,将其事务回滚并向执行此进程的程序发送编号为1205 1205 的错误信息而防止死锁的途径就是不能让满足死锁条件的的错误信息而防止死锁的途径就是不能让满足死锁条件的情况发生为此用户需求遵照以下原那么情况发生为此用户需求遵照以下原那么尽量防止并发地执行涉及到修正数据的语句。尽量防止并发地执行涉及到修正数据的语句。要求每个事务一次就将一切要运用的数据全部加锁,否那么就
32、不要求每个事务一次就将一切要运用的数据全部加锁,否那么就不予执行。予执行。预先规定一个封锁顺序,一切的事务都必需按这个顺序对数据执预先规定一个封锁顺序,一切的事务都必需按这个顺序对数据执行封锁。例如不同的过程在事务内部对对象的更新执行顺序应尽行封锁。例如不同的过程在事务内部对对象的更新执行顺序应尽量坚持一致。量坚持一致。每个事务的执行时间不可太长,对程序段长的事务可思索将其分每个事务的执行时间不可太长,对程序段长的事务可思索将其分割为几个事务。割为几个事务。数据库管理数据库管理 数据库的存储构造数据库的存储构造 创建、修正和删除数据库创建、修正和删除数据库 数据库备份数据库备份 数据库的存储构
33、造数据库的存储构造 数据库文件数据库文件 数据库文件组数据库文件组 数据库文件数据库文件逻辑存储构造和物理存储构造逻辑存储构造和物理存储构造一、数据库的逻辑存储构造指的是数据库一、数据库的逻辑存储构造指的是数据库是由哪些性质的信息所组成,是由哪些性质的信息所组成,SQL Server的数的数据库不仅仅只是数据的存储,一切与数据处置据库不仅仅只是数据的存储,一切与数据处置操作相关的信息都存储在数据库中。操作相关的信息都存储在数据库中。 二、数据库的物理存储构造那么是讨论数二、数据库的物理存储构造那么是讨论数据库文件是如何在磁盘上存储的,数据库在磁据库文件是如何在磁盘上存储的,数据库在磁盘上是以文
34、件为单位存储的,由数据库文件和盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。一个数据库文件和一个事务日志文件。数据库文件数据库文件 在在SQL Server SQL Server 中,数据库是由数据库文中,数据库是由数据库文件和事务日志文件组成的。一个数据库件和事务日志文件组成的。一个数据库至少应包含一个数据库文件和一个事物至少应包含一个数据库文件和一个事物日志文件。日志文件。数据库文件 数据库文件是存放数据库数据和数据库对象的文件。一数据库文件是存放数据库数据和数据库对象的文件。一个数
35、据库可以有一个或多个数据库文件,一个数据库文个数据库可以有一个或多个数据库文件,一个数据库文件只属于一个数据库。当有多个数据库文件时,有一个件只属于一个数据库。当有多个数据库文件时,有一个文件被定义为主数据库文件,文件被定义为主数据库文件, 扩展名为扩展名为.mdf.mdf, 它用来它用来存储数据库的启动信息和部分或全部数据。一个数据库存储数据库的启动信息和部分或全部数据。一个数据库只能有一个主数据库文件,其它数据库文件被称为次数只能有一个主数据库文件,其它数据库文件被称为次数据库文件,据库文件, 扩展名为扩展名为.ndf.ndf, 用来存储主文件没存储的用来存储主文件没存储的其它数据。其它数
36、据。 采用多个数据库文件来存储数据的优点表达在:采用多个数据库文件来存储数据的优点表达在: 数据库文件可以不断扩展而不受操作系统文件大小的限数据库文件可以不断扩展而不受操作系统文件大小的限制制 可以将数据库文件存储在不同的硬盘中,这样可以同时可以将数据库文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取对几个硬盘做数据存取 提高了数据处置的效率。提高了数据处置的效率。数据库文件本卷须知数据库文件本卷须知 数据是存储在邻接磁盘空间的数据是存储在邻接磁盘空间的 8KB 块中块中的,这些块称为页的,这些块称为页 行不能跨页行不能跨页 表、其他数据库对象和索引存储在扩展表、其他数据库对象和索引存
37、储在扩展盘区中盘区中 事务日志文件包含恢复数据库所必需的事务日志文件包含恢复数据库所必需的一切信息,以防系统缺点一切信息,以防系统缺点事务日志文件 事务日志文件是用来记录数据库更新情况的文件,扩展名事务日志文件是用来记录数据库更新情况的文件,扩展名为为.ldf.ldf。 例如运用例如运用INSERTINSERT、UPDATEUPDATE、DELETE DELETE 等对数据库等对数据库进展更改的操作,都会记录在此文件中。而如进展更改的操作,都会记录在此文件中。而如SELECT SELECT 等等对数据库内容不会有影响的操作,那么不会记录在案。一对数据库内容不会有影响的操作,那么不会记录在案。一
38、个数据库可以有一个或多个事务日志文件。个数据库可以有一个或多个事务日志文件。 SQL Server SQL Server 中采用中采用Write-AheadWrite-Ahead 提早写方式的事务,提早写方式的事务,即对数据库的修正先写入事务日志中,再写入数据库。其即对数据库的修正先写入事务日志中,再写入数据库。其详细操作是系统先将更改操作写入事务日志中,再更改存详细操作是系统先将更改操作写入事务日志中,再更改存储在计算机缓存中的数据。为了提高执行效率,此更改不储在计算机缓存中的数据。为了提高执行效率,此更改不会立刻写到硬盘中的数据库,而是由系统以固定的时间间会立刻写到硬盘中的数据库,而是由系
39、统以固定的时间间隔执行隔执行CHECKPOINT CHECKPOINT 命令,将更矫正的数据批量写入硬盘。命令,将更矫正的数据批量写入硬盘。SQL Server SQL Server 有个特点,它在执行数据更改时,会设置一有个特点,它在执行数据更改时,会设置一个开场点和一个终了点。假设尚未到达终了点,就因某种个开场点和一个终了点。假设尚未到达终了点,就因某种缘由使操作中断,那么在缘由使操作中断,那么在SQL Server SQL Server 重新启动时会自动重新启动时会自动恢复已修正的数据,使其前往未被修正的形状恢复已修正的数据,使其前往未被修正的形状数据库文件组数据库文件组 为了便于分配和
40、管理,为了便于分配和管理,SQL Server允许将允许将多个文件归纳为同一组,并赋予此组一个多个文件归纳为同一组,并赋予此组一个称号,这就是文件组。称号,这就是文件组。 系统管理员可以为系统管理员可以为每个磁盘驱动器创建文件组,然后将特定每个磁盘驱动器创建文件组,然后将特定的表、索引或表中的的表、索引或表中的text、ntext、image数数据指派给特定的文件组。据指派给特定的文件组。 文件不可以在文件组之间共享。表、索引文件不可以在文件组之间共享。表、索引或表中的或表中的text、ntext、image数据可以与文数据可以与文件组相关联,这时,它们的一切页都将分件组相关联,这时,它们的一
41、切页都将分配到与其关联的文件组中。日志文件不能配到与其关联的文件组中。日志文件不能作为文件组的一部分,日志空间与数据空作为文件组的一部分,日志空间与数据空间将分开进展管理。间将分开进展管理。数据库文件组 与数据库文件一样,文件组也分为主文件组和次与数据库文件一样,文件组也分为主文件组和次文件组。文件组。 一个文件只能存在于一个文件组中,一个文件组一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库运用。主文件组中包含了一也只能被一个数据库运用。主文件组中包含了一切的系统表。当建立数据库时,主文件组包括主切的系统表。当建立数据库时,主文件组包括主数据库文件和未指定给其它组的其它文件,系统
42、数据库文件和未指定给其它组的其它文件,系统表的一切页均分配在主文件组中。在次文件组中表的一切页均分配在主文件组中。在次文件组中可以指定一个缺省文件组,那么在创建数据库对可以指定一个缺省文件组,那么在创建数据库对象时,假设没有指定将其放在哪一个文件组中,象时,假设没有指定将其放在哪一个文件组中,就会将它放在缺省文件组中。假设没有指定缺省就会将它放在缺省文件组中。假设没有指定缺省文件组,那么主文件组为缺省文件组。文件组,那么主文件组为缺省文件组。文件组文件组 文件组是一个或多个文件的集合,构成分配和文件组是一个或多个文件的集合,构成分配和管理的单元管理的单元 可以在一开场创建数据库时创建,也可以在
43、以可以在一开场创建数据库时创建,也可以在以后多个文件添加到数据库中时再创建后多个文件添加到数据库中时再创建 文件组只能包含数据文件文件组只能包含数据文件 一个文件不能属于多个文件组一个文件不能属于多个文件组 表、索引、表、索引、text、ntext 和和 image 数据可以与一数据可以与一个特定的文件组相关个特定的文件组相关创建用户数据库创建用户数据库 每个数据库都由以下几个部分的数据库每个数据库都由以下几个部分的数据库对象所组成:对象所组成: 关系图、表、视图、存储过程、用户、关系图、表、视图、存储过程、用户、角色、规那么、默许、用户自定义数据角色、规那么、默许、用户自定义数据类型和用户自
44、定义函数。类型和用户自定义函数。 创建数据库的方法创建数据库的方法 运用导游创建数据库运用导游创建数据库 运用企业管理器创建数据库运用企业管理器创建数据库 运用运用Transact-SQL言语创建数据库。言语创建数据库。运用导游创建数据库运用导游创建数据库 以下的图以下的图1 到图到图8是运用导游创建数据库是运用导游创建数据库 ,用户根据提示操作,即可创建数据库。用户根据提示操作,即可创建数据库。图图1 选择导游对话框选择导游对话框图图2 欢迎运用创建数据库导游对话框欢迎运用创建数据库导游对话框 图图3 输入数据库称号和文件位置对话框输入数据库称号和文件位置对话框 图图4 定义数据库文件逻辑称
45、号及初始大小对话话框定义数据库文件逻辑称号及初始大小对话话框图图5 定义数据库增长信息对话框定义数据库增长信息对话框 图图6 定义事务日志文件称号及初始大小对话框定义事务日志文件称号及初始大小对话框 图图7 定义事务日志文件增长信息对话框定义事务日志文件增长信息对话框 图图8 确认创建数据库对话框确认创建数据库对话框 运用企业管理器创建数据库运用企业管理器创建数据库 在企业管理器中,单击工具栏中的在企业管理器中,单击工具栏中的 图标,或在数据图标,或在数据库文件夹或其下属任一数据库图标上单击右键,选择新建库文件夹或其下属任一数据库图标上单击右键,选择新建数据库选项,就会出现如图数据库选项,就会
46、出现如图9所示的对话框。所示的对话框。在常规在常规General页框中,要求用户输入数据库称号。页框中,要求用户输入数据库称号。 点击数据文件点击数据文件Data Files页框,该页框用来输入数据页框,该页框用来输入数据库文件的逻辑称号、存储位置、初始容量大小和所属文件库文件的逻辑称号、存储位置、初始容量大小和所属文件组称号,如图组称号,如图10所示。所示。 点击事务日志点击事务日志Transaction Log页框,该页框用来设置页框,该页框用来设置事务日志文件信息,如图事务日志文件信息,如图11所示。所示。 单击图单击图11中的中的“确定按钮,那么开场创建新的数据库。确定按钮,那么开场创
47、建新的数据库。 图图9 创建数据库对话框中的常规页框创建数据库对话框中的常规页框图图10 创建数据库对话框中的数据文件页框创建数据库对话框中的数据文件页框图图11 创建数据库对话框中的事务日志页框创建数据库对话框中的事务日志页框运用Transact-SQL言语创建数据库,语法如下:语法如下:CREATE DATABASE database_nameCREATE DATABASE database_nameON PRIMARY 1ON PRIMARY 1,n n , ,n n LOG ON 1 LOG ON 1,nn FOR LOAD|FOR ATTACH FOR LOAD|FOR ATTACH
48、:=(NAME=logical_file_name:=(NAME=logical_file_name, FILENAME=FILENAME=os_file_nameos_file_name ,SIZE=sizeSIZE=size ,MAXSIZE=max_size|UNLIMITEDMAXSIZE=max_size|UNLIMITED ,FILEGROWTH=growth_increment ) FILEGROWTH=growth_increment ) ,nn:=FILEGROUP filegroup_name :=FILEGROUP filegroup_name 11,nn 各参数阐明如下
49、:各参数阐明如下: database_name database_name:数据库的称号,最长为:数据库的称号,最长为128128个字符。个字符。 ONON:指明数据库文件和文件组的明确定义:指明数据库文件和文件组的明确定义 PRIMARYPRIMARY:指明主数据库文件或主文件组。主文件组的:指明主数据库文件或主文件组。主文件组的第一个文件被以为是主数据库文件,其中包含了数据库第一个文件被以为是主数据库文件,其中包含了数据库的逻辑启动信息和数据库的系统表。假设没有的逻辑启动信息和数据库的系统表。假设没有PRIMARYPRIMARY, 项那么在项那么在CREATE DATABASE CREAT
50、E DATABASE 命令中列出的第一个文件将命令中列出的第一个文件将被默以为主文件。被默以为主文件。 FilespecFilespec:文件阐明:文件阐明 FilegroupspecFilegroupspec:文件组阐明:文件组阐明 LOG ONLOG ON:指明事务日志文件的明确定义。假设没有:指明事务日志文件的明确定义。假设没有LOG LOG ON ON 选项,那么系统会自动产生一个文件名前缀与数据选项,那么系统会自动产生一个文件名前缀与数据库名一样,容量为一切数据库文件大小库名一样,容量为一切数据库文件大小1/4 1/4 的事务日志的事务日志文件。文件。 NAMENAME:指定数据库的
51、逻辑称号,这是在:指定数据库的逻辑称号,这是在SQL ServerSQL Server系统中运系统中运用的称号,是数据库在用的称号,是数据库在SQL ServerSQL Server中的标识符。中的标识符。 FILENAMEFILENAME:指定数据库所在文件的操作系统文件称号和途径,:指定数据库所在文件的操作系统文件称号和途径,该操作系统文件名和该操作系统文件名和NAMENAME的逻辑称号一一对应的逻辑称号一一对应 SIZESIZE:指定数据库的初始容量大小。:指定数据库的初始容量大小。 MAXSIZEMAXSIZE:指定操作系统文件可以增长到的最大尺寸。:指定操作系统文件可以增长到的最大尺
52、寸。 FILEGROWTHFILEGROWTH:指定文件每次添加容量的大小,当指定数据为:指定文件每次添加容量的大小,当指定数据为0 0时,表示文件不增长。时,表示文件不增长。 For loadFor load:提供与早期:提供与早期SQL ServerSQL Server的兼容性,如今已不用该的兼容性,如今已不用该语句。语句。 For AttachFor Attach:指定从现有的操作系统文件中附加数据库,运:指定从现有的操作系统文件中附加数据库,运用该子句时必需指定该数据库的主文件。用该子句时必需指定该数据库的主文件。例:创建了一个例:创建了一个Company数据库数据库 创建了一个创建了
53、一个Company数据库,该数据库的数据库,该数据库的主数据文件逻辑称号为主数据文件逻辑称号为Company_data,物理,物理文件名为文件名为Company.mdf,初始大小为,初始大小为10MB,最大尺寸为无限大,增长速度为最大尺寸为无限大,增长速度为10%;数据库;数据库的日志文件逻辑称号为的日志文件逻辑称号为Company_log,物理文,物理文件名为件名为Company.ldf,初始大小为,初始大小为1MB,最大,最大尺寸为尺寸为5MB,增长速度为,增长速度为1MB。程序清单如下:程序清单如下: Create database company on primaryCreate da
54、tabase company on primary (name=company_data,(name=company_data, filename=d:mssql7datacompany.mdf,filename=d:mssql7datacompany.mdf, size=10,size=10, maxsize=unlimited,maxsize=unlimited, filegrowth=10%)filegrowth=10%) log onlog on (name=company_log,(name=company_log, filename=d:mssql7datacompany.ldf,
55、filename=d:mssql7datacompany.ldf, size=1,size=1, maxsize=5,maxsize=5, filegrowth=1)filegrowth=1)例:创建一个指定多个数据文件例:创建一个指定多个数据文件和日志文件的数据库和日志文件的数据库 该数据库称号为该数据库称号为employees,有,有1个个10MB和和1个个20MB的数据文件和的数据文件和2个个10MB的事务日志文件。数据的事务日志文件。数据文件逻辑称号为文件逻辑称号为employee1和和employee2,物理文件,物理文件名为名为employee1.mdf和和employee2.md
56、f。主文件是。主文件是employee1,由,由primary指定,两个数据文件的最大指定,两个数据文件的最大尺寸分别为无限大和尺寸分别为无限大和100MB,增长速度分别为,增长速度分别为10%和和1MB。事务日志文件的逻辑名为。事务日志文件的逻辑名为employeelog1和和employeelog2,物理文件名为,物理文件名为employeelog1.ldf和和employeelog2.ldf,最大尺寸均为,最大尺寸均为50MB,文件增长,文件增长速度为速度为1MB。其源程序如下:其源程序如下: create database employees on primarycreate data
57、base employees on primary (name=employee1,(name=employee1, filename=d:mssql7data employee1.mdf,filename=d:mssql7data employee1.mdf, size=10,maxsize=unlimited,size=10,maxsize=unlimited, filegrowth=10%),filegrowth=10%), (name=employee2,(name=employee2, filename=d:mssql7data employee2.mdf,filename=d:ms
58、sql7data employee2.mdf, size=20,maxsize=100,filegrowth=1)size=20,maxsize=100,filegrowth=1) log on log on (name=employeelog1,(name=employeelog1, filename=d:mssql7data employeelog1.ldf,filename=d:mssql7data employeelog1.ldf, size=10,maxsize=50,filegrowth=1),size=10,maxsize=50,filegrowth=1), (name=empl
59、oyeelog2,(name=employeelog2, filename=d:mssql7data employeelog2.ldf,filename=d:mssql7data employeelog2.ldf, size=10,maxsize=50,filegrowth=1)size=10,maxsize=50,filegrowth=1)设置数据库选项设置数据库选项 设置数据库选项可以采用如下几种方法:设置数据库选项可以采用如下几种方法: 运用数据库属性对话框来设置数据库选项运用数据库属性对话框来设置数据库选项 在查询分析器中执行系统存储过程在查询分析器中执行系统存储过程sp_dbopti
60、on查看数据库选项。查看数据库选项。运用数据库属性对话框设置数运用数据库属性对话框设置数据库选项据库选项 方法如下:方法如下: 翻开企业管理器翻开企业管理器 选择需求查看的数据库选择需求查看的数据库 在工具栏中单击在工具栏中单击“属性按钮,弹出属性按钮,弹出“数数据库属性对话框。据库属性对话框。 在数据库属性对话框中选择在数据库属性对话框中选择“选项标签,选项标签,在此选项下,可以看到四个区域:访问在此选项下,可以看到四个区域:访问区、缺点复原区、设置区和兼容性区。区、缺点复原区、设置区和兼容性区。访问区访问区 访问限制访问限制 Members of db_owner, dbcreator,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论