【发布时间】:2016-01-21 13:21:23
【问题描述】:
我有数据库名称。
我需要获取数据库资源。
如何?我看到的一种选择是执行Config.Databases:List 查询并遍历结果,直到找到所需的名称。之后通过路径打开数据库并获取资源。
【问题讨论】:
标签: intersystems-cache intersystems
我有数据库名称。
我需要获取数据库资源。
如何?我看到的一种选择是执行Config.Databases:List 查询并遍历结果,直到找到所需的名称。之后通过路径打开数据库并获取资源。
【问题讨论】:
标签: intersystems-cache intersystems
如果您只有数据库的名称,您应该在获取目录之前,因为 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,"")
【讨论】:
您可以使用Set dbObj=##class(SYS.Database).%OpenId("USER") 打开数据库,然后以dbObj.ResourceName 获取数据库资源。 SYS.Database docs 和 Config.Databases docs。
【讨论】:
##class(SYS.Database).%OpenId("USER") 中,USER - 不是数据库的名称,它是管理人员的默认路径和默认目录。这里应该定义数据库的完整路径,而不是名称。