Ohataさん
こんにちは。
残念ながら、ミラーリングですと、%NOJOURNキーワードは無視されるようです。

その他の方法を探してみたところ、ObjectScriptから実行することになりますが、
$SYSTEM.Process.TransactionsSuspended()でトランザクションを一時停止すると、その間の更新はバックアップサーバに値は転送されますし、ロールバックしても戻らなくなりました。

まず、JRNTEST.Testテーブルに2行追加します。
USER>s r=##class(%SQL.Statement).%ExecDirect(,"insert jrntest.test set p1=1")
USER>s r=##class(%SQL.Statement).%ExecDirect(,"insert jrntest.test set p1=1")
トランザクションを開始します
USER>s r=##class(%SQL.Statement).%ExecDirect(,"start transaction")
トランザクションを一時停止します。
TL1:USER>d $SYSTEM.Process.TransactionSuspended(1)
ID=1のレコードのカラムP1の値をインクリメントします。
TL1:USER>s r=##class(%SQL.Statement).%ExecDirect(,"update jrntest.test set p1=p1+1 where id=1")
トランザクションを再開します
TL1:USER>d $SYSTEM.Process.TransactionSuspended(0)
ID=2のレコードのカラムP1の値をインクリメントします。
TL1:USER>s r=##class(%SQL.Statement).%ExecDirect(,"update jrntest.test set p1=p1+1 where id=2")
現在値を確認します。
TL1:USER>do ##class(%SQL.Statement).%ExecDirect(,"select * from jrntest.test").%Display()
ID      p1
1       2
2       2

2 Row(2) Affected
ロールバックします
TL1:USER>s r=##class(%SQL.Statement).%ExecDirect(,"rollback")
現在値を確認します。
USER>do ##class(%SQL.Statement).%ExecDirect(,"select * from jrntest.test").%Display()
ID p1
1 2
2 1

2 Row(s) Affected

よろしくお願いします。

Ohataさん、
こんにちは。
ちょっと調べてみたのですが、
UPDATE文に%NOJOURNというオプションがありますので

    UPDATE  %NOJOURN table SET counter = counter + 1 WHERE name='xxx'

のように記述いただくと、その更新はロールバックを無視します。
よろしくお願いします。

Ohataさん、こんにちは。

既に解決されているかもしれませんが、記述されていた通り、スタンドアロン環境ではパッケージをインストールできませんので、以下の手順でインストールする必要があるかと思います。

1. インターネット環境にて必要なパッケージ(.gzファイル)をダウンロードする  

irispip download -d c:\intersystems\iris\mgr\python --no-binary :all: <パッケージ名>

c:\InterSystems\IRIS\mgr\pyhtonフォルダにパッケージ(tar.gz形式)のファイルが作成されます。

2. スタンドアロン環境にパッケージをコピー

3. スタンドアロン環境にてパッケージをインストール

irispip install c:\intersystems\iris\mgr\python\<パッケージファイル名>

以下のサイトを参考にしました。

https://qiita.com/analytics-hiro/items/2565adbb2c900e6738cd

フォロワー:
フォロー中:
Toshihikoさんはまだ誰もフォローしていません。
Global Mastersバッジ: