MS-SQL WWN テーブルロックしない
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
MS-SQLのテーブルをWRNでオープンするオンラインタスクを
作り、2本の開発版からそれぞれ動かしてみました。
エラーが出ずに、どちらもオンラインタスクが開きました。
WNNに変えても動きます。
何か設定がまずくてこうなるのでしょうか?
uniPaaS V1 Plus 1.9g
MS-SQL SERVER 2008 R2 EXPRESS
作り、2本の開発版からそれぞれ動かしてみました。
エラーが出ずに、どちらもオンラインタスクが開きました。
WNNに変えても動きます。
何か設定がまずくてこうなるのでしょうか?
uniPaaS V1 Plus 1.9g
MS-SQL SERVER 2008 R2 EXPRESS
投票数:0
平均点:0.00
Jiro123
投稿数: 271
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
テーブルロックは、RDBMSの場合、Oracleしかサポートされていなかったと思います。
ヘルプには次のような記載がありますよ。
テーブルのアクセスモードと共有モード
〜省略〜
RDBMSを使用している場合は、Open FileコマンドもOpen Tableコマンドもありません。したがって、アクセスモードおよび共有モードは、ほとんど意味がありません。ただし、以下の場合は例外です。
・共有モードが「N=なし」の場合、SQLゲートウェイによって、SQLデータベースに[LOCK TABLE]コマンドが送信されます。これは、Oracleでのみ行われます。
・アクセスモードが「R=読込」、共有モードが「W=書出」で、テーブルがリンクテーブルの場合、ロックが要求されても、リンクテーブルのレコードはロックされません。
・アクセスモードが「W=書込」の場合は、リンクテーブルも更新されると想定し、リンクテーブルに対してもロックが発行されます。
あと、遅延トランザクションの場合は、レコードロック(更新ロック)も行われないですよね。
ヘルプには次のような記載がありますよ。
テーブルのアクセスモードと共有モード
〜省略〜
RDBMSを使用している場合は、Open FileコマンドもOpen Tableコマンドもありません。したがって、アクセスモードおよび共有モードは、ほとんど意味がありません。ただし、以下の場合は例外です。
・共有モードが「N=なし」の場合、SQLゲートウェイによって、SQLデータベースに[LOCK TABLE]コマンドが送信されます。これは、Oracleでのみ行われます。
・アクセスモードが「R=読込」、共有モードが「W=書出」で、テーブルがリンクテーブルの場合、ロックが要求されても、リンクテーブルのレコードはロックされません。
・アクセスモードが「W=書込」の場合は、リンクテーブルも更新されると想定し、リンクテーブルに対してもロックが発行されます。
あと、遅延トランザクションの場合は、レコードロック(更新ロック)も行われないですよね。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
Jiro123様
> ヘルプには次のような記載がありますよ・・・
そうなんですね、知りませんでした。
でもWNFとかが効かないのはちょっとビックリ。
ご回答を頂き有り難う御座いました。
> ヘルプには次のような記載がありますよ・・・
そうなんですね、知りませんでした。
でもWNFとかが効かないのはちょっとビックリ。
ご回答を頂き有り難う御座いました。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
nkmt さん、こんにちは。
Magic ロックを ON にして試してみるのも価値あるかもしれませんよ。
タンダコンピュータ/丹田 昌信
Magic ロックを ON にして試してみるのも価値あるかもしれませんよ。
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
nkmt さん、こんにちは。
プロジェクトは同時に1セッションしか開けないはずですが、
nkmt さんがやっておられる環境は、DB だけ共有して、開発セッションは
まったく別々のマシンで、という環境でしょうか?
あるいは、バージョン管理ツールを使用して、別セッションで開発した場合
ということですか?
タンダコンピュータ/丹田 昌信
プロジェクトは同時に1セッションしか開けないはずですが、
nkmt さんがやっておられる環境は、DB だけ共有して、開発セッションは
まったく別々のマシンで、という環境でしょうか?
あるいは、バージョン管理ツールを使用して、別セッションで開発した場合
ということですか?
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
> プロジェクトは同時に1セッションしか開けないはずですが
バージョン管理ツールを使用する事もあります。
自己責任ですが、edpファイル、iniファイル、起動アイコン
を2つずつ用意して、同一ソースを開くという事もやります。
ソース排他も無いので、片方でメンテ、
もう片方は参照専用でやっています。
ですが、今日初めてソースを壊してしまい
2時間分程の作業を駄目にしてしまいました。
バージョン管理ツールを使用する事もあります。
自己責任ですが、edpファイル、iniファイル、起動アイコン
を2つずつ用意して、同一ソースを開くという事もやります。
ソース排他も無いので、片方でメンテ、
もう片方は参照専用でやっています。
ですが、今日初めてソースを壊してしまい
2時間分程の作業を駄目にしてしまいました。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
丹田さん こんにちは。
> Magic ロックを ON にして試してみるのも価値あるかもしれませんよ。
プロジェクトを閉じて
オプション → 設定 → データベース → プロパティ
→ MSSQLの特性 → Magicロック を B=両方 や T=テーブル
にすると、WNNのタスクでちゃんと
データソースのロック解除待ちです.:商品マスタ
といった感じで待たされるようになりました。
有難う御座いました。
> Magic ロックを ON にして試してみるのも価値あるかもしれませんよ。
プロジェクトを閉じて
オプション → 設定 → データベース → プロパティ
→ MSSQLの特性 → Magicロック を B=両方 や T=テーブル
にすると、WNNのタスクでちゃんと
データソースのロック解除待ちです.:商品マスタ
といった感じで待たされるようになりました。
有難う御座いました。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
nkmt さん、こんにちは。
やはり、そうでしたか。
これはやはり、歴史的な流れが関与しているみたいですね。
つまり、こうです。
同一セッション内での排他は、DB の排他制御に任せる。つまり、同じ
アプリケーション内での異なるタスク同士の排他は、これに準拠するわけです。
これにたいして、別セッションでの排他、つまり、nkmt さんが試しておられた
ような排他は、ファイルを作って昔ながらの Magic ロックで制御する。
これで納得が行きますね。
タンダコンピュータ/丹田 昌信
やはり、そうでしたか。
これはやはり、歴史的な流れが関与しているみたいですね。
つまり、こうです。
同一セッション内での排他は、DB の排他制御に任せる。つまり、同じ
アプリケーション内での異なるタスク同士の排他は、これに準拠するわけです。
これにたいして、別セッションでの排他、つまり、nkmt さんが試しておられた
ような排他は、ファイルを作って昔ながらの Magic ロックで制御する。
これで納得が行きますね。
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00