検索

クリアフィルター
記事
Hiroshi Sato · 2021年11月11日

バックアップ先に共有フォルダを指定できますか?

これは InterSystems FAQ サイトの記事です。 バックアップ先に、共有フォルダを指定することは可能ですが、推奨しません。 バックアップの最終フェーズのDBアクセスを禁止する箇所で万一ネットワークエラー等で、バックアップがハングアップすることがあれば、システム全体に影響が及ぶリスクがあります。

#GitHub

13 投稿0 フォロワー
記事
Mihoko Iijima · 2021年8月16日

IRIS でアナリティクスソリューションの構築する

開発者の皆さん、こんにちは! InterSystems IRIS でアナリティクスソリューションを構築するにはどのような方法があるでしょうか。 最初に、アナリティクスソリューションは何かについて確認しようと思いますが、とても幅広いテーマになってしまうので、Analytics コンテストで発表できるソリューションに限定してご紹介します。 以下、モニタリング、インタラクティブアナリティクス、レポーティングの3種類のアナリティクスソリューションについてご紹介します。 モニタリング 一般的なモニタリングソリューションは、アクティブに更新される KPI を備えたオンラインダッシュボードで構成されています。 モニタリングの主な使用例としては、新しいデータの KPI を常に視覚的に観察し、緊急時に対応することです。 インタラクティブアナリティクス このソリューションはフィルタやドリルダウンが行えるインタラクティブなダッシュボードのセットを想定しています。 主なユースケースは、グラフや表のデータを視覚化した上で、フィルタやドリルダウンを使用してデータを探しだし、ビジネス上の意思決定を行うことです。 レポーティング レポーティングソリューションは、グラフやテキスト形式のデータを事前にデザインされたフォームで提供する HTML や PDF ドキュメントの形式で、静的(通常)レポートを提供し、メールで送付することもできます。 レポーティングシステムの主なユースケースは、ビジネスにとって重要な製品やプロセス、サービス、セールスなどの状況を説明するレポートを一定期間に取得することです。 このようなソリューションを構築するために、InterSystems 製品をどのように利用できるでしょうか。 以下の項目で議論してみましょう。 モニタリングソリューション モニタリングの可視化には、実績があり業界で認められているツールが揃っていて、Zabbix と Grafana が代表的なツールです。 Grafana は、IRIS のデータの監視ツールとして使用でき、特定の IRIS のシステムの稼働状況を可視化するために Grafana を使用する InterSystems SAM が提供されています。また、Grafana を使ってデータを可視化するために、例えばこの例のようなコミュニティサポートのソリューションを利用することもできます。 インタラクティブアナリティクスの構築 インタラクティブアナリティクスソリューションを構築する一般的な方法として、データウェアハウス用にディメンションやメジャーを持つキューブを用意し、ツールを使用して作成したキューブからダッシュボードをセットアップすることです。 InterSystems IRIS では、これを行うための2つのツールを用意しています。1つは、IRIS BI もう1つは、Adaptive Analyticsです。 まず最初に、InterSystems IRIS サーバに、アナリティクスソリューションを構築するためのデータが揃っているかご確認ください。 IRIS サーバにデータをインポートする方法は色々あります。 ODBC/JDBC 経由で、csvgen や csvgen-ui モジュールを使用して、samples-bi や dataset-titanic のようなデータも含む zpm パッケージをインストールする方法などあります。 IRIS BI について IRIS BI では、IRIS BI アーキテクト画面を使用して IRIS BI キューブを作成します。IRIS BI は、同じ IRIS マシン上でホストすることも、パフォーマンスが要求される場合はには別マシン上でホストすることもできます。 キューブを作成したら、IRIS BI アナライザ画面を使用してデータソースとなるピボット(MDX)やKPI(SQL)を作成します。作成後は、データソースのデータの可視化のため IRIS BI インタラクティブダッシュボードを作成します。これは、同じ、または別の IRIS サーバでホストできます。IRIS BI ダッシュボードの代わりに、MDX2JSON を使用して画面を作成することができます。MDX2JSON は ピボット用 JSON API で DeepSee WebツールやJSON を処理できる JS フロントエンドフレームワークを使用することで可視化できます。 ソリューション例をご紹介します。Sample BI(オンラインサンプル、USERネームスペースを使用します。リポジトリはこちらから)、Covid-19(オンラインサンプル, リポジトリ)、Game Of Thrones (オンラインサンプル, USERネームスペースを使用します。 リポジトリはこちらから) Adaptive Analytics について InterSystems Adaptive Analytics を使用してソリューションを作成することもできます。AtScale を使用して IRIS BI データサーバに接続した AtScale サーバ上でデータウェアハウス用キューブをセットアップします。AtScale サーバのセットアップが完了したら Tableau や PowerBI や Excel など、インタラクティブダッシュボードの構築に使用できるツールを使ってインタラクティブダッシュボードを作成します。Adaptive Analytics ソリューションの例 や コミュニティの記事をご参照ください。 レポーティングソリューションの構築 レポーティングソリューションは、InterSystems Report を使用して構築できます。JDBC ドライバ経由で IRIS に接続し、レポートを作成し、Logi レポートサーバでレポートを配信するために、Logi Composer が必要です。Logi レポートサーバをホストするための Docker コンテナは以下コミュニティの記事で使用方法をご紹介しています。 InterSystems Reportsでレポートを作成するのは難しいですか? や コンテナで InterSystems Reports を動かしてみる もチェックしてみてください。 この他、iKnow、PMML、IntegratedML、Embedded Python、Apache Spark などを使用した方法も考えられます。 ぜひ、Analytics コンテスト に参加して IRIS BI、Adaptive Analytics、InterSystems Reports を使用したアナリティクスソリューションのデモを作ってみてはいかがでしょうか!
記事
Tomoko Furuzono · 2021年12月7日

