InterSystems公式 Megumi Kakechi · 3月29日 2m read

インターシステムズは、InterSystems IRIS® data platformInterSystems IRIS® for HealthTMHealthShare® Health Connect のメンテナンスバージョン 2023.1.7 をリリースしました。

 より良い製品を共に作り上げるため、アイデアポータル  の「Post-Release Feedback」カテゴリでご意見をお寄せください。


ドキュメント

変更点の詳細と、アップグレードチェックリストは以下のリンクからご覧いただけます。(すべて英語)


早期アクセスプログラム(EAPs)について

現在、多くの早期アクセスプログラムをご提供しております。 こちらの ページ からご興味のあるプログラムにお申込みいただけます。


キットの入手方法

InterSystems IRIS と InterSystems IRIS for Health の通常インストーラパッケージ形式のキットは WRC Direct の IRIS ダウンロードページから、HealthShare Health Connect のキットは HealthShare ダウンロードページ からそれぞれ入手してください。

0
0 22
InterSystems公式 Megumi Kakechi · 3月24日 3m read

概要

警告 ID 影響を受ける製品とバージョン リスクカテゴリー & スコア 発生条件
DP-449126 InterSystems IRIS® data platform 
InterSystems IRIS® for Health 
InterSystems Health Connect™ 
versions 2024.1.0 – 2024.1.5, 2024.2.0, 2024.3.0, 2025.1.0 – 2025.1.3, 2025.2.0, 2025.3.0
データ整合性  低リスク CSP セッションイベント用のカスタムロジックの一部として実行されるデータベース更新が、ジャーナリングされない可能性があります。
 

発生する問題

カスタムロジック内でのグローバルのSetおよびKillがジャーナルに記録されない問題を修正しました。修正対象となったカスタムロジックは、%CSP.SessionEvents のサブクラスを介して実装された CSP セッションイベント用に実行されるカスタムロジックです。

この問題は、カスタムロジックがミラーリングされたデータベースに対して行ったSetおよびKillでは発生しません。この条件下では、操作は通常どおりジャーナリングされます。

根本原因は、当該ロジックを実行するデーモンプロセスがプロセスごとのジャーナリング状態を、起動元プロセスから受け継いでいることにあります。

0
0 25
記事 Megumi Kakechi · 3月13日 3m read

これは InterSystems FAQ サイトの記事です。
通常、フォームデータを受け取りたい場合は、CSPと同様に %request.Get() で受け取れます。

URLパラメータで、?name=123 のようにリクエストする場合も、同様に%request.Get(“name”) で受け取れます。
 

ファイルの場合は、%request.MimeDataで取得できます

例:

  set%request.MimeData


HTMLやPostmanなどで、通常のテキストデータをフォームデータとして送る場合も、%request.Get() で受け取れます。

例:

"name"


ただ同じフォームデータを送る場合でも、例えばPowerShellで以下のように Invoke-RestMethod コマンドを利用して、ファイルを含む Form データをを送る場合、"txt" や "name" など一緒に送るパラメータもStreamデータとして送られます。

Invoke-RestMethod -Uri 


その場合は、以下のように取得できます。

例:

"name"
0
0 29
記事 Megumi Kakechi · 2月25日 5m read

これは InterSystems FAQ サイトの記事です。
こちらの記事では、ミラー環境をメジャーバージョン(例:2024.1.0 -> 2025.1.1)にアップグレードする際の手順についてご説明します。

こちらの手順は、「ミラー環境アップグレード時に計画的なダウンタイムを伴う」ことを前提とした手順になります。
こちらのドキュメント にあるイメージの、「 Procedure 2: Major Version Upgrades with Planned Downtime」の手順です。

 

【注意1】
ミラーを構成するすべてのフェイルオーバーおよび DR 非同期メンバーは、同じバージョンの InterSystems IRIS である必要があります。異なるバージョンが許容されるのは、アップグレード中のみです。
アップグレードしたメンバーがプライマリメンバーになると、アップグレードが完了するまで、他のフェイルオーバーメンバーおよび DR 非同期メンバーは使用できません。
 
【注意2】
InterSystems IRIS for Health および Health Connect でミラーリングを構成する場合は、HSSYSを必ずミラーリングするようにしてください。また、アップグレードは2024.1以降のバージョンへ行うようにしてください。

0
0 45
記事 Megumi Kakechi · 2月15日 4m read

これは InterSystems FAQ サイトの記事です。
こちらの記事では、ミラー環境をメンテナンスリリースバージョン(例:2025.1.0 -> 2025.1.1)にアップグレードする際の手順についてご説明します。

