Magic

Magicからのデータベースセッションについて

こんにちはー。Y.Takahashiです。

今日は私が仕事で使っているソフトMagicxpaとデータベースとの接続についてはなしたいと思います。

皆さん、プログラミングするに当たってデータベースとの接続を気にしたことありますか?

言語系のプログラミングをしている方であれば、「そんなの当たり前すぎて呼吸するぐらい簡単だよ」ってなるかと思います。

しかし、大学のコンピュータ実習以外では、ずっとMagic一筋の私にとってはいまいち曖昧なんですよね。

Magicってデータビューに定義するだけ(昔ならレコードメインで定義するだけ)で後は勝手にデータベースに接続してテーブルをオープンするので、そのあたりMagicユーザーって気にしないのですね。気にしてもせいぜい読み取り専用モードで開くかどうかぐらいですね。

最近私はこれについて考えさせられました。

MS-SQLをDBMSとして使っていると、ネットワーク障害やサーバー側でSQLのサービスないしOSのリブートが起こった際、その時クライアント側でSQLを掴んでいなくても後で掴みに行くと「DB接続エラー」になるんですね。

ここで勝手に「何もテーブルをオープンしていなければセッションは張っていないはず」って思い込んでしまったのですね。

PervasiveSQL(現 Actian Zen PSQL)の場合だと、モニターがあって、テーブルのオープン状況を見れていたので、そこで上がっていなければセッションを張っていないと解釈していました。でもこれって私の勝手な解釈なんですね。

MS-SQLで確認しようと調べたら、Microsoft SQL Server Management Studio(MSSM)で接続状況みれるんですね。私、これ知りませんでした。

使い方は簡単ででした。

1.MSSMを起動

2.対象のインスタンスに接続

3.接続したインスタンスを右クリック→利用状況モニターをクリック

利用者モニターの場所

プロセスの所に自分の名前と接続しているアプリケーションの名前が出ています。

MSSQLの利用状況モニター

Magicで色々操作してみると分かったのですが、これって何かしないとMagicを終了するまでセッションを消しません。

どうもこれが原因で、一旦セッションが切れてもMagicは接続しに行こうとして「DB接続エラー」になるようです。

理屈は、

1.MagicがSQLにセッションを張る。

2.SQL側でセッション番号を振り出す。

3.MagicはSQLから振り出したセッション番号に対してやり取りを始める。

ここでSQLのサービスが再起動すると。

4.SQL側のセッション情報がクリアされる。

5.Magic側から”3”で振り出されたセッションに対してやり取りを始めようとする

6.セッション番号が見当たらないので「接続できません」とエラーを返す。

のようでした。

ちょっと前に「何かしないとセッションは消えない」と言いましたが、接続を切る方法があるんですね。

関数でDbdiscnt(‘データベース名’)ってのがあります。

これをSQLに接続を張る前に実行しておくと、Magicの内部的に持っているセッション情報をクリアして、改めてセッションを張るようです。

関数で切断はありますが、どうも接続は無いようです。

それでは。

 

ABOUT ME
bfmr84
いわゆる就職氷河期世代のオス。 大学時代は法律系をやっていましたが、あまりに法律特有の屁理屈の多さに辟易し挫折。興味のあったPC系を進むことになりました。 dbMagicのV7からMagicxpa4.7までをメインにやっています。 構築システムは販売管理、POS、給与、物流といろいろ。 OSはWindows系をメインにLinux(Redhat、CentOS、Ubuntu)を少々。 あとネットワークは主にYamahaのルーターをコマンドベースで触っています。その延長線上でIP電話なんかも。 とにかくPC関連であればいろいろ触っています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA