数据库应用技术_第1页
数据库应用技术_第2页
数据库应用技术_第3页
数据库应用技术_第4页
数据库应用技术_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库应用技术第一页,共六十六页,编辑于2023年,星期三18.1概述作为数据库管理员,在数据库之间导入、导出数据是一项经常执行的基本任务。例如,将测试服务器上的数据库迁移到生产工作服务器上,或者是移动表中的部分数据,也可能是将数据库中的数据转换为另一个产品的格式来保存,这些工作都是导入、导出数据的简单形式。本章总结了SQLServer数据传输的常用工具,如DTS、T-SQL、BCP、复制等,满足用户在数据传输过程中的不同要求。第二页,共六十六页,编辑于2023年,星期三18.1.1数据传输的原因管理员必须理解如何在应用程序和环境之间传输数据。几乎所有的环境都要执行求一定程度的数据转移工作。数据迁移将数据从外部数据源导入SQLServer实例很可能是建立数据库后要执行的第一个工作。数据导入SQLServer数据库后,即可开始使用该数据库。例如,将Excel工作表中的数据导入SQLServer实例,迁移完成后,该SQLServer数据库将直接用于所有与数据相关的任务,而不再使用原来的系统。改变数据格式转换数据可能是简单的数据类型间的映射转换,还可能是包含了数据逻辑的复杂操作。例如,源数据库中的IS_Payment字段存放“ture”或“false”值,而目的数据库的值是1或0。在执行数据传输时,可把格式为“ture”或“false”的数据转换为1或0,使得数据的表达方式一致。重构数据在重构数据中,可能需要把来自多个数据源、表和列的数据在目的数据库组合成一个单一的表。例如,在一个企业应用中,把多个下级部门的数据通过聚集和汇总储存在上级主管部门的数据库中。转换异构数据异构数据是以多种格式存储的数据,例如存储在SQLServer数据库、文本文件和Excel电子表中的数据。转换异构数据就是将这些使用不同格式存储的数据转换到统一存储模式中。调度作业SQLServer代理程序会自动的调度数据传输的过程。例如,通过定义自动化任务保存数据的导入、导入规则,在指定的时间由系统调度任务执行,以减少每次数据传输时的手工调度过程和重复的步骤。第三页,共六十六页,编辑于2023年,星期三18.1.2数据传输工具一览数据传输的基本过程包括:确定数据源和目的地,明确在数据源和目的地之间传输或转换数据,定义数据传输或转换的规则。SQLServer提供了几个数据传输工具,用户根据特定需要选择适当的工具完成工作。DTS导入/导出向导DTS(DataTransformationService)导入/导出向导以交互式的方式指导用户完成数据传输的工作。用户可以轻易的完成在不同的数据源之间传输或转换数据。在连接源和目的数据库之后,便可以选择要导入或导出的数据,并可对数据的格式进行转换。DTS工具提供了在数据源之间传输数据的最简单的方法。bcp实用程序bcp(bulkcopy)是一个在命令提示符下的实用工具。BCP命令能够在本地SQLServer和ASCII码文本文件之间导入/导出的数据。T-SQL语句SELECTINTO语句能够将结果集创建为一张新表,并且实现拷贝表结构的功能。INSERTSELECT语句可用于将一个或多个其它的表或视图的记录添加到目的表中。使用BULKINSERT语句能够把一个数据文件拷贝到一张表中。复制复制是一组解决方案,用于在企业范围内发布、分发数据。使用复制可以将数据分发到不同位置,通过局域网、拨号连接、Internet分发给远程或移动用户,拉近用户与数据的距离,增强数据的独立性。数据库备份与恢复数据库备份与恢复不仅能够保证数据的安全而且作为数据传输的方法之一,能够把一个完整的SQLServer数据库,包括所有的数据和对象,移动到另一个SQLServer实例,并且能够通过日志传送的方法不断向目的数据库追加数据(参见第十四章数据库备份与恢复与自动化管理)。分离和附加数据SQLServer允许分离数据库的数据和事务日志文件,然后将其重新附加到另一台服务器,甚至同一台服务器上。分离数据库将从SQLServer删除数据库,但是保持在组成该数据库的数据和事务日志文件完好无损。这些数据和事务日志文件可以用来将数据库附加到任何SQLServer实例上,这时数据库的使用状态与它分离时的状态完全相同。例如,直接将数据库从一台计算机迁移到另一台计算机,而不必使用重新创建数据库,然后手动还原数据库备份的办法。(参见第十四章数据库备份与恢复与自动化管理)。第四页,共六十六页,编辑于2023年,星期三18.2使用DTS进行数据搬运

