Xquery。如何检查当前增量备份状态?

Xquery。如何检查当前增量备份状态?,xquery,marklogic,marklogic-8,marklogic-9,Xquery,Marklogic,Marklogic 8,Marklogic 9,我编写了一个Xquery,在增量备份进行时执行。我知道备份状态返回三个可能的值- 已完成、正在进行和失败。不确定最后一个的确切值,但无论如何,这是我的xquery- xquery version "1.0-ml"; declare function local:escape-for-regex ( $arg as xs:string? ) as xs:string { replace($arg, '(\.|\[|\]|\\|\||\-|\^|\$|\

我编写了一个Xquery,在增量备份进行时执行。我知道备份状态返回三个可能的值- 已完成、正在进行和失败。不确定最后一个的确切值,但无论如何,这是我的xquery-

    xquery version "1.0-ml";

declare function local:escape-for-regex
  ( $arg as xs:string? )  as xs:string {

   replace($arg,
           '(\.|\[|\]|\\|\||\-|\^|\$|\?|\*|\+|\{|\}|\(|\))','\\$1')
 } ;

declare function local:substring-before-last
  ( $arg as xs:string? ,
    $delim as xs:string )  as xs:string {

   if (matches($arg, local:escape-for-regex($delim)))
   then replace($arg,
            concat('^(.*)', local:escape-for-regex($delim),'.*'),
            '$1')
   else ''
 } ;

let $server-info := doc("/config/server-info.xml")
let $content-database :="xyzzy"
let $backup-directory:=$server-info/configuration/server-info/backup-directory/text()
let $backup-latest-dateTime := xdmp:filesystem-directory(fn:concat( $backup-directory,'/',$content-database))/dir:entry[1]/dir:filename/text()
let $backup-latest-date := fn:substring-before($backup-latest-dateTime,"-")
let $backup-info := cts:search(/,cts:element-value-query(xs:QName("directory-name"),$backup-latest-date))
let $new-backup := if($backup-info)
                    then fn:false()
                   else fn:true()
let $db-bkp-status := if($new-backup)
                        then (xdmp:database-backup-status(())[./*:forest/*:backup-path[fn:contains(., $backup-latest-dateTime)]][./*:forest/*:incremental-backup eq "false"]/*:status)
                      else (xdmp:database-backup-status(())[./*:forest/*:backup-path[fn:contains(., $backup-latest-dateTime)]][./*:forest/*:incremental-backup eq "true"][./*:forest/*:incremental-backup-path[fn:contains(., fn:replace(local:substring-before-last(xs:string(fn:current-date()), "-"), "-", ""))]]/*:status)

return $db-bkp-status
我们维护一个存储备份状态的配置文件。如果有新的完整备份日,$backup info将不返回任何内容。如果是每日增量备份日,则会返回配置。我使用它只是为了检查今天的备份是新的完整备份还是增量备份。对于增量日,$backup info为false,因此转到最后一行,即else条件。这不会为增量备份返回任何内容。既没有完成也没有进行中。我想知道markLogic是如何获取时间戳的。请在这方面提供帮助

您可以从头开始提供自己的xquery。我可以更新我的。 我甚至取出作业id并在函数xdmp:database backup status的输出中进行搜索,但该作业id也不存在于结果集中。

以提供您试图通过其他方法获取的大部分信息。通常在/opt/MarkLogic/modules/MarkLogic/Admin/Lib中可以找到管理UI模块,其中包含许多有用的代码,可以对这些代码进行修改以获得这些详细信息。在本例中,我将参考database-status-form.xqy

。。。对数据库调用函数,然后从所需元素中提取详细信息:

let $last-full-backup := max($fstats/fs:last-backup)
let $last-incremental-backup : = max($fstats/fs:last-incr-backup
return ($last-full-backup, $last-incremental-backup)
这只是一些示例代码片段,不是可执行的,但它应该能让您朝着正确的方向前进

let $last-full-backup := max($fstats/fs:last-backup)
let $last-incremental-backup : = max($fstats/fs:last-incr-backup
return ($last-full-backup, $last-incremental-backup)