脆弱性の問題の対応などで、最新メンテナンスリリースバージョンへのアップグレードが必要な場合はこちらの方法をご使用ください。

こちらの手順は、「ミラー環境アップグレード中にアプリケーションの変更を伴わない」ことを前提とした手順になります。
こちらのドキュメント にある以下のイメージの、「 Procedure 1: Maintenance Release Upgrades with No Application Changes」の手順です。
※ ミラーが使用できなくなるのは、計画的フェイルオーバーの実行時間のみです。

 
【注意1】
InterSystems IRIS for Health および Health Connect でミラーリングを構成する場合は、HSSYSを必ずミラーリングするようにしてください。また、アップグレードは2024.1以降のバージョンへ行うようにしてください。
【注意2】
ミラーリング構成のInterSystems IRISでは、ジャーナルファイルの互換性を保つため、バックアップメンバーを先に、プライマリを後にアップグレードする必要があります。

0
0 53
記事 Megumi Kakechi · 1月30日 9m read

これは InterSystems FAQ サイトの記事です。
^SystemPerformance ユーティリティ (旧:^pButtons)  を使用すると、 InterSystems製品が稼働するプラットフォームに関する詳細なパフォーマンス・データを収集することができます。
収集できるのは以下の情報になります。

・IRIS の設定:構成、ドライブの割り当てなど 
mgstat:IRISのパフォーマンスメトリック(グローバル参照や物理読み込み、など)
・オペレーティングシステムのリソースとパフォーマンスに関するメトリック
 ※Unixの場合は vmstatとiostat、Windowsの場合は パフォーマンスモニター
・その他の有用なメトリック

こちらの記事では、^SystemPerformanceツール(旧:^pButtons)の実行方法と、出力情報の利用方法についてご紹介します。


【実行方法】

※^SystemPerformance の実行にはオペレーティングシステムの管理者権限が必要です。
管理者としてシステムにログインしてから実行してください。特にWindowsで UAC(User Access Control)が有効になっている場合は特別な実行方法が必要になります。詳しくは こちらIMPORTANT: の箇所)をご確認ください。

0
1 71
記事 Megumi Kakechi · 1月23日 2m read

これは InterSystems FAQ サイトの記事です。
こちらの記事では、データベースサイズを拡張する方法をご紹介します。


1.今すぐ拡張したい場合

2.空き容量がなくなったときに、拡張するサイズを設定したい場合



1.今すぐ拡張したい場合

管理ポータル、またはコマンドで、拡張したいサイズにデータベースサイズを指定します。

管理ポータル:
[システム管理] > [構成] > [システム構成] > [ローカルデータベース]

対象のデータベースを選択し、データベース属性のダイアログで、「現在」に拡張したいサイズ(拡張後のサイズ)を指定します。
保存クリック後、即座にデータベースは拡張されます。

上記例は、もともと11MBだったサイズを50MBに拡張、つまり39MB拡張したため、messages.logには以下のようなログが記録されます。

08/04/25-11:27:01:333 (3468) 0 [Database.StartExpansion] Starting Expansion for database c:\intersystems\iris\mgr\user\. 39 MB requested.
08/04/25-11:27:01:424 (3468) 0 [Database.FullExpansion] Expansion completed for database c:\intersystems\iris\mgr\user\. Expanded by 39 MB.
0
0 50
記事 Megumi Kakechi · 1月12日 4m read

これは InterSystems FAQ サイトの記事です。
こちらのトピックでは、ミラー環境でECPを行う場合の設定方法注意すべき点について、ご案内します。

【設定方法】

手順は以下になります。


(1) 両方のフェイルオーバーメンバおよび任意の DR 非同期メンバで、ECPを有効にします

(2) ECP アプリケーションサーバ(ECPクライアント)で、ECPの設定を行います

(3) ECP アプリケーションサーバ(ECPクライアント)で、リモートデータベースの作成を行います

(4) 動作確認&リダイレクトのテストを行います


今回作成するECP構成は、ドキュメントにある以下のイメージの赤丸のインスタンスによる構成になります。

A:プライマリ・
フェイルオーバーメンバ
B:バックアップ・
フェイルオーバーメンバ
C:DR非同期 ECPアプリケーションサーバ
(クライアント)
ミラー名 TESTMIRROR TESTMIRROR TESTMIRROR
ミラーメンバ名 MACHINEA MACHINEB MACHINEC
IPアドレス 10.0.0.244 10.0.0.151 10.0.0.60 10.0.0.
0
0 47
記事 Megumi Kakechi · 1月9日 5m read