数据转换服务(DTS)导入/导出向导提供生成DTS包的最简单方法,可以交互式地指导您完成整个复制和转换数据的过程。DTS导入/导出向导为在OLEDB数据源之间复制数据提供了最简单的方法。第五页,共六十六页,编辑于2023年,星期三18.2.1启动DTS向导打开SQLServer企业管理器单击运行向导按钮,在【选择向导】对话框中展开【数据转换服务】节点可以启动【DTS导出向导】或者【DTS导入向导】。如果从【开始】菜单【SQLServer程序组】中启动【DTS导入/导出向导】,则不需要指定是导入数据还是导出数据。第六页,共六十六页,编辑于2023年,星期三18.2.2连接数据源和目的地

数据转换服务(DTS)能够对兼容ODBC和OLEDB提供程序的数据建立连接。要成功执行复制和转换数据的任务,则必须与源数据和目的数据建立有效的连接。使用DTS导入/导出向导,可以连接到下列数据源:大多数的OLEDB和ODBC数据源以及用户指定的OLEDB数据源。文本文件。到一个或多个MicrosoftSQLServer实例的其它连接。Oracle和Informix数据库。必须已经安装Oracle或Informix客户端软件。MicrosoftExcel电子表格。MicrosoftAccess和MicrosoftFoxPro数据库。dBase或Paradox数据库。连接数据源时须指定任何要求的登录、安全性或文件位置信息。如果正在从文本文件导入数据,则必须指定文本文件的格式和分隔符。如图18.1所示第七页,共六十六页,编辑于2023年,星期三18.2.2连接数据源和目的地

