企业营销型网站推广方法,网站建设建设多少钱,做管理信息的网站,微商软件数据库复本--网络数据库的复制和同步#xff08;1#xff09; 数据库复本是复制数据库的技术,利用这种技术,可以是数据库的几个拷贝保持同步。数据库的每个拷贝称为一个复本#xff0c;并且每个复本都包含一个公共的表、查询、窗体、报表、宏和模块的集合#xff1b;每个复…数据库复本--网络数据库的复制和同步1 数据库复本是复制数据库的技术,利用这种技术,可以是数据库的几个拷贝保持同步。数据库的每个拷贝称为一个复本并且每个复本都包含一个公共的表、查询、窗体、报表、宏和模块的集合每个复本还可以包含只在本地计算机上使用的本地对象。 在多用户环境中一个数据库可能由多个用户使用。在多用户应用程序中数据库复本可以改善用户共享数据库的途径。用数据库复本可以重新产生一个数据库使两个或多个用户同时使用自己的数据库复本。尽管各个复本放置在不同的计算机上但它们是保持同步的。 数据库复本及其拓扑结构 一个数据库的两个或多个以上的复本组成一个复本集每个复本都是复本集的一部分。在复本集中含有数据库的若干复本和设计原版Design Master其中设计原版是唯一能够对数据库进行设计修改的复本。同一个复本集中的复本可以相互交换数据后复制对象的更新这种交换称为同步。 1数据库复本的用途 按照传统的做法在多用户数据库应用程序中通常将表从数据库的其它对象中分离出来使得数据能够驻留在网络服务器上而查询、窗体、报表、宏以及模块则驻留在用户的计算机上。当需要检索或更新数据库中的信息时必须先登录到网络上然后打开计算机上的数据库再打开服务器上相应的数据库。如果使用数据库复本技术则可以建立既包含数据又包含对象的单一数据库。 在下列情况下应该使用数据库复本 1需要在各办公室中共享数据。可以用数据库复本建立一个单位的数据库的拷贝然后将其发送给每个相关的办公室。用户在每个办公室把数据输入到自己的复本中并使所有的远程复本都与单位的复本同步。下属的各级复本能够维护本地表在该表中含有其它复本中的信息。 2需要在分散的用户之间共享数据。各终端用户在办公室以外输入到数据库中的新信息可以在终端与单位的网络建立起电子连接的任何时候被同步。在日常工作中终端用户可以拨入网络使复本同步使用数据库的当前最新版本。由于在同步期间只传输新增的更改因此可以便维持数据更新所花费的时间和费用减到最小。此外也可使用部分复本partia1 replicas只同步部分数据。 3需要提高服务器数据的可访问性。如果应用程序不需要立即更新数据则可以在主服务器上用数据库复本来减少网络加载。而用服务器本身的数据库拷贝来引入第二服务器则可以改善响应时间。 4需要发布应用程序的更新。复制应用程序时不仅自动复制表中的数据还要复制应用程序的对象。如果对数据库的设计作了更改则Microsoft Jet数据库引擎将在下一次同步期间传输这些更改不必发布软件的新版本。 5需要防止全部数据遗失。数据库复本发布跨越多个数据库的数据因此当原始数据库被破坏时可以用复本数据库中的某个数据库来恢复数据。 虽然数据库复本可以解决分布式数据库处理中固有的许多问题但是在下列情况下复本仍然达不到理想要求 1.需要更新多个复本中的大量记录。对于那些需要对不同复本中的现存记录进行频繁更新的应用程序可能会比简单地往数据库中插入新记录的应用程序产生更多的记录冲突。当位于不同地点的用户同时对同一个记录进行修改时将会发生记录冲突。应用程序的记录冲突越多需要的处理时间就越多因为这些冲突只能通过手工解决。 2.对数据一致性的要求非常严格。对于诸如资金过户、航班机票的预订以及包裹装运的跟踪之类的事务处理应用程序要求ffnu时候的信息不能有半点差错。如果能在一个复本内处理事务就不要在几个复本中处理。在同步期间各复本间交换的信息是事务的结果而不是事务本身。 2复本集拓朴结构 复本集拓扑结构定xT复本集中各复本间的通信以及tonp同步的逻辑。复本集的拓扑结构可以有各种不同的形式但是对大多数的应用程序来说较好的拓扑结构有两种即星型结构和完全连接结构如图所示。 星型 完全连接 星型拓扑结构有一个集线器Hub该集线器定期与每个卫星复本同步。在这种拓扑结构中所有数据通过单个集中化数据库在各复本之间共享。由于数据在与其它复本同步时至多只需两步“跳跃”所以星型拓扑结构可以降低数据在各复本中的等待时间。 在同步期间如果交换的平均数据量相对较小则对大多数应用程序来说星型拓扑结构可能是最有效的解决方案。它的实现相当简单而且既有效又可靠。如果是第一次实现复本则最好使用星型拓扑结构。 如果把星型拓扑结构中的每个复本都变成一个集线器Hub就可以变为完全连接的拓扑结构。在完全连接的拓扑结构中每个复本与复本集中的其它所有复本同步。完全拓扑结构一个最重要的好处是数据传播的等待时间小。因为每个复本与其它所有复本同步数据可以直接发送给所有复本而不必经过一系列复本来间接传播。 复本操作的对象、属性和方法(1)--网络数据库的复制和同步2 与复本操作有关的对象、属性和方法 为了实现复本燥乍 Microsoft Jet数据库引擎提供了多个对象、属性和方法。在这一节中将介绍与复本操作有关的对象、属性和方法。 1Document对象和Documents集合 Document对象含有关于对象的一个实例的信息对象可以是一个数据库、表、查询或关系仅用于Microsoft Jet数据库。 每个Container对象有一个包含Document对象的Documents集合其关系详见VB的帮助文件这些Document对象描述由Container指定类型的内置对象的实例。表1 列出了Document所描述的对象的类型、其Container对象的名称及Document包含信息的类型。 Document container 包含的信息 数据库 数据库 保存的数据库 表或查询 表或查询 保存的表或查询 关系 关系 保存的关系 表1 用Document对象可以实现下列操作 ·用Name属性返回由用户或Microsoft Jet数据库引擎在建立对象时给对象所取的名字。 ·用Container属性返回包含Document对象的Container对象的名称。 ·用Owner属性设置或返回对象的拥有者。为了设置owner属性用户必须有对Document对象的写权限并且必须把userName属性设置为一个现有的user或Group对象的名称。 ·用UserName属性或Permissions属性设置或返回一个用户或组对象的访问权限。为了设置这些属性用户必须有对Document对象的写权限并且必须把userName属性设置为一个现有的User或GrOup对象的名称。 ·用DateCreated属性和LasUpdated属性分别返回建立Document对象和最后修改Document对象的日期和时间。 由于一个Document对象对应于一个现有的对象因此用户不能建立新的Document对象或者删除现有的Document对象。一个Documents集合含有多个Document对象。可以通过以下几种格式引用一个Document对象 Documents0 DocumentsName” Documents[name] 2container对象和Containers集合 Contalner对象把相似类型的Document对象放在一个组中。每个Database对象含有由内部container对象组成的Containers集合。应用程序可以定自己的文档类型和相应的容器仅对Microsoft Jet数据库但这些对象不一定总是通过DAO支持。某些Container对象由Microsoft Jet数据库引擎定义也可以由其它应用程序定义。由Microsoft Jet数据库引擎定义的Container对象及其所包含的信息见表2 Container对象 包含的信息 数据库 保存的数据库 表 保存的表及查询 关系 保存的关系 表2 说明 1.)每个Container对象含有由Document对象组成的Documents集合通常用Container对象作为到Document对象中信息的直接链接也可以用container集合为给定类型的Document对象设置安全性。 2.用Container对象可以实现以下操作 ·用Name属性返回Container对象的预定义名称。 ·用Permissions和UserName属性来设置container对象的权限在Container对象的Documents集合中建立Document对象来继承这些访问权限设置。 ·用owner属性设置或返回Container对象的所有者。为了设置Ower属性必须写入Container对象的权限并把属性设置为现有user或Group对象的名称。 3Container对象是由系统预定的因此不能建立新的container对象也不能删除现有的Container对象。 4可以通过顺序号或Name属性设置或引用集合中的container对象例如 Containers0 Containers”name” Containers![Name] 【例】编写程序列出Tables容器中的Documents集合。 在窗体上画一个命令按钮然后编写如下的事件过程: Private Sub Command1_Click() Dim dbsnorthwind As Database Dim docloop As Document Dim prploop As Property Set dbsnorthwind OpenDatabase(e:\f.mdb) With dbsnorthwind.Containers!tables Debug.Print documents in .Name container 注释列出Table容器中的Documents集合 For Each docloop In .Documents Debug.Print docloop.Name Next docloop End with dbsnorthwind.close End sub 该过程列出f.mdb数据库Table容器中的Documents集合。程序运行后单击命令按钮即可在“立即”窗口中列出该集合。 复本操作的对象、属性和方法(2)--网络数据库的复制和同步3 3property对象与Properties集合 Property对象用来描述一个DAO对象的内部属性或用户定义属性与DAO对象及Properties集合的关系为DAO对象包含Properties集合Properties集合包含property对象。其关系详见VB帮助文件 除Connection和Error对象外每个DAO对象都含有一个property集合在该集合中有与相应的DAO对象的内部属性一致的Property对象。同时用户可以定义Property对象并将其加入某些下列DAO对象的Properties集合 ·Database Index QueryDef和TableDef对象 ·TableDef对象和QueryDef对象的Fields集合中的Field对象 Property有4个预定义的属性 ·Name属性是一个字符串属性的唯一标识。 ·Type属性是一个整型数Integer用来指定属性的数据类型。 ·Value属性是一个包含属性设置的Variant类型的值。 ·Inherited属性是一个Boolean值用来指示属性是否从另一个对象继承而来。 Property对象既有预定义的属性也有用户定义的属性在引用时其格式是不一样的。顶定义属性的引用格式为 对象.属性 而用户定义的属性必须采用下面的引用格式 对象.Properties“属性” 【例】编写程序列出Tables容器中的Documents集合然后列出集合中的第一个Document对象的Properties集合。 在窗体上画一个命令按钮然后编写如下事件过程 Private Sub Command1_Click() Dim dbsnorthwind As Database Dim docloop As Document Dim prploop As Property Set dbsnorthwind OpenDatabase(e:\f.mdb) With dbsnorthwind.Containers!tables Debug.Print documents in .Name container For Each docloop In .Documents Debug.Print docloop.Name Next docloop With .Documents(0) Debug.Print properties of .Name document On Error Resume Next For Each prploop In .Properties Debug.Print prploop.Name prploop Next prploop On Error GoTo 0 End With End With dbsnorthwind.Close End Sub 程序的前半部分与前面的例子相同后半部分列出第一个Document对象即Documents(0) 的 Properties集合。运行程序单击命令按钮即可在“立即”窗口中列出上述内容。 用户定义的属性通过CreateProperty方法来定义用该方法可以建立由用户定义的Property对象仅Microsoft Jet 工作区用于DatabaseDocumentFieldIndexQueryDef和TableDef对象。其格式为 set property对象.CreatePropertynametypevalue,DDL 各参数的含义如下 ·property对象变量要建立的Property对象。 ·Object对象变量可以是DatabaseFieldIndexQueryDef和TableDef对象可以对这些对象建立Property对象。 ·name 可选。 variant类型字符串子型唯一地命名新的Property对象。 ·type 可选。 常数定义新Property对象的类型。 ·value可选。 variant类型指定属性的初值。 ·DDL 可选。 Variant类型Boolean子型用来指示该属性是否是一个DDl对象缺省值为False。如果DDL为True则不能删除这个property 对象除非得到 dbsecWriteDef的允许。 说明 1.只能在一个永久对象的Property集合中建立用户定义的Property对象。在用CreateProperty 方法建立Property对象时如果省略了一个或多个可选参数则可在向一个集合追加新的对象之前用赋值语句设置或重新设置相应的属性。在向集合中追加新的对象之后可以改变其属性设置的一部分不是全部。 2.如果name参数指的是该集合中已经存在的对象成员则当用Append方法追加时将会出现错误。 3.为了从集合中删除一个由用户定义的属性对象可以用集合的Delete方法来实现。该方法只能删除用户定义的对象不能删除预定义属性。 4.如果省略了DDL参数则缺省为False 即非DDL。在这种情况下没有出现相应的DDL属性,如果需要将一个Property对象由DDL变为DDL则必须先删除然后再重新建立。 5.CreateProperty方法中的type参数是一个符号常量它是Property对象的设置值或返回值其可能的取值见表3 type参数的取值 常数 类型 常数 类型 dbBigInt Big整型数 dbGUID GUID dbBinary 二进制 dbInteger 整型数 dbBoolean 布尔值 dbLong 长整型数 dbByte 字节 dbLongBinary 长二进制OEL对象 dbChar 字符 dbMemo Memo dbCurrency 货币 dbNumeric 数值 dbDate 日期/时间 dbsingle 单精度 dbDecimal 十进制 dbText 文本 dbDouble 双精度 dbTime 时间 dbFloat 浮点数 dbTimeStamp TimeStamp dbVarBinary VarBinary (表3) 设MyDB是一个Database对象变量MyPro是一个Property对象变量则可以用下面的程序建立Property对象 set MyProMyDB.createProperty() MyPro.NameNewDefined MyPro.TypedbText MyPro.Value这是一个用户定义的属性 可以用下面的语句把新建立的属性加到Properties集合中 MyDB.Properties.Append prpNew 【例】编写程序建立用户定义的Property对象并把它加到Properties集合中。在窗体上画一个命令按钮然后编写如下的事件过程。 Private Sub Command1_Click() Dim dbsnorthwind As Database Dim prpnew As Property Dim prploop As Property Set dbsnorthwind OpenDatabase(e:\f.mdb) With dbsnorthwind 注释建立并添加用户定义的属性 Set prpnew .CreateProperty() prpnew.Name userdefinednew prpnew.Type dbText prpnew.Value this is a user_definednew property. .Properties.Append prpnew 注释列出当前数据库的所有属性 Debug.Print properties of .Name For Each prploop In .Properties With prploop Debug.Print Name Debug.Print type: .Type Debug.Print inherited: .Inherited End With Next prploop End With End Sub 上述程序建立了一个名为userdefinednew的属性其类型为dbText初值为“this is a user_definednew property。”运行程序单击按钮将建立该属性并在立即窗口中显示当前数据库的所有属性。包括新建立的属性 /*********************************************************手工建库、表等并录下SQL语句在程序中执行相应语句即可 转载于:https://www.cnblogs.com/wlq2000/archive/2006/04/26/385789.html