事务、锁定、自动化和服务

上传人:xuey****n398 文档编号:245873879 上传时间:2024-10-10 格式:PPT 页数:43 大小:707KB
返回 下载 相关 举报
事务、锁定、自动化和服务_第1页
第1页 / 共43页
事务、锁定、自动化和服务_第2页
第2页 / 共43页
事务、锁定、自动化和服务_第3页
第3页 / 共43页
点击查看更多>>
资源描述
,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,*,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,*,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,第,10,章 事务、锁定、自动化和服务,10.1,事务,10.2,锁定,10.3 SQL Server 2008,自动化管理,10.4 SQL Server 2008,服务,10.1,事务,10.1.1,事务与,ACID,属性,在形式上,事务是由,ACID,属性标识的。术语“,ACID,”是一个简称,每个事务的处理必须满足,ACID,原则,即:,(,1,)原子性。原子性意味着每个事务都必须被认为是一个不可分割的单元。,(,2,)一致性。不管事务是完全成功完成还是中途失败,当事务使系统中的所有数据处于一致的状态时存在一致性。,(,3,)隔离性。隔离性是指,每个事务在它自己的空间发生,和其他发生在系统中的事务隔离,而且事务的结果只有在它完全被执行时才能看到。,(,4,)持久性。持久性意味着,一旦事务执行成功,在系统中产生的所有变化将是永久的。,10.1.2,多用户使用的问题,丢失更新(,lost update,)指,当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,因此最后的更新将重写由其他事务所做的更新,这将导致数据丢失。,脏读(,dirty read,)指,一个事务正在访问数据,而其他事务正在更新该数据,但尚未提交,此时就会发生脏读问题,即第一个事务所读取的数据是“脏”(不正确)数据,它可能会引起错误。,当一个事务多次访问同一行而且每次读取不同的数据时,会发生不可重复读(,unrepeatable read,)问题。,当一个事务对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻读(,phantom read,)问题。,10.1.3,事务处理,1,开始事务,在,SQL Server,中,显式地开始一个事务可以使用,BEGIN TRANSACTION,语句。,语法格式:,BEGIN TRAN|TRANSACTION,transaction_name|tran_name_variable,WITH MARK dEscription ,;,10.1.3,事务处理,2,结束事务,COMMIT TRANSCATION,语句是提交语句,它将事务开始以来所执行的所有数据都修改成为数据库的永久部分,也标志一个事务的结束,其语法格式为,COMMIT TRAN|TRANSACTION,transaction_name|tran_name_variable ,;,标志一个事务的结束也可以使用,COMMIT WORK,语句。语法格式为,COMMIT WORK,10.1.3,事务处理,3,撤销事务,若要结束一个事务,可以使用,ROLLBACK TRANSACTION,语句。它使得事务回滚到起点,撤销自最近一条,BEGIN TRANSACTION,语句以后对数据库的所有更改,同时也标志了一个事务的结束。,语法格式:,ROLLBACK TRAN|TRANSACTION,transaction_name|tran_name_variable,;,另外,一条,ROLLBACK WORK,语句也能撤销一个事务,功能与,ROLLBACK TRANSACTION,语句一样,但,ROLLBACK TRANSACTION,语句接受用户定义的事务名称。,语法格式:,ROLLBACK WORK ;,10.1.3,事务处理,4,回滚事务,ROLLBACK TRANSACTION,语句除了能够撤销整个事务,还可以使事务回滚到某个点,不过在这之前需要使用,SAVE TRANSACTION,语句来设置一个保存点。,SAVE TRANSACTION,的语法格式:,SAVE TRAN|TRANSACTION,savepoint_name|savepoint_variable,;,SAVE TRANSACTION,语句会向已命名的保存点回滚一个事务。如果在保存点被设置后,当前事务对数据进行了更改,则这些更改会在回滚中被撤销。语法格式为,ROLLBACK TRAN|TRANSACTION,savepoint_name|savepoint_variable,;,10.1.3,事务处理,【,例,10.1,】,定义一个事务,向,PXSCJ,数据库的,XSB,表添加一行数据,然后删除该行数据;但执行后,新插入的数据行并没有删除,因为事务中使用了,ROLLBACK,语句将操作回滚到保存点,My_sav,,即删除前的状态。,BEGIN TRANSACTION My_tran,USE PXSCJ,INSERT INTO XSB,VALUES(081115,胡新华,1,1991-06-27,计算机,50,NULL),SAVE TRANSACTION My_sav,DELETE FROM XSB WHERE,学号,=081115,ROLLBACK TRAN My_sav,COMMIT WORK,GO,10.1.3,事务处理,执行完上述语句后使用SELECT语句查询XSB表中的记录:,SELECT*,FROM XSB,WHERE 学号=081115,执行结果如下:,10.1.4,事务隔离级,在SQL Server 2008中,可以使用SET TRANSACTION ISOLATION LEVEL语句来设置事务的隔离级别。,语法格式:,SET TRANSACTION ISOLATION LEVEL,READ UNCOMMITTED,|READ COMMITTED,|REPEATABLE READ,|SNAPSHOT,|SERIALIZABLE,;,10.2,锁定,10.2.1,锁定粒度,在,SQL Server,中,可被锁定的资源从小到大分别是行、页、扩展盘区、表和数据库,被锁定的资源单位称为锁定粒度。可见,上述,5,种资源单位其锁定粒度是由小到大排列的。,10.2.2,锁定模式,SQL Server使用不同的锁模式锁定资源,这些锁模式确定了并发事务访问资源的方式。共有6种锁模式,分别是:,(1)排他锁。排他锁可以防止并发事务对资源进行访问。,(2)共享锁。共享锁允许并发事务读取一个资源。,(3)更新锁。更新锁可以防止通常形式的死锁。,(4)意向锁。意向锁表示SQL Server需要在层次结构中的某些底层资源(如表中的页或行)上获取共享锁或排他锁,例如,放置在表级的共享意向锁表示事务打算在表中的页或行上放置共享锁。,(5)键范围锁。键范围锁用于序列化的事务隔离级别,可以保护由T-SQL语句读取的记录集合中隐含的行范围。,(6)架构锁。执行表的数据定义语言操作(如增加列或删除表)时使用架构修改锁。,(7)大容量更新锁。当将数据大容量复制到表,且指定了TABLOCK提示或者使用sp_tableoption设置了table lock on bulk表选项时,将使用大容量更新锁。,10.3 SQL Server 2008,自动化管理,10.3.1 SQL Server,代理,如果需要验证账户是否已经设置了所需的,Windows,权限,可以通过以下步骤进行:,(,1,)单击“开始”菜单,选择“程序管理工具本地安全策略”。,(,2,)在弹出的“本地安全设置”窗口中,选择“本地策略用户权利指派”。,(,3,)在右侧的权限列表中右击一个权限选项,如“作为服务器登录”,选择“属性”菜单项,如图,10.1,所示。在打开的“属性”窗口中,从列表中查看要设置的,SQL Server,代理的账户是否存在,如图,10.2,所示。,10.3.1 SQL Server,代理,(,4,)如果账户不在列表中,单击“添加用户或组”按钮,在打开的“选择用户或组”对话框中添加,SQL Server,代理服务账户,再单击“确定”按钮返回。,(,5,)重复上述操作,对权限列表中的其他选项进行相同的设置。,10.3.2,操作员,每一个操作员都必须具有一个唯一的名称,操作员的联系信息决定了通知操作员的方式。通知方式有以下,3,种:,(,1,)电子邮件通知。电子邮件通知是向操作员发送电子邮件。,(,2,)寻呼通知。寻呼是通过电子邮件实现的。,(,3,),net send,通知。此方式通过,net send,命令向操作员发送消息。,10.3.2,操作员,创建操作员的步骤如下。,第,1,步:使用系统管理员身份连接,SQL Server,,启动,SQL Server Management Studio,,查看,SQL Server,代理服务是否运行,如果未运行,则右击“,SQL Server,代理”,选择“启动”菜单项启动,SQL Server,代理服务。,第,2,步:进入“新建操作员”窗口,在“姓名”文本框中输入操作员名称,如,tao,;在“电子邮件名称”文本框中输入通知操作员的电子邮件,如。,第,3,步:在“寻呼值班计划”栏中,可以选择操作员接收通知的时间。例如,选择“星期一”复选框,并设置“工作日开始时间”和“工作日结束时间”,如图,10.3,所示,则操作员将在每个星期一的这个时间段接到通知。,10.3.2,操作员,10.3.3,作业,创建作业的操作步骤如下。,第,1,步:启动,SQL Server Management Studio,,在“对象资源管理器”窗口中展开“,SQL Server,代理”,右击“作业”,选择“新建作业”菜单项,打开“新建作业”窗口。,第,2,步:选择“常规”选项卡,在“名称”文本框中输入要定义的作业名称,如“创建并备份数据库”。“所有者”使用默认值。在“类别”下拉框中选择当前作业的类别,如“数据库维护”,如图,10.4,所示,默认是“未分类(本地)”。“说明”框中可以输入对作业的描述信息。,10.3.3,作业,10.3.3,作业,第,3,步:选择“步骤”选项卡,在右侧单击“新建”按钮,弹出“新建作业步骤”窗口。在窗口中的“步骤名称”文本框中定义一个作业步骤的名称,如“新建数据库”。在“类型”下拉框中选择作业步骤的类型,这里选择“,Transact-SQL,脚本(,T-SQL,)”。如果作业步骤是对数据库直接操作,则可以在“数据库”下拉框中选择目标数据库,这里使用默认值。在“命令”文本框中输入创建新数据库的,T-SQL,语句,如图,10.5,所示。,10.3.3,作业,10.3.3,作业,第,4,步:在“新建作业步骤”窗口中可以单击“分析”按钮分析,SQL,命令的正确性,如果语句正确则选择“高级”选项卡,可以设置“成功时要执行的操作”和“失败时要执行的操作”,这里使用默认值。单击“确定”按钮返回。,第,5,步:返回“新建作业”窗口后,窗口中的“作业步骤列表”中将显示刚刚新建的作业步骤。这时可以再单击“新建”按钮,添加备份数据库的作业步骤(过程略),新建后的作业步骤如图,10.6,所示。,10.3.3,作业,10.3.3,作业,第6步:选择“计划”选项卡,单击“新建”按钮,弹出“新建作业计划”窗口,如图10.7所示。,10.3.3,作业,第7步:选择“通知”选项卡,选择作业完成时要执行的操作。例如,可以选择“电子邮件”复选框,在后面的第一个下拉框中选择要通知的操作员,如tao。在第二个下拉框中选择通知操作员的时机,如果选择了“当作业完成时”选项则包括“当作业成功时”和“当作业失败时”。如图10.8所示。,10.3.4,警报,可以使用下列参数来指定触发警报的SQL Server事件:,(1)错误号。SQL Server代理在发生特定错误时发出警报。,(2)严重级别。SQL Server代理在发生特定级别的严重错误时发出警报。,表10.1中列出了常见的错误严重级别及说明。,级,别,说,明,是否写入应用程序日志,010,消息,不是错误,可选,1116,用户错误,可纠正,可选,17,在服务器资源耗尽时产生的错误,可选,1
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!