第八页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式在【指定表复制或查询】对话框列出了以下选项,如图18.2所示:从源数据库复制表和视图用一条查询指定要传输的数据在SQLServer数据库之间复制对象和数据第九页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式从源数据库复制表和视图在【指定表复制或查询】对话框中选择【从源数据库中复制表和视图】选项,单击【下一步】,显示【选择源表和视图】对话框。使用此对话框指定要向目的复制的表和视图,如图18.3所示。可以将整个表或者表中部分字段的数据以及视图复制到指定的目的,在这个过程中将不筛选或排列记录。如果选择了源而不执行其它操作,将从源不加更改地复制架构和数据。第十页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式单击【转换】网格中按钮显示【列映射和转换】对话框,如图18.4所示。在其中可指定源数据列对的目列的映射、编辑目的列的属性,以及指定记录添加到目的表中的方式。如果目的表不存在,则在目的数据库中创建表,如果目的表存在,那么可以使用【删除目的表中的行】让源表中的行替换目的表中的行,或者选择【在目的表中添加】将源表中的行追加到目的表中。在【选择源表和视图】对话框中,单击【预览】按钮,在运行数据转换服务前,预览源数据以对其进行验证。单击【上一步】返回【指定表复制或查询】对话框。第十一页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式用一条查询指定要传输的数据在【指定表复制或查询】对话框中选择【用一条查询指定要传输的数据】选项,单击【下一步】,显示【键入SQL语句】对话框,在其中可生成用于在表或视图中检索特定行的SQL语句,只有符合选择条件的行才可用于复制,如图18.5所示。单击【上一步】返回【指定表复制或查询】对话框。第十二页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式在SQLServer数据库之间复制对象和数据在【指定表复制或查询】对话框中选择【在SQLServer数据库之间复制对象和数据】选项,单击【下一步】,显示【选择要传输的对象】对话框。如果数据的源和目的都是SQLServer数据库,则在此对话框中可以指定要复制的对象和数据。可传输的对象包括表、视图、存储过程、默认值、规则、约束、用户定义的数据类型、登录、用户、角色和索引,如图18.6所示。对象只能在多个SQLServer7.0实例间传输,或从SQLServer7.0实例传输到SQLServer2000实例,以及在多个SQLServer2000实例间传输。第十三页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式创建目的对象选项此选项为所有要传输的对象创建目的对象(包括表、视图、存储过程、默认值、规则、约束、用户定义的数据类型、登录、用户、角色和索引),启用下列选项:【首先丢弃目的对象】创建新目的对象之前,丢弃所有相应的目的对象。【包括所有相关对象】在数据传输中包括所有相关对象,例如在传输视图的同时传输视图引用的表。【包括所有扩展属性】包括所有扩展属性,这些属性是用户在数据库中的不同对象上提供的定义。复制数据此选项用于设置从源向目的复制SQLServer数据以及下列复制选项:【替换现有数据】用指定的源中的新数据改写目的对象中现有数据。【追加数据】保留目的对象的现有数据,并从追加新数据到目的对象中。第十四页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式使用排序规则使得能够在不同的排序规则间复制数据。复制所有对象传输所有与指定的数据源关联的对象。使用默认选项将各高级传输选项设置为默认值。选择对象清除【传输所有对象】复选框,则【选择对象】按钮的状态为“可用”,可以在其中可选择要传输的个别对象。如图18.7所示第十五页,共六十六页,编辑于2023年,星期三18.2.3设定转换模式选项清除【使用默认选项】复选框,则【选项】按钮的状态为可用,可以在其中进一步指定数据库用户和角色、SQLServer登录、对象的权限、以及表的传输选项,如图18.8所示。脚本文件目录指定脚本文件和日志文件写入的目录。每个选定对象的SQL和数据文件都将脚本文件写入某个目录,该目录必须位于任务所在的同一台计算机上。该目录中的脚本和日志文件一直可被访问,直到下次执行时文件由新信息重写。第十六页,共六十六页,编辑于2023年,星期三18.2.4保存和调度DTS包保存DTS包数据源源、目的和转换的规则可以保存为数据转换服务(DTS)包,并调度该文件按预定义的时间间隔运行,如图18.9所示。DTS包可以保存到msdb数据库、SQLServer2000MetaDataServices、COM结构化存储文件或MicrosoftVisualBasic文件。第十七页,共六十六页,编辑于2023年,星期三18.2.4保存和调度DTS包MicrosoftSQLServer默认使用该选项保存DTS包,在【保存DTS包】对话框中填写所需字段。DTS包存储在SQLServermsdb数据库中,在SQLServer企业管理器保留DTS包的清单,供以后调度。SQLServer2000MetaDataServices。使用该保存选项,对于包操作的数据,可以维护有关这些数据的历史信息。但是,必须要在您的服务器上安装MetaDataServices,及知识库数据库,而且它们还必须是可操作的。可以跟踪某些列和表,包将这些列和表用作源或目的。也可以使用数据沿袭功能以进行跟踪,查明是包的哪个版本创建了某个特殊的行。可以将这几种类型的信息用于决策支持应用程序。结构化存储文件。使用该保存选项,可以通过网络复制、移动及发送包,而不必将文件存储在SQLServer数据库中。结构化存储格式允许您在单个文件中维护多个包及多个包版本。MicrosoftVisualBasic文件。使用该保存选项,可以通过应用程序开发工具修改DTS包的定义。该选项将包写成VisualBasic代码脚本,并且日后可以在自己的开发环境中打开VisualBasic文件及修改包定义。第十八页,共六十六页,编辑于2023年,星期三18.2.4保存和调度DTS包调度DTS包数据转换服务(DTS)包保存所有的DTS连接、DTS任务、DTS转换以及工作流步骤,并在DTS设计器的设计表中保留这些对象的图形布局。保存DTS包后,单击浏览按钮显示【编辑反复出现的作业调度】对话框,在其中可调度包的执行。如果没有修改调度,默认为每天午夜12:00运行包。如果选择【用复制方法发布目的数据】选项时,DTS导入/导出向导结束运行后将启动创建发布向导。DTS任务设置完毕后,将进行数据传输工作,如图18.10所示,如果在任务执行过程中出现错误,双击出现错误的子任务,查询错误信息。第十九页,共六十六页,编辑于2023年,星期三18.3bcp实用程序bcp是一个在命令提示符下的实用工具,能够将SQLServer数据复制到某个数据文件或从某个数据文件复制数据到SQLServer实例。该实用工具作为解决异构数据问题的方法之一,最常用于将大量数据从其它程序(通常是另一种数据库管理系统)传输到SQLServer表中。数据首先从数据源导出到数据文件,然后使用bcp将数据从该数据文件导入到SQLServer表。另外,bcp还可以将数据从SQLServer实例复制到某个数据文件,其它程序可以从该数据文件中导入数据。例如,若要将所有作者的姓名从pubs数据库的publishers表复制到c:\Publishers.txt文件,并按出版物名称排序,可在命令提示符下执行以下命令:bcp“SELECTpub_id,pub_name,city,state,countryFROMpubs.dbo.authors