メッセージ・ログ(messages.log)/コンソール・ログ(cconsole.log) に出力される「Skipping SET(KILL) global ^xxxx during transaction rollback...」のメッセージとは

これは、InterSystems FAQサイトの記事です。このメッセージが出力される要因は以下の2つになります。 同じデータに対して適切に排他を行わずに、別々のプロセスから更新が行われている ロールバックが発生している 詳細は以下の通りです。 メッセージログ/コンソールログに、以下のようなメッセージがある場合、これはロールバック処理にて出力されています。※バージョンによってメッセージは多少異なります。 Skipping SET due to compare and swap failed on ...Skipping KILL due to compare and swap failed on ...---Skipping Set global ^xxx during transaction rollback (transaction may not have been properly locked) in journal ...Skipping KILL as node ^xxx exists in ...---Skipped rolling back x update(s) in ...Total 1 update(s) were skipped during rollback of transaction beginning at address ... 以下の例のように、ロールバック処理で、更新したグローバル変数の値を元の値に戻す際に、別のプロセスにより、そのグローバルが既に更新されてしまった場合に出力されます。 *プロセスA USER>W ^TEMP1 -> 更新処理前の値USER>TSTL1:USER>s ^TEMP=2 -> ジャーナルファイルにnew value =2, old value =1と記録される *プロセスB USER>TSTL1:USER>S ^TEMP=3 -> 別プロセスより更新TL1:USER>TCUSER> *プロセスA TL1:USER>TRO -> ロールバックUSER>w ^TEMP 3 -> 値は、ロールバックでプロセスAが更新をする前の値の 1 には戻っていない ここで、ロールバックの実行にて、ジャーナルファイルの記録よりold value の1に戻そうとしたが、値が別プロセスにより変更されていた為、ロールバックにより値を戻すのをskipします。その際、コンソールに以下のようなメッセージが出力されます。 Skipping Set global ^["^^c:\intersystems\cache\mgr\user\"]TEMP during transaction rollback (transaction may not have been properly locked) in journal c:\intersystems\cache\mgr\journal\20130122.001 location 159100
記事
Megumi Kakechi · 2023年5月15日

グローバルの kill で エラーとなる原因と対処方法

これは InterSystems FAQ サイトの記事です。 サブスクリプトレベルマッピングされたグローバルを、トップノードから全体をkillする場合、<SLMSPAN>エラーとなり削除ができません。 これは、サブスクリプトレベルマッピングされたグローバルについては、マッピングを跨いだサブスクリプト範囲の kill コマンドは行えないためです。 // 以下のように、別々のデータベースにサブスクリプトマッピンググローバルが存在する場合: ^TEST(A*~K*) -> database A ^TEST(L*~Z*) -> database B // Topレベルから Kill しようとすると、<SLMSPAN>エラーとなる NAMESPACE>Kill ^TEST <SLMSPAN> <- このエラーが出力 現ネームスペース(データベース)のグローバルのみ削除するには、次のように指定して下さい。 NAMESPACE>Kill ^["^^."]TEST サブスクリプトレベルでマッピングしているグローバルは、データベースに移動して直接Killする必要があります。データベースに移動する場合は以下のようにします。 zn "^^c:\intersystems\iris\mgr\user" または set $namespace="^^c:\intersystems\iris\mgr\user" $system.OBJ.Load でグローバルをインポートする場合は、既定の動作では、インポート対象のグローバルを実施前に kill します。そのため、対象のグローバルが、サブスクリプトレベルマッピングされている場合、<SLMSPAN>エラーになってしまいます。この場合は、以下のように $system.OBJ.Loadの第二引数に/mergeglobal のフラグを指定して、事前のkill を行わないようにします。 Set sc = $System.OBJ.Load(path," /mergeglobal",.errors) 【ご参考】マッピングしたグローバルがエクスポートできませんマッピングされたクラス・ルーチンをコンパイルする方法を教えてください
お知らせ
Hiroshi Sato · 2020年6月29日

セキュリティ脆弱性に関する対応について

InterSystemsは、新たなセキュリティの脆弱性が製品に見つかった場合、出来得る限り速やかにその脆弱性に対処するための修正を製品に行い、対応バージョンを出荷します。 また、InterSystemsは、セキュリティ脆弱性対応に関して、製品を修正して出荷するだけでは十分ではなく、InterSystemsの製品をお使いいただいている全てのお客様が、セキュリティ脆弱性に対応したバージョンをお使いいただくことによって、初めてそのセキュリティ脆弱性に起因するリスクを完全に排除できると考えています。 もちろん対処しなければ、必ずそのリスクが顕在化するというものでもありませんが、対処せずとも、問題がないということを100%保証することは極めて困難です。 また、セキュリティ脆弱性に対応したバージョンのご利用を推進するため、セキュリティ脆弱性への対策が施されていないバージョンに対する製品サポートはベストエフォートとなり、サポートバージョンと同等のサポート保証を得ることができない点、ご注意お願い致します。 以上のことをご理解いただき、新しいセキュリティ脆弱性に対応した製品バージョンがリリースされた際には、出来得る限り速やかにそのバージョンを導入することを推奨致します。 以下の関連情報もぜひご参照ください。 バグフィックス対応について 製品サポート対応について
質問
Yugi AA · 2023年6月30日

IRISインスタンスが起動できない。[irisstart.exe エラー]

VScodeを使用してローカルのルーチンを編集している途中で、PCが重かったため再起動を行って、 再びIRISを起動しようとするとエラーとなり起動できません。 どなたか解決策をご存知でしょうか?よろしくお願いいたします。 ーーーーーーーーーーーーー **現象:** ローカルのIRISを起動すると、エラーとなり起動できない。 **操作:** 1. PCを起動し、iris.exeで起動。 2. InterSystems IRIS 開始(S)[IRIS] ボタンで起動を試みる。 3. エラーメッセージが表示される。 **詳細:** ・接続先 IPアドレス: localhost ポート: 51773 ・mgr/mesages.logのエラーログ *** Recovery started at Sat Jul 1 08:35:25 2023 ...略 07/01/23-08:35:36:165 (19356) 3 [Utility.Event] Error: ERROR #5001: Could not start SuperServer on port 51773, may be in use by another instance - Shutting down the system : $zu(56,2)=$Id: //iris/2022.1.0/kernel/common/src/acmd.c#1 $ 4561 183 07/01/23-08:35:41:208 (19356) 0 [Utility.Event] Shutting down InterSystems IRIS 07/01/23-08:35:41:224 (19356) 0 [Utility.Event] Notifying Clients 07/01/23-08:35:41:230 (19356) 0 [Utility.Event] No user shutdown routines to execute 07/01/23-08:35:41:238 (19356) 0 [Utility.Event] Stopping User Jobs 07/01/23-08:35:41:247 (19356) 0 [Utility.Event] Stopping Network Servers 07/01/23-08:35:41:255 (19356) 0 [Utility.Event] Withdrawing from License Domain ・Widowsのポート確認 C:\Users\hoge>netstat -ano | find ":5177" C:\Users\hoge> @Yugi.AA さん、こんにちは 操作内容をもう少し詳しくお聞きして良いでしょうか。 1の「PCを起動し、iris.exeを起動」とはコマンドプロンプトで<IRISのインストールディレクトリ>\bin\iris start IRISを実行されたと思いますが、その時点でmessage.logにエラーが記録されていないでしょうか。また操作内容が異なるのであればその旨お知らせ下さい。 2の「InterSystems IRIS 開始(S)[IRIS] ボタンで起動を試みる」はどのタイミングで実行されたでしょうか。1でIRISが起動していれば2の操作は起動メニューがグレイアウトして選択不可となります。 よろしくお願いします。
記事
Megumi Kakechi · 2020年11月24日

サーバー仮想化ソフトウェア上でInterSystems製品を稼働する場合、物理サーバー上での稼働とライセンス上の条件等での違いについて

これはInterSystems FAQ サイトの記事です。InterSystemsの製品には同時ユーザー数でライセンスの容量を決定する製品とサーバーのCPUコア数で容量を決定する製品の2種類があります。 同時ユーザー数ライセンスタイプの場合、CPUコア数により使用可能なライセンスのグレードに制限があります。 物理サーバーの場合には、そのサーバーが保持しているCPUコア数の総数をカウントします。 そして、その総数が該当グレードの最大CPUコア数を超えている場合には、その上位グレードを使用しなければなりません。 サーバー仮想化ソフトウェア(VMWare、Hyper-Vなど)を利用する場合には、その仮想サーバーに割り当てられたCPUコア数をカウントします。 同様にその総数が該当グレードの最大CPUコア数を超えている場合には、その上位グレードを使用しなければなりません。 CPUコア数ライセンスタイプの場合、コア数によりライセンスの容量が決まります。 CPUコア数の数え方は、同時ユーザーライセンスタイプと同じです。 物理サーバーの場合は、そのサーバーが保持しているCPUコア数の総数をカウントします。 サーバー仮想化ソフトウェアを利用する場合には、その仮想サーバーに割り当てられたCPUコア数をカウントします。 【関連情報】(コミュニティ/FAQトピックをリンクしています インターシステムズデータプラットフォーム製品のライセンスポリシーについて Cachéライセンスのコア数制限について
記事
Hiroshi Sato · 2020年12月8日

SQLでユニークな番号を自動付番する方法

これはInterSystems FAQ サイトの記事です。 連番を生成する関数($INCREMENT)を使用してユニークな番号を自動付番することができます。 SQLのSELECT文で使用する場合には OracleのSequence相当の機能を実装したクラスを利用する方法があります。 サンプルを以下のGitHubリポジトリより取得することができます。 OracleのSequence機能を実装するサンプル
記事
Hiroshi Sato · 2022年8月8日

コンソールログにメッセージを書く方法

これは InterSystems FAQ サイトの記事です。 コンソールログに任意のメッセージを書き込む方法として%SYS.System クラスの WriteToConsoleLog メソッドを使用することができます。 以下に例を示します。 %SYS>write ##class(%SYS.System).WriteToConsoleLog("xxxxx log message",0,0)1 WriteToConsoleLogメソッドに指定できるパラメータの詳細は、以下のドキュメントをご参照下さい。 クラスリファレンス(%SYS.System)【IRIS】 クラスリファレンス(%SYS.System)

#グラフ

2 投稿0 フォロワー
記事
Shintaro Kaminaka · 2020年11月27日

IRIS API Explorer アプリケーション

背景 InterSystems IRIS 2019 では、新たに魅力的な機能が導入される予定です。 ぜひ知っておくべき魅力的な新機能の一つには、API 管理があります。 OpenAPI Initiative()は、API を定義するための標準仕様()をサポートする組織です。 OpenAPI 仕様(OAS)は、REST API 向けのプログラミング言語に依存しない標準的なインターフェースの記述を定義するもので、人間とコンピューターの両方が、ソースコードへのアクセス、追加ドキュメント、またはネットワークトラフィックの検査を必要とせずに、サービスの機能を検出して理解できるようにしています。 OpenAPI を使用して適切に定義されている場合、消費者は最小限の実装ロジックでリモートサービスを理解して対話できます。 低レベルのプログラミングに対するインターフェース記述と同様に、OpenAPI 仕様によってサービスを呼び出す際の当て推量が排除されます。 InterSystemsInterSystems IRIS で **API 設計優先のアプローチをサポート**しており、それによって先に仕様を設計してからサーバーサイドを生成できるようにしています。 API を先に設計する場合、通常は Swagger Editor やその他同様のツールを使用して仕様を作成し、必要に応じて JSON 形式で OAS 仕様を取得します。 API を設計して実装する準備ができたら、OAS 仕様を使用してサーバーサイドの API ロジックを作成できるようになります。 InterSystems IRIS 2019.1 では、新しいルーチンである **^%REST** を使用し API を土台にして、ビジネスロジックを呼び出すコードを配置するクラスを自動的に生成できます。 このクラスのメソッドは命名規則に基づいて生成されますが、メソッドとクラスを仕様(operationId)で定義することもできます。 InterSystems IRIS REST コマンドラインインターフェースの使用例を以下に示します。 USER>do ^%REST REST Command Line Interface (CLI) helps you CREATE or DELETE a REST application  Enter an application name or (L)ist all REST applications (L): acmeapiREST application not found: acmeapiDo you want to create a new REST application? Y or N (Y): File path or absolute URL of a swagger document.If no document specified, then create an empty application.OpenAPI 2.0 swagger: C:\myspec\acme.swagger.json OpenAPI 2.0 swagger document: C:\myspec\notification.swagger.jsonConfirm operation, Y or N (Y):-----Creating REST application: acmeapi-----CREATE acmeapi.specGENERATE acmeapi.dispCREATE acmenapi.implREST application successfully created. Create a web application for the REST application? Y or N (Y):Specify web application name. Default is /csp/api/acmeWeb application name: /csp/api/acme/v1 -----Deploying REST application: acmeapi-----Application acmeapi deployed to /csp/api/acme/v1  現時点では、REST API を作成する際に API の土台の構築に使用できるのは **OpenAPI 2.0** Swagger 仕様だけです。 ご覧のとおり、このルーチンは以下の 3 つのクラスを作成します。 * **.spec**: このクラスは swagger 仕様(XData OpenAPI ブロック)のコンテナです。 このクラスは読み取り専用です。 * **.disp**: CSP アプリケーションで使用できるディスパッチクラスです。 %CSP.REST を拡張し、XData UrlMap を定義するものです。 また、このクラスは読み取り専用であり、システムクラスとして扱われます(デフォルトでは Atelier で非表示になっています)。 * **.impl**: 必要なすべての署名メソッドを定義するクラスです。 API を機能させるには、このクラスを完成させる必要があります。 すでに開発済みの API がある場合 InterSystems は、開発者がリモートで API 機能を探索できるサービス検索機能を InterSystems IRIS 2018.1 で導入しました。 また、Swagger を統合することで、既存の REST アプリケーションから Open API 仕様(OAS)を生成できるようにしています。 そのため、InterSystems IRIS で変更される API はすべて swagger 仕様を自動生成できます。 次のように管理 API を使用すると、システムで使用可能なすべての API を照会することができます。 HTTP GET http://:/api/mgmnt/  次の結果が返ってきます。 [...,    {        "name": "/csp/petstore/v2",        "dispatchClass": "petstore.disp",        "namespace": "USER",        "resource": "",        "swaggerSpec": "/api/mgmnt/v1/USER/spec/csp/petstore/v2",        "enabled": true    }] また、API の Swagger 仕様は swaggerSpec プロパティによって示された URL に HTTP GET を発行することで取得できます。 元の swagger 仕様で定義されている API 操作には、アクションを実装する必要があるメソッドの名前を定義する新しいプロパティが追加されています。 例: "x-ISC_ServiceMethod": "getPetById", この api/mgmnt は検索だけではなく、次のように API の作成/照会/削除にも使用できるのが非常に魅力的です。 HTTP POST to /api/mgmnt/v2//HTTP GET to /api/mgmnt/v2//HTTP DELETE to /api/mgmnt/v2// IRIS API Explorer IRIS Explorer はこの API を利用し、IRIS API を非常にわかりやすく視覚化して管理するためのツールを提供する Angular 5 アプリケーションです。 以下、簡単にご紹介します。 まず、InterSystems IRIS インスタンスにログインする必要があります(デフォルトでは、52773 番ポートでローカルインスタンスを探します)。 ![](/sites/default/files/inline/images/images/1-login.png) ログイン後、アプリがクエリを実行して既存のすべての API を取得します。 ![](/sites/default/files/inline/images/images/2-list%20of%20APIs.png) ここでは既存の API を削除することも、新しい API を作成することもできます。 新しいアプリケーションを作成するには、ネームスペース / アプリケーション名 / Swagger 仕様を含む .json ファイルを指定する必要があります。 ![](/sites/default/files/inline/images/images/3-API%20creation.png) API を作成したら、仕様を表示できるようになります。 私はさらにこれを見やすくするため、Swager-UI()を埋め込みました。 ![](/sites/default/files/inline/images/images/4-Embedded%20swagger-ui.png) もちろん、JSON 形式の OSA 仕様も取得できます。 ![](/sites/default/files/inline/images/images/5-OAS%20spec.png) すべてのコードはオープンであり、都合に合わせて使用または変更することができます。 このアプリは Open Exchange で入手できます。 GitHub でも公開しています。 お役に立てば幸いです。
記事
Megumi Kakechi · 2023年4月28日

2023 年 4 月 27 日 - 警告:暗号化使用時にデータベースおよびジャーナルが破損する

インターシステムズは、IBM POWER8 以降の POWER プロセッサを搭載した AIX システムで、データベースおよびジャーナルファイルが破損する可能性がある問題を修正しました。この問題は、データベースまたはジャーナルの暗号化が使用されている場合にのみ発生する可能性があります。 対象バージョン: InterSystems IRIS - 2022.1.3、2023.1 を除く全てのバージョン InterSystems IRIS for Health - 2022.1.3、2023.1 を除く全てのバージョン HealthShare Health Connect - 2022.1.3、2023.1 を除く全てのバージョン HealthShare ソリューション - すべてのバージョン ※HealthShareソリューションはデータ要素の暗号化機能を使用していない為、 本不具合が直接影響することはありません。ただし、HealthShare環境にて 上記のようなデータ要素の暗号化機能を使用するカスタマイズがある場合は 本アラートに記載されている回避方法に従う必要があります。 InterSystems Cache および Ensemble - 2015.1 以降の全てのバージョン 対象プラットフォーム:IBM POWER8 以降のPOWERプロセッサを搭載したAIXシステム 発生する問題:データベースおよびジャーナルファイルの破損を引き起こす可能性がある 問題の詳細:この問題は、IBM POWER8 以降の POWER プロセッサを搭載した AIX システムで、データベースまたはジャーナルの暗号化が使用されている場合にのみ発生します。 この問題は以下の条件の場合にのみ発生します: - データベース または ジャーナル 暗号化を行っている - データ要素の暗号化を行っている - データ要素の暗号化に使用された暗号鍵が無効化されている これらの条件をすべて満たす環境で、データベースやジャーナルの暗号化に使用するキースケジュールが破損し、データベースおよびジャーナルファイルの破損を引き起こす可能性があります。 問題の回避方法:この問題は修正ID: RJF540 で解決します。この修正は2022.1.3と2023.1には既に含まれており、今後リリースされる InterSystems IRIS、IRIS for Health および HealthShare すべての製品に含まれる予定です。 この修正は、アドホック配布でも利用可能です。このアラートに関するご質問、または修正版のアドホック配布が必要な場合は、バージョン情報とライセンスキー情報をご確認の上、弊社サポートセンターまでご連絡ください。
記事
Hiroshi Sato · 2020年8月26日

Caché .Net BindingアプリケーションをIRISの.Net Native APIを利用して書き換える方法(その2)

ここで紹介するサンプルは、以下のGitHubから入手可能です。 .NETサンプル Powershellから.NETインタフェースを呼び出すサンプル1 callclassmethod.ps1というファイル名です。 処理内容は、Caché (IRIS)のバージョン情報を表示するという非常に単純なものです。 Caché では.Net Bindingを使用していましたが、IRIS用に.Net Native APIで書き換えてみます。 以前のCaché のコードは以下の通りです。 Add-Type -Path 'C:\InterSystems\Ensemble\dev\dotnet\bin\v4.0.30319\InterSystems.Data.CacheClient.dll'$cc = New-Object InterSystems.Data.CacheClient.CacheConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$ms = New-Object InterSystems.Data.CacheTypes.CacheMethodSignature$ms.Clear()$ms.SetReturnType($cc,[InterSystems.Data.CacheTypes.ClientTypeId]::tString)[InterSystems.Data.CacheTypes.CacheObject]::RunClassMethod($cc,"%SYSTEM.Version","GetVersion",$ms)$ms.ReturnValue._Value IRISでは以下のように書き換えます。 Add-Type -Path 'C:\InterSystems\IRIS\dev\dotnet\bin\v4.5\InterSystems.Data.IRISClient.dll'$cc = New-Object InterSystems.Data.IRISClient.IRISConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$iris = [InterSystems.Data.IRISClient.ADO.IRIS]::CreateIRIS($cc)$ReturnValue = $iris.ClassMethodString("%SYSTEM.Version","GetVersion")$ReturnValue Powershellから.NETインタフェースを呼び出すサンプル2 classload.ps1というファイル名です。 処理内容は、xml形式のクラス定義をCaché /IRISにロードする処理になります。 以前のCaché のコードは以下の通りです。 Add-Type -Path 'C:\InterSystems\Ensemble\dev\dotnet\bin\v4.0.30319\InterSystems.Data.CacheClient.dll'$cc = New-Object InterSystems.Data.CacheClient.CacheConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$ms = New-Object InterSystems.Data.CacheTypes.CacheMethodSignature$ms.Clear()$ms.SetReturnType($cc,[InterSystems.Data.CacheTypes.ClientTypeId]::tString)$ms.Add("c:\temp\load.xml",1)[InterSystems.Data.CacheTypes.CacheObject]::RunClassMethod($cc,"%SYSTEM.OBJ","Load",$ms)$ms.ReturnValue._Value IRISでは以下のように書き換えます。 Add-Type -Path 'C:\InterSystems\IRIS\dev\dotnet\bin\v4.5\InterSystems.Data.IRISClient.dll'$cc = New-Object InterSystems.Data.IRISClient.IRISConnection("localhost",1972,"USER","_SYSTEM","SYS")$cc.Open()$iris = [InterSystems.Data.IRISClient.ADO.IRIS]::CreateIRIS($cc)$iris.ClassMethodStatusCode("%SYSTEM.OBJ","Load","c:\temp\load.xml","ck-d") IRISの方がコード量が少なくてすむことがおわかりいただけると思います。 注意点は、そのクラスメソッドの戻り値のタイプによって、呼び出すメソッドが変わることです。 サンプル1の場合は、バージョン情報というテキスト情報が返ってくる想定ですので、ClassMethodStringを使用します。サンプル2の場合は、戻り値はステータスコードが返ってくる想定ですので、ClassMethodStatusCodeを使用します。 .NETインタフェースを呼び出すコンソールアプリケーション 内容は、Powershellサンプルと同じです。 以下Caché 用のコードです。 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using InterSystems.Data.CacheClient;using InterSystems.Data.CacheTypes;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { CacheConnection conn = new CacheConnection(); conn.ConnectionString = "Server = localhost; Log File=cprovider.log;Port=1972; Namespace=Samples; Password = SYS; User ID = _SYSTEM;"; conn.Open();    CacheMethodSignature ms = new CacheMethodSignature();    ms.SetReturnType(conn, ClientTypeId.tString); CacheObject.RunClassMethod(conn, "%SYSTEM.Version", "GetVersion", ms);    Console.Write("ReturnValue = " + ms.ReturnValue._Value);    conn.Close(); } }} IRISで.Net Native APIを使用して書き換えたコードは以下になります。 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using InterSystems.Data.IRISClient;using InterSystems.Data.IRISClient.ADO;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { IRISConnection conn = new IRISConnection(); IRIS iris; conn.ConnectionString = "Server = localhost; Log File=irisnativeapi.log;Port=1972; Namespace=USER; Password = SYS; User ID = _SYSTEM;"; conn.Open(); iris = IRIS.CreateIRIS(conn); string ReturnValue = iris.ClassMethodString("%SYSTEM.Version", "GetVersion"); Console.Write("ReturnValue = " + ReturnValue); conn.Close(); } }}
記事
Mihoko Iijima · 2020年10月25日

