如何获取知道数据库名称的数据库资源?

How to get DB resource knowing DB name?

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

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

如果你只有数据库的名字,你应该先得到一个目录,因为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,"")