ORDERBYpub_name”queryoutc:\Publishers.txt-c-Sservername-Usa–Ppassword数据还可以从视图向外大容量复制。例如,将数据从pubs数据库的视图titleview复制到Titleview.txt数据文件,在命令提示符下执行以下命令:bcppubs.dbo.titleviewouttitleview.txt-c-Sservername-Usa-Ppassword若要将数据从Publishers.txt数据文件大容量复制到pubs数据库的publishers表中,在命令提示符下执行以下命令:bcppubs.dbo.publishersinpublishers.txt-c-t,-Sservername-Usa-Ppassword-k第二十页,共六十六页,编辑于2023年,星期三18.4T-SQL语句

能够实现数据传输功能的Transact-SQL语句有BULKINSERT、SELECT…INTO以及INSERT…SELECT语句,这些语句在SQLServer查询分析器或者应用程序中执行。BULKINSERT能够实现将数据文件中的数据复制到SQLServer数据库。使用SELECT…INTO和INSERT…SELECT能够实现将几个表和视图中数据插入到另外一张表。第二十一页,共六十六页,编辑于2023年,星期三18.4.1使用BULKINSERT语句BULKINSERT语句以Transact-SQL语句而不是命令提示符来实现bcp实用工具的功能。使用BULKINSERT语句,可以将数据从数据文件传送到SQLServer表但不支持将数据从SQLServer实例复制到数据文件。在SQLServer查询分析器中使用BULKINSERT语句实现大容量复制数据:例程18.1:将c:\publishers.txt文件中的数据复制到pubs数据库的Publishers表中BULKINSERTpubs..publishersFROM‘c:\publishers.txt’WITH(DATAFILETYPE=‘char’,FIELDTERMINATOR=‘,’,KEEPNULLS)第二十二页,共六十六页,编辑于2023年,星期三18.4.2使用SELECT…INTO语句

SELECTINTO语句创建一个新表,并用SELECT的结果集填充该表,新表的结构由选择列表中表达式的特性定义。例程18.2:查询Norhtwind数据库中Products表中的数据,然后将结果保存在Pubs数据库的NewProducts表。SELECTProductName,CompanyNameASSuppliers,UnitPriceASPrice,UnitsInStockASStock,UnitsOnOrderINTOPubs.dbo.NewProductsFROMNorthwind.dbo.ProductsASPINNERJOINSuppliersASSONS.SupplierID=P.SupplierID由于SELECTINTO语句能够创建一张新表,因此常用来产生临时表或拷贝表结构。例程18.3,拷贝Employees表的结构到Employees_history表:SELECT*INTOEmployees_historyFROMEmployeesWHEREEmployeeIDISNULLSELECT…INTO可将几个表或视图中的数据组合成一个表,也可用于创建一个包含选自链接服务器的数据的新表。例程18.4:在本地SQLServer(Server1)上建立与远程SQLServer(Server2)的链接服务器后,使用INSERT…SELECT语句将SERVER2的Nortnwind数据库中Employees表的部分数据插入到本地Nortnwind数据库中Employees表。INSERTINTONortnwind.dbo.Employees(Lastname,Firstname)SELECTLastname,FirstnameFROMServer2.Nortnwind.dbo.EmployeesWHERECity=’London’第二十三页,共六十六页,编辑于2023年,星期三18.4.3使用INSERT…SELECT语句INSERT语句中的SELECT子查询可用于将一个或多个其它的表或视图的值添加到表中,使用SELECT子查询可同时插入多行。SELECT子查询的选择列表必须与INSERT语句列的列表和数据类型相匹配。例程18.5:使用的INSERT语句将titles表中数据插入到一个单独的表(MyBooks)中:USEpubsINSERTINTOMyBooks(title_id,title,type)SELECTtitle_id,title,typeFROMtitlesWHEREtype='mod_cook'INSERT...SELECT语句的另一个作用是从SQLServer的外部数据源插入数据。例程18.6:配置链接服务器连接到远程SQLServer(Server3),执行下面的语句:INSERTINTOMyBooks(title_id,title,type)SELECTtitle_id,title,typeFROMServer3.pubs.dbo.titlesWHEREtype='mod_cook'第二十四页,共六十六页,编辑于2023年,星期三18.5复制在企业应用中,随着分布式数据环境建立和变化,不同的部门通常具有自己独立的服务器,其中还可能运行着不同的数据库管理系统。用户需要提高数据的可管理性,增强各个站点之间的数据的连通性、可访问性。复制作为在分布式数据环境分发数据的解决方案,通过将数据分发到整个网络中,可以使更多的用户对其进行访问,降低用户请求时的冲突。第二十五页,共六十六页,编辑于2023年,星期三18.5.1复制的基本概念SQLServer复制是在数据库之间对数据和数据库对象进行复制和分发并且对于数据的修改进行同步,以确保其一致性的一组技术。使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过Internet分发给远程或移动用户。SQLServer还支持与异类数据源之间的相互复制。OLEDB或ODBC数据源可以订阅SQLServer发布的数据。SQLServer还可以接收从很多数据源复制的数据,这些数据源包括MicrosoftExchange、MicrosoftAccess、Oracle和DB2。第二十六页,共六十六页,编辑于2023年,星期三18.5.2复制的功能

