复制数据库(1)--网络数据库的复制和同步(5)

2016-02-19 12:55 0 1 收藏

下面图老师小编跟大家分享复制数据库(1)--网络数据库的复制和同步(5),一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

所谓建立数据库复本,实际上就是建立数据库的拷贝。通过数据库复制,每个用户都可以使用数据库中数据的一份拷贝,并可在某个时亥把各个数据库重新组合成宿主数据库,而对宿主数据库的修改都传送到数据库复本。注意,数据库复制功能仅对MicrosoftJet3.5版的数据库有效。
  
  MicrosoftJet数据库引擎不允许用数据库密码来保护复制数据库。在开始使用复本之前,必须先从将要复制的数据库中删去所有数据库密码保护。设置用户权限与复本同步没有冲突。
  
  用DAO复制数据库的一般步骤如下:
  
  (1)识别数据库中不需要复制的对象,并将它们的KeepLocal属性设置为“T”。
  (2)将数据库的Replicable属性设置为“T”,使它变成设计原版。
  (3)用MakeReplica方法从设计原版中生成附加的复本。
  在设置Replicable属性之前,应先确定在转换数据库以前数据库是否已经被复制。
  
  1.保持对象本地化
  
  当把正常的数据库转换为设计原版时,将复制数据库中的所有对象。如果不想把数据中的所有对象都放在复本集中,则可对不想复制的对象添加并设置KeepLocal属性。例如,果数据库中有一个表,在该表中含有机密的工资信息、初始化信息或登录到数据库的用名,则可能希望不把这些信息放到复本中。在这种情况下,可将该表的KeepLocal属性设为“T”,使得复制数据库时,这些信息不被复制。
  
  对于TableDef和QueryDef对象,可以建立keepLocal属性并把它添加到对象的属性集合中。对于由主机应用程序定义的窗体、报表、宏以及模块,可以建立KeepLocal属性并把它添加到表示该对象的Document对象的属性集合中。
  
  注意,在设置keepLocal(以及Rep1icab1e)属性之前,必须先建立它,然后添加到将使用它的对象的属性集合中。如果在建立并添加该属性之前先引用了它,则将产生一个运行时错误。
  
  编写一个Function过程,对数据库中指定的对象进行本地化处理。
  
  FunctionSetKeepLocal(dbsAsDatabase,strCollectionAsString,stffobJectAsString)Asinteger
  DimiAsInteger
  DimblnMatchAsBoolean
  DimtdfAsTableDef
  DimPrPAsProperty
  DimdocAsDocument
  DimqdfAsQueryDef
  OnErrorGoToErrorHandler
  SelectCasestalollection
  Case"FormS","RelpOrtS",''MOdllleS'',''SCriptS`'
  Setdoc=dbs.Containers(strCollection).Documents(strObject)
  Setprp=doc.Createproperty("KeepLocal",dbText,`'T'')
  doc.Properties.Appendprp
  Case"TableDefs"
  Settdf=dbs.TableDefs(strObJect)
  Setprp=tdfCreateproperty(''KeepLocal'',dbText,''T'')
  tdfprol)etties.Appendprp
  Case''QuecyDefs'`
  Setqdf=dbs.QueryDefs(sbrobject)
  Setprp=qdf.Createproperty("KeepLocal",dbText,"T")
  qdf.properties.AppendPrP
  EndSelect
  ErrorHandler:
  SelectCaseErr
  Case0
  case3265'对象未发现
  SetKeepLocal=3265
  ExitFunction
  
  '属性已经存在,把它设置为“T”
  
  Case3367
  SelectCasesttoollection
  CSSel''Forms'',''RelportS'',``Modlules'',''ScriptS'`
  doc.Properties(''KeepLocal'`).Value=`'T'`
  Case''TableDefs'`
  tdf.Properties(''KeepLocal'').Value=`'T'`
  Case''QueryDefs'`
  qdf.Properties(''KeepLocal'').Value=''T'`
  ExitFunction
  EndSelect
  SetKeepLocal=0
  ExitFunction
  CaseElse
  MsgBOx''Error''&Err&":",&Error,vbOKOnly
  SetKeepLocal=-1
  ExitFunction
  EndSelect
  EndFunction
  
  用上述过程可以对指定数据库对象建立并添加KeepLocal属性,如果该属性已经存在,则将产生代码为3367的错误,在这种情况下,将在错误处理程序中把该属性的值设置为“T”
  
  该过程有3个参数,其中第一个参数是Database对象,第二个参数是集合的名字,第三个参数是数据库中的对象名。过程的返回值是一个整型数,它实际上是一个错误代码。为了调用上面的过程,可以在窗体上画一个命令按钮,然后编写如下的事件过程:
  
  PrivateSubCommand1_Click()
  DimMyDbAsDatabase
  DimaAsinteger
  SetMyDb=OpenDatabase(''c:dbdirdb1.mdb'')
  a=SetKeepLocal(MyDb,''TableDefs'',''Tabel1'')
  Ifa=0Then
  MsgBox"已成功设置KeepLocal属性"
  Elselfa=3265Then
  MsgBox"对象未找到"
  Elselfa=3367Then
  MsgBox"KeepLocal属性已存在,设置为“T”
  Else
  MsgBox“出错”
  Endlf
  Endsub
  
  该事件过程调用SetKeepLocal过程,用来建立并设置数据库db1.mdb的TableDefs集合中Tabel1对象的KeepLocal属性。
  
  如果已经在数据库的两个表之间建立起关系,则必须将两个表的keepLocal属性设置为相同的值,即两个表都必须是本地的或者是可复制的。如果两个表的keepLocal属性设置不一样,则转换将会失败。但是应注意,不能在关系有效时设置keepLocal属性,也就是说,在设置属性之前,应先删除两个表之间的关系,在设置好KeepLocal属性之后再恢复两个表之间的关系,然后继续进行数据库转换。
  
  如果正在设置KeepLocal属性的对象已经从其它对象中继承了该属性,则由其它对象设置的值对保留为本地对象的操作没有影响,必须直接为每个对象设置keepLocal属性。->

来源:https://www.tulaoshi.com/n/20160219/1602463.html

延伸阅读
正在看的ORACLE教程是:Oracle数据库集复制方法浅议。前言 日益增长的分布式应用需求要求实现更好分布式的软件环境,不断推动着分布式技术的进步。Oracle数据复制是实现分布式数据环境的一种技术,通过在不同的物理站点拷贝数据来建立分布式数据环境。它与分布式数据库不同,在分布式数据库中,虽然每个数据对象也对所有的站点可用,但是特...
在Internet上运作数据库经常会有这样的需求:把遍布全国各城市相似的数据库应用统一起来,一个节点的数据改变不仅体现在本地,还反映到远端。复制技术给用户提供了一种快速访问共享数据的办法。 一、实现数据库复制的前提条件 1、数据库支持高级复制功能 您可以用system身份登录数据库,查看v$option视图,如果其中Advanced...
那些对Access数据库无经验的开发人员,他们常常不知道改变复制为对象设计,而不是数据表,那样会引起一些问题。这是令人失望的,首先, 因为复制似乎是分布完整的Access应用程序的最好途径,毕竟,Microsoft是支持它的。 问题是,Jet的复制是设计有数据表的。这是因为Jet复制主要是用于Visual Basic应用程序的,在那里,只有数据可以被存储在*...
标签: SQLServer
  为SQL Server在WinSock上定义协议的步骤如下: 1. 在”启动”菜单上,指向”程序/Microsoft Proxy Server”,然后点击”Microsoft Management Console”。 2. 展开”Internet Information Service”,再展开运行Proxy Server的服务器。 3. 右击WinSock Proxy service, 再点击属性。 4. 在WinSock Proxy Service Properties For computern...
假如把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。所以我最近找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。我从收到的130 个反馈中精选了其...

经验教程

71

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部