これは InterSystems FAQ サイトの記事です。
ミラーの現在の状態は、管理ポータルのミラーモニタで確認できます。

こちらのトピックでは、それらの情報をコマンドで確認する方法をご紹介します。


(1) フェイルオーバメンバ(プライマリ・バックアップ)の状態を確認する

(2) 非同期メンバの状態を確認する

(3) ISCAgentの状態を確認する

(4) 定期的にミラーステータスを取得するサンプル(ツール)のご紹介


では、以下のようなミラーの状態を確認してみます(以下はフェイルオーバーメンバ・プライマリの状態)。


 

(1) フェイルオーバメンバ(プライマリ・バックアップ)の状態を確認する

フェイルオーバメンバのミラーの状態は、SYS.Mirror クラスの GetFailoverMemberStatus メソッドで確認できます。
結果は出力引数に$list形式で返されます。詳細はクラスリファレンスをご覧ください。

   例)
    プライマリ、バックアップともActiveな状態

// フェイルオーバーメンバ(プライマリまたはバックアップ)で確認// 以下はプライマリで実行した例%SYS


1.1) 自ノードがプライマリメンバーの場合、$list() の4番目に返される Status値には以下のような状態が返ります。

 Active
 Restart
 Trouble
 Failover
 Recovery
 Deciding
 Exit
 Inactive
0
0 74
記事 Megumi Kakechi · 2025年12月16日 2m read

これは InterSystems FAQ サイトの記事です。
こちらの記事では、コマンド・パイプデバイスを使用して、外部コマンドの出力を取得する方法をご紹介します。

以下のように行います。
★コマンド出力を取得する例:

USER>killset


★コマンドのエラー出力を取得する例:

USER>##class


詳細は以下のドキュメントをご覧ください。
コマンド・パイプ デバイスを使用する方法について


enlightened【ご参考】
$ZF(-100) で実行したコマンドの結果をファイルに出力する方法

0
0 63
記事 Megumi Kakechi · 2025年12月9日 7m read

これは InterSystems FAQ サイトの記事です。
この記事では、ミラーリングの構成方法をご紹介します。

2025.1のバージョンより、既存のミラーリングされたデータベースをミラーメンバーに追加する際、「ミラーメンバーからの自動データベースダウンロード」が可能となりました。
以前のバージョンでは、手動でのバックアップとリストアを行っていましたが(もしくはIRIS.datのコピー)、この機能を使用するとデータベース作成時に、別のミラーメンバーから自動的にダウンロードされます。大変便利な機能なので、ぜひお試しください。
※ こちらの問題 があるため、「自動データベースダウンロード」機能は最新バージョン 2025.1.2~ でお試しください。​​​​​


本記事では、「自動ダウンロード」の機能についても、あわせてご紹介します。
では、ミラーの構成手順をご紹介します。
今回ご紹介するのは、同期ミラーによるフェールオーバー(常にデータベースが同期されて複製、障害時に自動でフェールオーバー)構成です。
手順は以下になります。


0
0 103
InterSystems公式 Megumi Kakechi · 2025年11月20日

インターシステムズは InterSystems IRIS®InterSystems IRIS® for HealthTMHealthShare® Health Connect のバージョン 2025.3 をリリースしました。
2025.3 は Continuous Delivery(CD)リリースです。
 

【リリースハイライト】
Secure Wallet(セキュアウォレット)
  IRISSECURITY データベース上に構築された、新しい暗号化フレームワークで、機密データ管理を強化し、システムのセキュリティとアクセス制御を向上しました。

拡張されたオブザーバビリティとクラウド連携
  OpenTelemetry メトリクスが強化され、新たにプロセスおよび ECP メトリクスを追加しました。さらに、ジャーナルアーカイブが Azure Blob Storage に対応し、コスト効率の高い保管が可能になりました。

データ & AI の改善
  外部テーブルで JOIN のプッシュダウンがサポートされ、SQL パフォーマンスが向上しました。ベクトル検索では高速かつ堅牢な類似検索を実現する改良版 HNSW インデックスを導入しました。

ヘルスケア機能の強化
  FHIR Bulk Data Access と認証機能が改善されました。

0
0 87
記事 Megumi Kakechi · 2025年9月15日 3m read

これは InterSystems FAQ サイトの記事です。
ビジネスサービスやビジネスオペレーションで EnsLib.CloudStorage.InboundAdapter アダプタを使用したり、%Net.Cloud.Storage.Client を使用することで、Amazon s3(クラウドストレージAPI)のファイルにアクセスすることが可能です。