SQLServer复制是一项功能强大的技术,可以把一个SQLServer实例上的表、视图和存储过程传输到本地或者远程SQLServer实例以及其他数据源上。使用复制实现在多个实例上创建数据的副本,并且能够自动维护这些数据源与副本中的数据一致性。当多个站点需要为报表应用程序读取相同的数据或需要使用独立的服务器存储数据时,这一点十分有用。复制拉尽了数据与用户的距离,因为数据可以通过网络进行分发,所以可以根据不同商业单位或用户的需求对数据进行分区,还有助于减少因多个用户进行数据修改和查询而引起的冲突。第二十七页,共六十六页,编辑于2023年,星期三18.6复制的模型

SQLServer复制的模型由下列对象组成:发布服务器、分发服务器、订阅服务器、发布、项目和订阅。还有几个负责在发布服务器和订阅服务器之间复制和移动数据的复制进程。它们是快照代理程序、分发代理程序、日志读取器代理程序、队列读取器代理程序和合并代理程序。第二十八页,共六十六页,编辑于2023年,星期三18.6.1服务器角色复制使用发布-订阅模式分发数据,参与复制的服务器根据任务不同可划分为以下角色:发布服务器发布服务器是要复制的数据源所在的服务器。发布服务器把与复制的相关的表或其它数据库对象被组织到“发布”中,“发布”也称为“出版物”。分发服务器分发服务器包含分发数据库,并且存储出版物、历史数据和事务。在复制过程中由分发服务器完成将出版物从发布服务器移动到订阅服务器的过程。订阅服务器订阅服务器接收出版物,保持数据的副本,将发布项目映射到订阅服务器中的表和其它数据库对象,并接收对所有已发布数据的更改,与发布服务器保持同步。一个订阅服务器可以向不同发布的服务器请求的多个订阅。第二十九页,共六十六页,编辑于2023年,星期三18.6.2复制的类型快照复制快照复制可精确地复制数据或数据库对象在任意时刻的状态。快照复制通常被定义为按调度发生。订阅服务器存储发布的数据在上次快照复制时的复本。当数据变化不频繁,或者订阅服务器中的数据已过期,以及要复制的数据量很少时,使用快照复制。使用快照复制时,订阅服务器中的数据修改将被下一次快照复制的数据所改写。事务复制事务复制是将发布服务器上进行的所有修改复制到订阅服务器,实现在发布服务器和订阅服务器间维护事务完整性。在事务复制中,首先通过快照复制使订阅服务器与发布服务器同步,然后当已发布数据被修改时,捕获事务并将其发送到订阅服务器。当必须在数据被修改时对其进行复制,以及发布服务器和订阅服务器通过网络可靠或经常地连接在一起时,使用事务复制。使用事务发布时,如果发布服务器和订阅服务器都对数据进行了更新,那么将以发布服务器的事务为准,改写订阅服务器对数据更改。合并复制合并复制能够对订阅服务器和发布服务器上的数据更改进行跟踪,将更改一起合并到发布服务器,然后通过快照复制使订阅服务器与发布服务器同步。在合并过程中,如果多个订阅服务器修改相同的数据,可能会发生冲突。用户可以设定以发布服务器中的数据为准或者根据优先级高的订阅服务器中的数据为准,来解决合并过程中的冲突。也可以编写自定义冲突解决程序脚本,以处理正确解决复杂冲突情形所需的任何逻辑。当订阅服务器计算机需要独立于发布服务器运行时(例如移动的脱机用户),或者当多个订阅服务器必须更新相同的数据时,使用合并复制。第三十页,共六十六页,编辑于2023年,星期三18.6.3复制代理程序复制代理程序执行许多与复制有关的任务,包括创建数据对象的架构和数据的副本、检查发布服务器或订阅服务器的更新,并传播服务器之间的更改。每个复制代理程序都有一个与它相关的代理配置文件、一些可以设置的代理属性以及代理调度及代理历史记录。快照代理程序快照代理程序将与所有的复制类型一起使用。它准备出版服务器中数据库的表和存储过程的架构,初始化数据文件,把他们存储为出版物,并将出版物插入分发数据库中。分发代理程序分发代理程序将与快照复制和事务复制一起使用。它将快照文件和保存在分发数据库中的增量更改移动到订阅服务器上。对于强制订阅分发代理程序通常在分发服务器运行,请求订阅分发代理程序在订阅服务器运行。合并代理程序合并代理程序与合并复制一起使用。合并代理程序在订阅服务器上应用初始快照,并移动和调节创建初始快照之后发生的增量数据更改。合并代理同时连接发布服务器和订阅服务器并对它们进行更新。日志读取器代理程序日志读取器代理程序将与事务复制一起使用。它将标记为复制的事务从发布服务器的事务日志移动到分发数据库中。每个标记为事务复制的数据库都有一个运行在分发服务器上且连接到发布服务器的日志读取器代理程序。队列读取器代理程序队列读取器代理程序用于快照复制或事务复制(使用排队更新选项),队列读取器代理程序从每个订阅服务器上的SQLServer队列中读取信息,并将这些事务应用于发布。第三十一页,共六十六页,编辑于2023年,星期三18.7配置复制使用SQLServer企业管理器标识复制模型中的发布服务器、分发服务器和订阅服务器。配置复制是标识企业内的发布服务器、分发服务器和订阅服务器的过程,使用用配置发布和分发向导配置发布服务器、分发服务器和订阅服务器以用于复制,并且将来在必要时修改或禁用复制。配置复制的步骤如下:标识分发服务器,在分发服务器上创建分发数据库。配置发布服务器,准备发布的数据。创建订阅,启用接收发布数据的订阅服务器。第三十二页,共六十六页,编辑于2023年,星期三18.7.1复制前的考虑