IRIS の開始に失敗し messages.log に ^STURECOV を使用して復旧するように記載されている場合の操作方法

これはInterSystems FAQ サイトの記事です。 IRIS の開始ができず、messages.log に以下のようなエラーが出力された場合の対処方法についてご説明します。 -----------------------------------------------------------------08/11-08:55:14:180 ( 2224) 1 errors during journal rollback, see message.log file for details. Startup aborted, entering single user mode. Enter IRIS with c:\intersystems\IRIS\bin\iris -sc:\intersystems\IRIS\mgr -B and D ^STURECOV for help recovering from the errors. ----------------------------------------------------------------- このメッセージは、ジャーナルファイルの破損による IRIS 開始時のリカバリ処理がエラーになっていることを示しています。 IRIS を開始するためには、通常の開始処理を行わず (例:ジャーナルの適用を行わない) 開始するように ^STURECOV を使用して手順を変更します。 具体的な手順は以下の通りです。 1) IRIS のインストールディレクトリ以下 bin ディレクトリへ移動し、以下のコマンドを実行します。 > cd C:\intersystems\IRIS\bin <- \binへ移動> iris force IRIS 2) 一旦、通常起動処理 (STU) を行わないようにして IRIS を開始します。 2-1) Windows の場合は、タスクマネージャで、全 irisdb.exe がないのを確認後、通常起動処理(STU)を行わないようにして起動します。 > iris startnostu IRIS <---- IRIS=構成名 "nostuモード":あとで手動でSTUを行う。 ※nostu ― スタートアップ・ルーチンを実行しません (^STU)。 > irisdb -s ..\mgr -B 2-2) Windows 以外の場合は、ps コマンドで irisdb が存在しないことを確認後、通常起動処理(STU)を行わない開始を指定します。 > iris start iris nostu > iris session iris -B 以下、2-1) 2-2) 共通です。 上記実行で、プロンプトに %SYS> が表示されたらログイン成功です。 【注意】Windows で実行する場合「Use emergency login to login to the system」 のメッセージ、または のメッセージが出力される場合は、コマンドプロンプトを起動しているユーザが管理者 (administrator または administrators グループ所属) であるか、ご確認ください。 また、Windows で UAC が有効になっている環境では、コマンドプロンプトを「管理者として実行」が必要になる場合もあります。 3) STURECOV ルーチンを実行してジャーナルリカバリ情報をリセットします(記入例は赤字部分をご参照ください)。 %SYS>do ^STURECOVDo you want to continue ? No => yes <---- yesEnter error type (? for list) [^] => JRN <---- JRN入力Journal recovery options...8) Reset system so journal is not restored at startup...Enter choice (1-10) or [Q]uit/[H]elp? 8 <---- 8入力Are you sure you want to do this? No => yes <---- yesJournal recovery options...Enter choice (1-10) or [Q]uit/[H]elp? quit <---- quitExiting%SYS>%SYS>do ^STU <---- do ^STUを入力 Start Journaling? Yes => yes <---- yes %SYS>halt <---- haltでIRISのログインを終了します 5) Windowsでは、IRISのランチャーがグレーからカラーの表示に変更したら成功です。Windows以外のOSでは、 iris list の結果から status が running であれば成功です。 確認後、halt でターミナルを抜けます。 iris list の実行例は以下の通りです。 $ iris list Configuration 'IRIS' (default) directory: /usr/irissys versionid: 2020.1.0.215.0 datadir: /usr/irissys conf file: iris.cpf (SuperServer port = 51773, WebServer = 52773) status: running, since Sat Apr 18 18:24:10 2020 state: ok product: InterSystems IRISHealth$ その後、IRIS を再起動し、再起動が成功したら、messages.log を確認してください。 最後の起動時にエラーが存在しなければ、復旧処理は完了です。 ※復旧後は必ず整合性チェック (Do ^INTEGRIT または 管理ポータル > [システムオペレーション] > [データベース] > [整合性チェック]) を行うようにしてください。