如何找出当前 InterSystems IRIS 命名空间中数据的数据库名称?

How can I figure out the name of the database for data in the current InterSystems IRIS Namespace?

InterSystems IRIS 命名空间可以引用我们拥有代码和数据的一个数据库。但是在生产部署的情况下,最佳实践是一个数据库用于代码,一个数据库用于数据。如何知道当前命名空间中数据的数据库名称?

########## 输入者 Yaron Munz · 2018 年 11 月 14 日。

要获取有关命名空间的信息,您可以使用此代码(运行它仅在 %sys" 命名空间中):

一个 属性 变量通过引用传递(即,它必须指向开头):

%SYS> S Status=##Class(Config.Namespaces).Get("user", .Properties)

%SYS> zw Properties

Properties("Globals")="USER"
Properties("Library")="CACHELIB"
Properties("Routines")="USER"
Properties("SysGlobals")="CACHESYS"
Properties("SysRoutines")="CACHESYS"
Properties("TempGlobals")="CACHETEMP"

########## 输入者 John Murray · 2018 年 11 月 14 日。

%SYS.Namespace 的 GetGlobalDest 方法在回答您的问题时很有用,它不需要切换到 %SYS。

对于 #1,询问它 ^ROUTINE 映射到哪里。
对于 #2,不要指定任何全局名称。
对于 #3,将全局结果与 #2 的结果进行比较。

我之前写过 this method here