为了提高执行效率,可以限制订阅服务器获得的所有数据,或仅发布订阅者真正需要的数据或订阅者有权得到的数据。在实现快照复制之前,为快照复制留出充足的磁盘空间。在实现事务复制前,分配足够的日志空间,为分发数据库留有足够的磁盘空间。为每一个表创建主键实现合并复制前移去timestamp列,由于订阅服务器的数据也会传递到出版服务器,应确保数据的完整性在各个订阅服务器上都能够得到保证,维护表之间的关联参照;在所有IDENTITY属性字段上加上NOTFORREPLICATION设置,以保证SQLServer2000在复制代理程序所添加的行上保留起始标识值,但是继续在其他用户所添加的行上增加标识值。当用户将某个新行添加到表时,标识值以通常的方式增加。当复制代理程序将该新行复制到订阅服务器时,在将该行插入到订阅服务器表中时不更改标识值。第三十三页,共六十六页,编辑于2023年,星期三18.7.2配置分发服务器一般说来,复制包括以下几个阶段:配置发布,生成和应用初始快照,修改复制数据以及同步和传播数据。打开SQLServer企业管理器,单击运行向导按钮,展开控制台树的【复制】节点启动【配置发布和分发向导】。分发服务器是快照复制和事务复制的首要组件。分发服务器用于代理程序历史记录和监视。分发服务器可以是与发布服务器不同的独立的服务器,也可以是同一台服务器,如图18.11所示第三十四页,共六十六页,编辑于2023年,星期三18.7.2配置分发服务器复制过程中各代理程序的调度由SQLServerAgent服务管理,应配置SQLServerAgent服务能够在系统启动的时候自动启动,并且在意外停止时能够自动重新启动,由于复制操作跨越多个服务器传输数据,所以SQLServerAgent服务的启动帐号应使用域用户帐号。出版物被复制到分发服务器的“快照文件夹”中。缺省路径为:\\ServerName\C$\ProgramFiles\MicrosoftSQLServer\MSSQL\ReplData。如图18.12所示第三十五页,共六十六页,编辑于2023年,星期三18.7.2配置分发服务器当出版服务器和发行服务器为不同的独立服务器时,管理员必须为快照文件夹指定存取权限,否则发布服务器将不能拷贝出版物到发行服务器,而且订阅服务器将不能读取快照文件夹。如果选择使用SQLServer提供的缺省设置,复制配置向导将完成配置,单击完成按钮,会出现系统正在进行配置的提示画面,等所有设置完成后,分发服务器的配置即结束。配置工作完成后,系统在分发服务器上的创建distribution系统数据库、复制文件夹和复制监视器管理复制。如图18.13所示第三十六页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

