VBでこんな事は出来ますか?


新入社員  2002-02-14 01:30:51  No: 75266

只今、VB6、Rdo、Oracleを使用して以下の様なプログラムを作れ
とのご命令なのですが、どなたかお解りであればご教示お願いします。
接続先のデータベースに現在接続している全てのユーザーを切断する。
Rdoを使用し、自分を切断する事は当然出来るのですが
自分以外の接続ユーザーを全て切断する事は可能なのでしょうか?
初心者の為詳しく教えていただければ恐縮です。


マザー  2002-02-18 19:29:15  No: 75267

接続ユーザー皆殺しですか・・・
そんな恐ろしいプログラムを使用すると言う事にまず反対しておきます。
回答ですが、いくつかの条件がありますが出来ます。
VBと言うよりほとんどがOracle側の知識になってしまうのですが
VB.Rdoで組むとこんな感じです。
    ※ oCn  'RdoConncetion
    Dim oRs As rdoResultset
    'DB接続略・・・
    sSQL = "SLECT * FROM V$SESSION "
    'レコード取得
    Do Until oRs.EOF
        If ※1の条件を満たす Then
            sSQL = "ALTER SYSTEM KILL SESSION '" & oRs![SID] & _
                        & "," & oRs![SERIAL#] & "'"
            oCn.Excute sSQL
        End If
        oRs.MoveNext
    Loop
説明
V$SESSIONとはOracle自身が持つセッション管理のDBAビュー?
KILL SESSION 'セッションID,シリアル番号';
↑切断命令です、トランザクション等は全て破棄されると思います
※接続時のユーザーはALTER SYSTEMの権限が必要になります。
※1の条件には以下を行う。
  ①  自分ではない事(現行セッションは殺せません)
  ②  ユーザーセッションである事(Oracleインスタンス等サーバー自身のセッションは殺せません)
VBで行うよりOracleのストアドファンクションに持つほうが良いと思います
よく理解しないと大変な事になるので気をつけて下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加