最近関わっている仕事で、富士通の汎用機の固定長データを受理するケースがある。それもCMT(*1)で。それを読み込みデータコンバートしてくれる機械もあるが、いつ壊れてもおかしくないらしい。
そんなもの、ファイル転送すればいい。しかし、PCで扱うにはいくつかクリアしておかないといけない課題がある。それを列挙してみよう。

[全般]
 ・固定長データでよい。
 ・漢字コードはファイル転送時に自動的に変換される。ただし、外字を使っている場合はその限りにあらず。
[文字]
 ・特記事項なし
[数字]
 ・通常(ゾーン十進)形式はそのままでよし。
 ・サイン付きの場合、符号部と符号無し数値部に分けた項目か、符号付きの数字かに変換しておく。
 ・圧縮形式(パック十進やバイナリー)は通常(ゾーン十進)形式に変換する。
 ・仮想小数点は、小数点を入れる。

こんなところだろうか?


とりあえず、参考になれば。


*1 CMT :カートリッジマグネティックテープ。昔はオープンリールの磁気テープが多かったが、取り扱いが面倒なのでカートリッジに収められたもの、だと考えればよいか。大型汎用機ではまだ主流の外部記憶装置のようである。
SQL Server の環境をそのままバックアップまたはオフラインしたものをコピーし、別の環境に移す際に、バージョンの違いが問題になることがある。上位バージョンのデータベースをリストアまたはアタッチしようとしてもエラーが出るのだ。

これを回避する方法がMicrosoftのサイトにも書かれているのだが、具体的に何をやればいいのか分からない。日本語の問題か?と思い英語を読んでも誤訳ではなかった。

SQL Server 2000から2005にアップグレードする際、マイグレーションセミナーに申し込み、トレーニングを受けたことがある。これは実際にデータベース等を持ち込んで実際に触ってみる/分からないところは質問する、という形式で、仕事場の片隅で放置状態(というと適切ではないかも知れないが、ご自由にどうそ、というスタイル)で行われた。
その際、過去データベースのバージョンを選択でき、そのバージョンにしてやれば過去のものでもそのまま動く、というものだった。

上記での対応は2005のSQL Server Management studio を使ってなら、理解できなくはない。

しかし、2008ではそはいかず、である。

なお、過去のデータベースの互換に関しては、2008では2000までの対応である。次のバージョンでは2005までの対応となるそうだ。古いデータベース形式に対応するのは困難ではないはずだし、パフォーマンスも変わらないと聞く。そうなると、製品のライフサイクルをいたずらに短くしているだけではないのか?と勘ぐりたくなる。

他のデータベースエンジンはどうなのだろう?情報があるとありがたい。



SQL Server には DTS というツールが付いてくる。SQL Server 2008 などではショートカットやメニューが作成されないため、直接プログラムを起動することになる。

しかし、このDTS、使わなくて済むなら済ませた方がいい。

データベースをコピーしようとした際に発生したトラブルとして
 ・ビューとテーブルとしてコピーした。
 ・テーブルの IDENTITY 属性が外れた。
 ・テーブルのキー/インデックスが外れた。
といった弊害があった。ツールとしてはちょっと中途半端だ。聞いた話ではレコードが欠落する場合もあるという。


こういう罠を理解した上で使用する分にはいいだろう。