|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这里我们讨论用binlog来实现闪回的方案。包含SQLServer7.0在内的SQLServer系列版本其实不供应XML。撑持开辟职员之前不能不利用一个XML剖析器,如微软的XML剖析器(MSXML),并且它们必需编写本人的代码来处置细节:把分歧的元素从XML文档中提掏出来并按必要把它们放进干系表的分歧部分,然后会见干系表;大概编写代码将数据从数据库表中提掏出来,再以准确的格局放回到XML文档中。当我们在享用XML所带来的优点时,我们常会发明本人在开辟Web使用程序时不能不对付如许的事情,并且在开辟分歧的Web使用程序时仍旧不能不从头编写代码。因而可知,开辟职员真正必要的是一种在数据库中处置XML的一样平常办法而这恰是利用SQLServer2000时所能作到的,即在干系式数据表中存储XML文档,从干系式数据中发生XML文档。
20.3.1从干系式数据中发生XML文档
在SQLServer2000中经由过程利用SELECT语句能够把查询了局存储为XML文档而不是一般意义上的了局集,如许经由过程比本来少很多的编码就能够使Web使用或别的使用间接利用XML文档,从而便利企业与供给商之间的营业交换。
将干系数据库的查询了局显现成XML文档是经由过程FORXML语句来完成的。在利用FORXML语句的同时能够指定XML的MODE(RAW、AUTO、EXPLICIT)和XMLDATA的形式(Schema)。FORXML语句的语律例则为:
FORXMLmode[,XMLDATA][,ELEMENTS][,BINARYBASE64]
各参数的寄义申明以下:
- mode
暗示前往了局集的XMLmode,共有三种取值,即RAW、AUTO、EXPLICIT。
- XMLDATA
暗示将前往XMLDATA形式。
- ELEMENTS
利用该选项时,暗示将响应的干系表列作为XML文档的子元素;不然其将与XML属性相婚配。仅中选用AUTO时才可使用该选项。
- BINARYBASE64
暗示由查询前往的二进制数据以64位编码的情势显现。
1RAW形式
利用RAW形式时查询了局会合的每行都作为XML文档的一个元素,非空列将作为响应的XML文档元素的属性,其属性名与列名坚持分歧。
2AUTO形式
利用AUTO形式时查询了局集作为嵌套XML元素。FROM从句中的每个表名作为XML元素,在SELECT语句中的各列作为XML文档元素的属性。假如利用ELEMENTS选项,则SELECT语句中的各列作为XML文档元素的子元素。
3EXPLICIT形式
在利用EXPLICIT形式时,查询复写器把持由查询前往的了局集所构成的XML文档的格局,元素的嵌套条理。和属性同时必需包管XML文档是良构(wellformed)的,而且具有无效的XML-DATA形式。
20.3.2在干系数据库表中存储XML文档
在实行B2C(贸易到客户)电子商务形式的企业中,客户常常间接在Web页面订购产物付出现金,这些数据一样平常其实不间接存进数据库中而是基于平安性和在一致尺度下数据转换具有高效性的思索而将其存储在XML文档中,然后再存进数据库中。这就必要从XML文档中提取数据信息并将其存进干系数据库中。在SQLServer2000中OPENXML语句供应了在干系数据库表中存储XML文档的功效。
OPENXML是一个行集供应者,与表和视图极其类似。经由过程OPENXML提取XML文档数据与读取干系型行了局集数据一样复杂、高效。在利用OPENXML前必需起首挪用sp_xml_preparedocument体系历程,其次要感化是剖析XML文档,并前往该文档的文件指针。然后该文件指针传给OPENXML,其依据传来的参数将XML文档转换成行了局集。最初经由过程挪用sp_xml_removedocument体系历程来开释由XML文档所占用的内存空间。其详细实行历程请参看0-2。
目前的方案是用mysqlbinlog工具,增加一个Flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。 |
|