いずれの場合も、事前に Javaランタイムをシステムにインストールし、インストールしたJavaランタイムの JAVA_HOME 情報を、管理ポータルにて設定する必要があります(手順は後述します)。


今回は、%Net.Cloud.Storage.Client クラスを使用したサンプルをご紹介します。
手順は以下のようになります。


【手順】

以下のS3パケットにアクセスする手順になります。

 

(1) 事前に、コマンドプロンプトにて aws コマンドを使用して動作確認をしておきます(S3に存在しているファイル一覧がプロンプトに返ればOKです)。

> aws s3 ls s3://isj-s3202516

もしくは

>aws s3 --endpoint-url https:


(2) Javaをインストールします
Java Runtime Environment (JRE)s 1.8

2
0 131
記事 Megumi Kakechi · 2025年8月18日 4m read

これは InterSystems FAQ サイトの記事です。
 

WebゲートウェイのSystem Status(システムステータス)ページでは、現在のすべてのアクティブな接続のステータスを確認することができます。

最初のステータステーブル (システムステータス) は、IRIS への接続に関する情報を表示します。
2番目のステータステーブル (InterSystems IRIS サーバ) は、InterSystems IRIS サーバに関する情報を表示します。
3 番目のステータステーブルは、アプリケーションパスの情報を表示します。
4 番目のテーブルは、Web ゲートウェイの応答キャッシュに保持されるフォームを表示します。

いくつかのサンプル接続ステータスを例にご説明します。


【ケース1】

接続最小数の設定で、現在3接続が処理中の場合。
使用中のプロセスは InUse のステータス、待ち受けで空いているプロセスは Free で表示されます。

Free の接続は、[非活動タイムアウト(無使用タイムアウト)] まで残り、タイムアウトを過ぎると自動的に終了します。
 ただし、[サーバ接続最小数] 分の接続は上記タイムアウトが過ぎても残り、次のリクエストで使用されます。
 アイドル時間/タイムアウトの表示例は、0/0(接続最小数で残り続ける接続) や、300/86400(タイムアウト86400秒中、300秒経過)になります。

Server のステータスは、Webゲートウェイレジストリメソッドで使用のプロセスです。
 CSP.iniで以下の設定をしている場合は、このプロセスは作成されません。
 [SYSTEM]
 REGISTRY_METHODS=Disabled

 

1
0 110
記事 Megumi Kakechi · 2025年8月13日 3m read

これは InterSystems FAQ サイトの記事です。
$ZF(-100) は、OSコマンドまたはプログラムを子プロセスとして実行するのに使われますが、一緒に便利なキーワードを指定することが可能です。

$ZF(-100)でコマンドの実行がうまくできない、という経験をされた方も多いかと思います。

そんな時は、この便利なキーワードを使って原因の調査をしていきましょう。

キーワードには以下のようなものがあります。

/SHELL シェルを使用して program を実行する。既定では、シェルは使用されない。
/STDIN=filename 入出力リダイレクト入力ファイル
/STDOUT=filename 入出力リダイレクト標準データ出力ファイル
/STDERR=filename 入出力リダイレクト標準エラー出力ファイル
/LOGCMD 結果として得られるコマンド行を messages.log に記録する
/NOQUOTE コマンド、コマンド引数、またはファイル名の自動引用を禁止する


使用方法は、以下のようになります。

write$zf100


例:ネットワーク共有の設定がうまくいかないので原因を調べたい。

0
1 69
記事 Megumi Kakechi · 2025年8月4日 2m read

これは InterSystems FAQ サイトの記事です。
 

Webゲートウェイ管理ページで、サーバ毎の最大接続数を設定したり、最大接続に達した場合に待ち時間(キュー)や静的なビジーページを設定することが可能です。

実際にサーバに接続する最大接続数を設定すると、それに達した場合に待ち時間(キュー)で設定した秒数待って、それを過ぎても接続数に空きが出なかった場合に、静的なビジーページに移行するような設定が可能となります。

設定箇所は以下になります。
※Webゲートウェイ管理ページ:
例(URLは環境・バージョンによって変わります):
http://<webserver>/<instancename>/csp/bin/Systems/Module.cxw
 

★全サーバに適用される設定(デフォルトパラメータ)

サーバ単位の個別の設定がない場合は、こちらの設定が適用されます。

構成 > デフォルトパラメータ

最大接続:各サーバの合計接続数の最大数(既定:1024)。

0
1 88
記事 Megumi Kakechi · 2025年7月31日 2m read