在发布服务器和分发服务器配置完毕后创建出版物,出版物是准备发布的表、表中数据的子集或者其他数据库对象的集合,出版物是订阅的单元。打开SQLServer企业管理器,选择发布服务器,然后单击运行向导按钮,展开控制台树的【复制】节点启动【创建发布向导】,选定准备发布的数据库,单击【创建发布】按钮,如图18.14所示。第三十七页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

在【选择发布类型】对话框中,列出了准备实施的复制类型:快照复制、事务复制与合并复制,如图18.15所示。确定要使用的复制类型,单击【下一步】。第三十八页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

在【订阅服务器的类型】对话框选择订阅服务器类型,如图18.16所示。订阅服务器可以是运行SQLServer2000、SQLServer早期版本或其他数据源的服务器。第三十九页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

单击【下一步】,显示【指定项目】对话框,选择要发布对象。发布的项目可以是表中的全部数据或者部分数据,也可以是数据库对象,如存储过程、视图,如图18.17所示。在事务发布中,只允许发布有主键的表。第四十页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

单击【下一步】,设定发布的名称和对该发布的描述,如图18.18所示。第四十一页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

定义发布属性时可以选择接受发布的默认属性,也可以选择定义属性,如筛选数据、启用匿名订阅和设置快照代理程序的调度,如图18.19所示。选择【是,我将定义数据筛选,启用匿名订阅或自定义其它属性】,继续设定发布表中的某些行或列,指定是否允许名订阅,指定使快照是否立即同步到订阅服务器。单击【下一步】显示【筛选数据】对话框。第四十二页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

在【筛选数据】对话框中,选择是否需要“垂直筛选发布”或“水平筛选发布”,如图18.20所示。垂直筛选发布是指挑选表中的特定的列发布,水平筛选发布是指使用Where语句限制发布表中的行。第四十三页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

通过筛选发布数据,如图18.21所示,可以将网络上发送的数据量减到最少,或者根据个别订阅服务器的要求,定制发布项目。由于不同的发布项目可以发送到不同的订阅服务器(不同的订阅服务器不会同时更新同一个数据值),因此可避免或减少冲突。第四十四页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

设定是否允许订阅服务器匿名订阅发布,如图18.22所示。匿名订阅是请求订阅的一种类型,由订阅服务器负责进行同步处理,有关匿名订阅的订阅和订阅服务器的详细信息不保存在发布服务器。第四十五页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

设定快照代理程序调度,指定快照代理程序的何时创建新的出版物,并指定是否立即创建第一个快照,如图18.23所示。第四十六页,共六十六页,编辑于2023年,星期三18.7.3配置发布服务器和创建出版物

