「nsfのバージョンが無効です」って?(ODSって何かな?)
■現象
- R5で作ったDBをR4環境に持っていって開こうとすると「nsfのバージョンが無効です」ってエラーが出て開けない。
■原因
- DBはそれぞれODSっていう番号を持ってて、この番号を見るとR4形式のDBなのかR5形式なのかがわかるようです。
ODSっていうのはデータベース形式(On-Disk Structure、ODS)のことだそうで、
という感じみたい。
で、自分のバージョンより上位のバージョンのODS番号を持ったデータベースを開こうとすると、「nsfのバージョンが無効です」が出て開けないようです。
ODSの番号はデータベースのプロパティで見れます。↓これで言えば、41番だから、R5形式だなーと。
- R5サーバ(上位のサーバ)上にあるものをR5サーバを通してアクセスする分には、R4クライアント(下位のクライアント)からアクセスした場合でもR5サーバが良きに計らってくれるので、ODSがR5形式(41)でもR4クライアントで普通に読めるようです。
といっても、R5からの新機能とかは使えないのかも。
でも、以下の場合はODSがR5形式(41)だとダメだそうです(システム管理ヘルプより)。
- R4クライアントがローカルにレプリカ取る。(コピーだといいのかな?)
- DBをコピーまたはレプリカでR4サーバの上に置く。
コピーとかレプリカとかどう違うの?って方は、拙い説明ですが別に書いたことがあるのでこちらもどうぞ。
- 要するに、バージョンが下のサーバ、クライアントはあくまでも上位のODS番号のDBは扱えなくて、開こうとしても「nsfのバージョンが無効です」のエラーが出るだけだけど、上位のサーバを通した場合にはそのサーバが気を利かせてアクセスできるような形で見せてくれるということかな。
- ちなみに、R5サーバに置いたDBは、compactタスクが走ると勝手にODS41に変換されるようです。
compactタスクは既定では手動で動かさないと流れないけど、たいてい何かのタイミングでcompactとかやるからいずれは変換されますですね。
■対処
- サーバはR5に上げたけど、まだまだR4クライアントやサーバが現役だからとR4形式のODS(20)のままにしておきたいDBがある場合はどうするかというと、エクスプローラから目的のDBの拡張子を.NS4に書き換えてしまうといいようです。強引な。
R5サーバの中で.NS4の拡張子を持っているDBは、compactタスクが流れたときにもODSの変更は免れるようです。
- ↑この方法は予防方法で、既にR5形式のODSになってしまっているという場合には、compactタスクを-rオプション付きで流せばR4形式に戻るようです。
それか、管理クライアントからDBを選択して[圧縮]を選んで、「R4.xのデータベース形式で圧縮する」を選ぶか。
戻ったやつを.NS4の拡張子に直せば、今後はR5形式にされずに済みそうです。
それか、この戻った状態でR4サーバ側からアクセスしてR4サーバの中に引き上げればOK。
R5サーバ側からコピーすると、ODS41に戻っちゃいます。
■参考リンク
目次に戻る