これは InterSystems FAQ サイトの記事です。
アプリケーション保全のために、データベースのジャーナルは必ず有効にしておく必要がありますが、何らかの理由でジャーナルを無効にしなければならない場合があるかと思います。

ディスク容量の縮小や、データ更新時のシステム負荷の削減など理由は様々です。

ここで注意していただきたいのは、データベースのジャーナルを無効にした場合にどのような影響がでてくるのか、ということです。

こちらのトピックでは、「データベースのジャーナルを無効にした場合の影響について」ご説明します。


ジャーナルを無効にする方法は、以下の2種類があります。

1. システム全体で無効にする方法(こちらを行う場合は【慎重】に!

Set$namespace"%SYS"

2. プロセス単位で無効にする方法 ※ご参考

※ミラーリング対象のデータベースは、ジャーナルを無効にすることはできません。
ジャーナルを無効にした場合、以下のことができなくなります。

・ジャーナルが記録されないため、バックアップのジャーナルリストアができなくなります

・通常のトランザクションがロールバックできないだけではなく、インスタンス開始時のロールバックも対象とならないため、開始時のジャーナルリカバリおよびトランザクションロールバックができなくなります。

0
0 64
記事 Megumi Kakechi · 2025年7月22日 4m read

これは InterSystems FAQ サイトの記事です。
「定期的にプロセスを監視し、あるイベントが発生したときにのみ処理を実行したい」ような場合に使用できる、便利な機能をご紹介します。

もちろん、Forループを行う常駐プロセスを作成してその中で Hang XX しながらIf文にてイベントを検知したり、タスクスケジュールでルーチンを定期実行してその中でIf文にてイベントを検知して処理することも可能です。

今回ご紹介する、%SYSTEM.Event クラスを使用することで、よりシンプルに処理を作成することが可能となります。

【こんな時に便利】
・テーブルやグローバルに、あるデータが全て格納されたら処理を行いたい
・あるエラーを検知したときにのみ、^SystemCheck情報を取得したい
・処理が必要なものがデータベースに入ったら順番に処理を行いたい(pythonだとQueueモジュールのような感じ)


【使用方法】


準備(任意のプロセス)


do $SYSTEM.Event.Create("test")
これで、testというイベントがシステムワイドで作成されます。
 


パターンA=単純な常駐プロセス


(1) 待機プロセス側
do $SYSTEM.Event.Wait("test")
このコマンドの瞬間、このプロセスは待ち状態になります。
 
(2) 起こす側
do $SYSTEM.Event.

0
1 112
記事 Megumi Kakechi · 2025年7月15日 4m read

これは InterSystems FAQ サイトの記事です。
IRISのプロセスを終了したい場合、管理ポータルから行う方法と、ターミナルからユーティリティやコマンドを使用して行う方法があります。

こちらのトピックでは、以下の3つの方法で停止する方法をご紹介します。

【プロセスの停止方法】
1.管理ポータルから停止する方法
2.ユーティリティーで停止する方法(RESJOB、JOBEXAM)3.プログラムで停止する方法


【注意】
IRIS外から(Windowsならタスクマネージャーなど)、プロセスの終了は絶対に行わないでください。

IRIS外からプロセス終了してしまうと、IRIS内部ではプロセスの削除を検知できなかったりすることで、IRISの動作が不安定になったり、システム全体がハングする危険性がありますので、ご注意ください。

外部から停止の例外が一つだけあります。
$ZF コマンドによって起動された子プロセスが、何らかの問題で応答を返さなかった場合、$ZF コマンドを実行した親プロセスはそのまま残り続けます。
そのような親プロセスを終了したい場合、通常の上記1~3の方法では停止できません。
その際は、先に外部から子プロセスを停止する必要があります。子プロセスを特定するためには、以下の方法があります。

例:Windowsの場合
1. process explorer(マイクロソフト製)
2. PowerShell コマンド
   PS>wmic Process where '(parentprocessid=10188)' get 'processid,executablepath'
0
0 159
記事 Megumi Kakechi · 2025年7月6日 2m read

これは InterSystems FAQ サイトの記事です。
各InterSystems製品のサポートOS情報は、製品ドキュメントの「サポートプラットフォーム」情報で確認できます。

製品ドキュメントは、弊社ホームページ > サポート > ドキュメント よりご確認いただけます。

確認したい製品バージョンのドキュメント(例えば、InterSystems IRIS Version 2025.1)を開いていただき、「サポート対象プラットフォーム」リンクからご確認いただけます。

     ↓↓↓


※Cache & Ensemble の場合は(例えば、Cache & Ensemble Version 2018.1)、ドキュメント上部の Supported Platforms リンク 

※過去のバージョンは、
IRIS:
InterSystems IRIS 過去一覧 > バージョン > Supported Platforms > サポート対象プラットフォーム
Cache:
Caché & Ensemble 過去一覧 > バージョン > Supported Platforms > サポート対象プラットフォーム 各OSをサポートするInterSystems製品の一覧は用意しておりませんので、製品バージョンごとのサポートOSをご確認いただく必要があります。 例:
IRIS 2025.1 の サポートプラットフォーム

0
1 87
記事 Megumi Kakechi · 2025年6月20日 5m read

これは InterSystems FAQ サイトの記事です。
こちらの記事では、非ミラー環境にミラー環境でオンラインバックアップしたバックアップファイルをリストアする方法をご紹介します。

手順は大きく分けて2つになります。


1.バックアップファイルからリストアを行う

2.データベースファイルのミラー属性を削除する



1.バックアップファイルからリストアを行う

以下は、^DBREST ユーティリティによる対話形式のリストア方法になります。

%SYSdo^DBREST


2.データベースファイルのミラー属性を削除する

ミラー環境で取得したバックアップを、非ミラー環境にリストアすると、そのままではDB書き込みができません。
これは、リストアされたデータベースは、読み取り専用でマウントされるためです。
(ミラーデータベースについては、別ミラー環境やミラー構成でない環境にリストアすると読み取り専用になります)
この為、リストア完了後に以下の操作にてデータベースファイルのミラー属性を削除する必要があります。

手順は、以下のようになります。

^MIRROR

これで、リストアは完了です。

0
0 83
InterSystems公式 Megumi Kakechi · 2025年6月16日

概要

勧告 ID

影響を受ける製品と
バージョン

リスクカテゴリー &
スコア

明示的な発生条件

DP-439649

製品:

  • InterSystems IRIS®
  • InterSystems IRISfor Health
  • HealthShare®Health Connect

バージョン:

  • 2025.1.0.225.1
  • 2025.1.0.223.0
  • 2024.1.4
  • 2023.1.6
  • 2022.1.7

運用:
4 – 高リスク

システム安定性:
3 – 中リスク

この問題はセキュリティ上の脆弱性ではありません。ユーザーの権限チェックを無効にしたり、承認されたネームスペース外のデータアクセスを可能にするものではありません。

暗黙のネームスペースの使用、管理ポータル または データベースに対する読み取り専用/読み取り書き込み混合アクセス。


上記にリストされたInterSystems製品において、以下の機能のいずれかを使用している環境で、ネームスペースを切り替えたりグローバル変数にアクセスしたりする際、予期しない <PROTECT> エラーが発生する可能性があります。

0
0 68
InterSystems公式 Megumi Kakechi · 2025年6月11日

InterSystems は、以下のサポート対象製品バージョン 2025.1.0、2024.1.4、2023.1.6、および 2022.1.7 に影響する不具合を解決するために、新しいポイント アップデートをリリースしました。

  • InterSystems IRIS
  • InterSystems IRIS for Health
  • HealthShare Health Connect


この問題により、以下の機能を使用する際、予期しない <PROTECT> エラーやアクセス異常が発生する可能性があります:

  • 暗黙のネームスペース
  • データベースへの読み取り専用/読み取り書き込みの混合アクセス
  • 管理ポータルでのルーチンとグローバル一覧表示


含まれる症状:

  • ネームスペースの作成の失敗
  • ルーチンをリストするときに断続的に「アクセス拒否」エラーが発生する
  • 読み取り専用権限を持つユーザーに対してグローバル表示ページがデータを返さない

これらの問題によりアクセス制御やユーザー権限が損なわれることはありませんが、複数のシナリオにおいて、システムの想定された動作に影響を及ぼします
 

解決済みバージョン

修正は次のポイントリリースに含まれています。

  • 2025.1.0.230.2
  • 2024.1.4.516.1
  • 2023.1.6.810.1
  • 2022.1.7.116.
0
0 84
記事 Megumi Kakechi · 2025年6月1日 5m read

これは InterSystems FAQ サイトの記事です。
ロックテーブルを参照する方法として、主に以下の3つの方法が挙げられます。

1. 管理ポータルで参照する方法
 ⇒ 管理ポータル:システムオペレーション > ロック > ロックを表示(または管理)

2. ^LOCKTAB ユーティリティ を使用する方法
 ⇒ %SYS> do ^LOCKTAB

3. プログラムで参照する方法
 ⇒ プログラム内でロック情報を取得する方法


こちらの記事では、ロックテーブルで参照できる情報について、以下の3つのケースに分けて、かかるロックとその意味をご説明します。

1.トランザクションで更新クエリ実行時、他のプロセスで更新・参照した状態
2.デッドロックとなった状態
3.テーブルロックがかかった状態


目視で一番わかり易いのは、1の 管理ポータルで参照する方法 になるので、こちらで説明したいと思います。

最初に、
1.トランザクションで更新クエリ実行時、他のプロセスで更新・参照をすると、どのようなロックがかかるのか見ていきます。

a. プロセスA(PID=10044)にてトランザクションで、Sample.Personテーブルの ID=1 を更新します。    ⇒ Exclusive_e->Delock ロック

[SQL]TL1:USER>>updateName

b.

0
0 112
記事 Megumi Kakechi · 2025年5月29日 6m read

これは InterSystems FAQ サイトの記事です。

InterSystems製品では、複数のプロセスが同時に同じデータにアクセスする場合、排他制御を行うためにロックを使用できます。
ロックは、データの更新を正しく行い整合性を保つための仕組みで、あるデータに対する更新処理を制御するために使用します。
ロックを操作するには、LOCK(L)というコマンドが使用できます。

こちらの記事では、InterSystems製品で使用できるロックの種類、LOCKコマンドの使い方をご紹介します。


★ロックの種類

  増分 単純
排他(既定) LOCK +^A LOCK ^A
共有 LOCK +^A#"S" LOCK ^A#"S"


プラス記号 (+) をつけると、増分ロックになります。1つのプロセスで複数の増分ロックを追加できます。
プラス記号 (+) をつけないと、単純ロックになります。こちらは、1つのプロセスで1つのロックのみ所有できます。単純ロックコマンド実行時に既存のロックがあった場合、そのプロセスが保持している既存のロックをすべて削除し、新しいロックを追加します。

排他ロック
データを更新するために使用するロックです。
プロセスが特定のロック名の付いた排他ロックを所有している時、その他のプロセスは、そのロック名の付いたロックを取得できません。

0
1 122
記事 Megumi Kakechi · 2025年4月22日 5m read

先日、お客様よりタイトルのご質問をいただき、サンプルコードを作成しました。せっかくですので、こちらでも共有したいと思います。

今回は、データベースの空き容量情報を取得する、%SYS.DatabaseQueryクラスのFreeSpaceクエリを使用したサンプルとします。

C#.Net と VB.Net で作成してみました。


★C#.Net

using System;
using InterSystems.Data.IRISClient;
{
    class Program
    {
        static void Main(string[] args)
        {
            IRISConnection IRISConnect = new IRISConnection();
            IRISConnect.ConnectionString = "Server=localhost;Port=1972;Namespace=USER;User ID=_SYSTEM;Password=SYS";
            IRISConnect.Open();
            String queryString = "select * from %SYS.DatabaseQuery_FreeSpace(?)";  // call %SYS.DatabaseQuery_FreeSpace(?) でもOK
            IRISCommand cmd = new IRISCommand(queryString, IRISConnect);
            IRISParameter p1 = new IRISParameter("Mask", IRISDbType.NVarChar);
            p1.Value = "*";
            cmd.Parameters.Add(p1);
            IRISDataReader Reader = cmd.ExecuteReader();
            while (Reader.Read())
            {
                // Select values : DatabaseName:0, Directory:1, MaxSize:2, Size:3, ExpansionSize:4, Available:5, %Free:6, DiskFreeSpace:7, Status:8, SizeInt:9, AvailableNum:10, DiskFreeSpaceNum:11, ReadOnly:12
                Console.WriteLine(Reader.GetValue(0).ToString() + ", " + Reader.GetValue(3).ToString() + ", " + Reader.GetValue(5).ToString());
            }
            Reader.Close();
            cmd.Dispose();
            IRISConnect.Close(); 
        }
    }
}
0
0 105
記事 Megumi Kakechi · 2025年3月25日 6m read

以前公開している こちら の記事では、「OAuth 2.0 を利用して IRIS から Gmail を送信する」方法をご紹介しています。

本記事では、 %Net.POP3 クラスを使用してメールを受信するサンプルをご紹介します。


【事前準備(Gmailの場合)】

外部アプリからGmailを受信するには OAuth 2.0が必要となるため、こちらの手順 に従ってAccessToken を取得しておきます。
また、「2.【準備】IRIS で、SSLクライアントの設定をする : 手順(4)」の手順に従って、GMAILSSL(任意の名前)の構成を作成しておきます。


【サンプルの内容】

以下のサンプルでは、

1.Gmailの受信サーバ(servername = pop.gmail.com)に、ユーザ名(user = xxx@gmail.com)、パスワード(pass = パスワード)、AccessTokenを使用して接続し、

Set

2.メールボックスの情報を取得し、

Do..ShowMailbox

3.Fetch() メソッドを使用して、添付ファイルを含むメールの内容の取得し、
  (添付は server.AttachDir で指定したディレクトリに保存)

Do

4.さらに、メールの内容を表示(出力)しています。

Do
0
0 87
記事 Megumi Kakechi · 2025年2月26日 2m read

これは InterSystems FAQ サイトの記事です。
埋め込みSQLの出力ホスト変数は、SQLCODE=0(埋め込みSQL正常終了)の場合のみ、正しい値が設定されていることが保証されます。

InterSystems製品のバージョンによっては、SQLCODEが0以外の場合(該当データがない100やエラー等)で値が設定される場合もありますが、その値は無効です。

特に、IRIS2021.1以降のバージョンでは、SQLCODE=100 の場合、INTO 節で指定された出力ホスト変数は NULL("") にクリアされますので注意が必要です。

Cacheや、IRIS2020.x 以前のバージョンでは、明示的な値のクリアを行っておりませんでしたが、こちらについても値は保証されるものではありません。

埋め込みSQLを使用する場合は、必ずSQLCODEを確認してエラーチェックを行うようにして下さい。
また、エラーチェック以外でも、SQLCODE = 0(データあり) の場合と SQLCODE = 100(データなし) の場合は処理を分けるようにし、SQLCODE = 100 の場合は出力ホスト変数を参照しないようご注意ください。


例)
誤った使用例:

  &sql( selectnameIf


上記の変更例(正しい使用例):

  &sql(
0
0 68
記事 Megumi Kakechi · 2025年2月17日 3m read

これは InterSystems FAQ サイトの記事です。
 

1. 整合性チェックの目安の時間

整合性チェックの目安の時間は、環境により異なってきます。ディスク速度やDBサイズに大きく依存してきます。

同じディスク上に置かれた比較的サイズの小さなDATでまず実施して、サイズと経過時刻からおおよその時刻を推測してください。

また、整合性チェックの方法によって要する時間が変わってきます。

詳細は参考記事で紹介しております「整合性チェックの各方法の違いについて」をご覧ください。
 

2. 動作状況(正常に稼働しているか)を確認する方法

ターミナルで整合性チェックを実行していただく場合は、現在どのデータベース/グローバルのチェックを実行しているのかを出力ログ(画面またはファイル)にて確認することが可能です。

管理ポータルで実行する場合は、整合性チェックの実行プロセスID(※PIDの確認方法)を指定して、ターミナルで以下のコマンドを実行することにより確認することが可能です。
詳細については、ドキュメント をご覧ください。

%SYSdo^Integrity


対象プロセス(PID)のプロセス詳細より、グローバル参照や実行されたコマンドで、稼働しているかを確認することも可能です。
 

PIDの確認は、管理ポータルから実行している場合は、バックグラウンドタスクより整合性チェックの実行プロセスIDを確認します。

0
0 193
記事 Megumi Kakechi · 2025年2月4日 4m read

これは InterSystems FAQ サイトの記事です。
 

整合性チェックを行う場合、管理ポータルやタスクマネージャーから行う方法と、ターミナルから ^Integrity ユーティリティを使用して行う方法があります。

こちらのトピックでは、それぞれの違いをご説明します。
 


管理ポータル、整合性チェックタスク、
および SYS.Database の IntegrityCheck メソッドから行う方法


こちらの方法は、選択した複数のデータベースや、1 つのデータベースに格納された選択可能な複数のグローバルを対象に整合性をチェックを行います。

管理ポータル
[システムオペレーション] > [データベース] 整合性チェック・ボタン
※チェックを行いたいネームスペース、必要に応じてグローバルを選択し、実行・ボタンをクリック

整合性チェックタスク
[システムオペレーション] > [タスクマネージャー] > [タスクスケジュール] 整合性チェック・タスク 


SYS.Database クラスの IntegrityCheck メソッド:

%SYSdo##class

これらの方法では、エラーが検出されたすべてのグローバルを自動的に再テストします。
誤検出対策のための再チェックを行うため、余分に時間がかかる場合があります。

0
0 242