单击【下一步】,进入完成发布向导画面,如图18.24所示。用户单击【完成】按钮后,系统开始按照用户在向导中的设定建立出版物,当所有步骤完成后,出版物的配置即结束。第四十七页,共六十六页,编辑于2023年,星期三18.7.4订阅订阅是对发布到指定订阅服务器的数据或数据库对象的请求。一个订阅服务器可以向不同发布请求的多个订阅。订阅可以创建于发布服务器(强制订阅)或订阅服务器(请求订阅)。第四十八页,共六十六页,编辑于2023年,星期三18.7.4订阅强制订阅强制订阅在发布服务器上创建,复制代理程序不经订阅服务器请求即将数据及更新传播给订阅服务器,并且数据更新能够近似实时的移动到订阅服务器。数据更改通常按需或按照反复出现的度强制发布给订阅服务器。强制订阅可以简化和集中订阅管理,不必逐个管理每个订阅服务器。当同步强制订阅时,分发代理程序或合并代理程序运行于分发服务器。打开SQLServer企业管理器,单击运行向导按钮,展开控制台树的【复制】节点启动【创建强制订阅向导】。选择发行服务器上的出版物,单击【强制订阅】,如图18.25所示。第四十九页,共六十六页,编辑于2023年,星期三18.7.4订阅创建强制订阅时,有关订阅和订户的信息存储在发布服务器上,首先在发布服务器的企业管理器中注册的订阅服务器,然后才能创建强制订阅。在【选择订阅服务器】对话框选择已经注册过的服务器名称,单击【下一步】,如图18.26所示。第五十页,共六十六页,编辑于2023年,星期三18.7.4订阅在【选择目的数据库】对话框,指定接受发布的数据库名称,也可以新建数据保存发布,如图18.27所示。第五十一页,共六十六页,编辑于2023年,星期三18.7.4订阅指定分发代理程序程序是连续运行,根据调度运行,还是只按需运行。如图18.28所示,如果选择【连续的】,则分发代理在最短的时间内,把出版物的变化更新到目的数据库。如果选择【使用下列调度】,则用户可以设定分发代理在特定的时刻或按照某一时间间隔更新目的服务器。第五十二页,共六十六页,编辑于2023年,星期三18.7.4订阅配置快照代理程序是否应在订阅服务器上执行初始化工作,以及分发代理程序或合并代理程序是否应自动把初始化数据复制到订阅服务器。如果选择是,那么发布服务器上的发布将立即被复制到订阅服务器,如图18.29所示。如果初始化数据量非常大,网络速度不是很快时,这个过程可能非常慢,而且占用大量网络资源,这时可以不必立即启动快照代理执行初始化过程,而通过调度或手动来完成。第五十三页,共六十六页,编辑于2023年,星期三18.7.4订阅当订阅者建立后,出版服务器上需要自动启动SQLServerAgent服务,如图18.30所示。第五十四页,共六十六页,编辑于2023年,星期三18.7.4订阅进入订阅设置完成画面,单击【完成】按钮,系统开始按用户的设定完成订阅。当所有步骤完成后,强制订阅工作结束,如图18.31所示。第五十五页,共六十六页,编辑于2023年,星期三18.7.4订阅请求订阅请求订阅创建于订阅服务器,订阅服务器可以请求发布服务器上的数据和所做的更新。请求订阅使订阅服务器上的用户得以确定何时对数据更改进行同步处理,该处理可以根据需要或根据调度进行。当发布拥有大量的订阅服务器(例如使用Internet的订阅服务器),并且在分发服务器上运行一个或全部站点上的所有代理程序消耗过多资源时,可采用请求订阅。订阅的管理将发生在订阅服务器上,订户可以是独立或移动的,订阅服务器将确定何时连接到分发服务器和对更改进行同步处理。第五十六页,共六十六页,编辑于2023年,星期三18.7.4订阅在订阅服务器打开SQLServer企业管理器,单击运行向导按钮,展开控制台树的【复制】节点可以启动【创建请求订阅向导】。首先查找发布服务器和想要订阅的出版物,如图18.32所示。第五十七页,共六十六页,编辑于2023年,星期三18.7.4订阅在指定同步代理程序登录画面设定同步代理程序以何种用户的身份登录到分发服务器,如图18.33所示。如果选择【模拟SQLServer代理帐户】则使用订阅服务器上的SQLServer代理程序所使用的Windows身份验证帐户登录到分发服务器。如果选择【使用SQLServer身份验证】,则使用指定SQLServer身份验证登录到分发服务器。

第五十八页,共六十六页,编辑于2023年,星期三18.7.4订阅在创建请求订阅时应指定订阅数据库的名称,指定快照代理程序是否应创建初始快照,以及分发代理程序或合并代理程序是否应将此快照应用于订阅服务器。初始化订阅时要应用的快照文件的位置,快照文件在缺省情况下位于发行服务器的\\ServerName\C$\ProgramFiles\MicrosoftSQLServer\MSSQL\ReplData文件夹。如果在配置分发服务器时没有调整快照文件夹的位置,那么在快照传送画面中选择【使用该发布的默认快照文件夹中的快照文件】,如图18.34所示。第五十九页,共六十六页,编辑于2023年,星期三18.7.4订阅图18.34设置快照传送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论