【问题标题】:How to get DB resource knowing DB name?如何获取知道数据库名称的数据库资源?
【发布时间】:2016-01-21 13:21:23
【问题描述】:

我有数据库名称。 我需要获取数据库资源。 如何?我看到的一种选择是执行Config.Databases:List 查询并遍历结果,直到找到所需的名称。之后通过路径打开数据库并获取资源。

【问题讨论】:

    标签: intersystems-cache intersystems


    【解决方案1】:

    如果您只有数据库的名称,您应该在获取目录之前,因为 SYS.Database 仅适用于目录路径。

    set dbName="TEST"
    if ##Class(Config.Databases).Exists(dbName,.dbconfobj) {
      Set dbObj=##class(SYS.Database).%OpenId(dbconfobj.Directory)
      Set resourceName = dbObj.ResourceName
    }
    

    数据库目录也可以这样获取

    if ##Class(Config.Databases).Get("TEST1",.props) {
      write $get(props("Directory"))
    }
    

    或当前命名空间的默认数据库目录

    set directory=$zu(12,"")
    

    【讨论】:

      【解决方案2】:

      您可以使用Set dbObj=##class(SYS.Database).%OpenId("USER") 打开数据库,然后以dbObj.ResourceName 获取数据库资源。 SYS.Database docsConfig.Databases docs

      【讨论】:

      • 在此代码##class(SYS.Database).%OpenId("USER") 中,USER - 不是数据库的名称,它是管理人员的默认路径和默认目录。这里应该定义数据库的完整路径,而不是名称。
      猜你喜欢
      • 2011-10-30
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 2012-04-23
      • 2012-09-27
      • 2020-10-03
      • 2014-03-29
      • 1970-01-01
      相关资源
      最近更新 更多