zoukankan      html  css  js  c++  java
  • 【SQLSERVER】存储过程输出LOG文件

    【名    称】SQLserver用 ログ出力拡張ストアドプロシージャ(サンプル版)
    【版    数】0.90
    【動作環境】SQLserver
    【動作確認】Windows2003 server + SQLserver2000 EE SP3, Windows2000 server + SQLserver2000 DE SP3
    【提供形式】ZIP形式圧縮ファイル
    【制限事項】サンプル版につき2008年4月以降は使用できません(エラーになります)
    ------------
    【種    別】期間制限付きサンプル版
    【転    載】メールで事前連絡必須 fwkt1202@nifty.com
    ------------
    ※※ 注意事項 ※※
      【1】
      拡張ストアドプロシージャの特性上、内部で例外エラー等が起きた場合、
      SQLserver自体のプロセスが停止する危険性があります。
      そのため、クリティカルな環境での使用をお考えの方は、テスト環境等で
      十分なテストを行った上で本番システムへ組み込んでください。
      本プログラムは、(連続100万回書き込み X 同時50クライアント)の試験を数回行っておりますが、
      サービスパックや周辺DLLの状況によっては、動作が変わる可能性もありますのでご注意ください。
      【2】
      システムの性能にもよりますが、大量のログがテーブルに溜まってきた場合、
      書き込み速度が落ちる場合がありますので、適宜古いログを削除するジョブなどを設定する事を
      お勧め致します。また、当然の事ですが、ログ書き込み後は、呼び出し元のトランザクションと
      同期性、直列性がありませんので、ログ書き込みに対する処理等をお考えの場合はご注意ください。

    ●ファイル内容
      ① XP_LOG_OUTPUT.DLL    拡張ストアドプロシージャ本体
      ② AddExtendedProc.SQL  拡張ストアドプロシージャ登録用SQL
      ③ MakeTable.SQL        ログ格納用テーブル作成SQL
      ④ DropExtendedProc.SQL 拡張ストアドプロシージャ削除SQL
      ⑤ DropTable.SQL        カウンタ格納用テーブル削除SQL
      ⑥ ReadMe.txt           このファイル

    ●機能概要
      SQLserver内で実行中のトランザクションから分離して実行される
      ログ出力用拡張ストアドプロシージャです。
      トランザクションから分離されていますので下記の特徴があります。
      ① 呼び出し元のSQLが失敗してもロールバックされません。
      ② 1回毎のロジックが独立していますのでロックがほとんど発生しません。
      ③ SQLserverのオンメモリ実行のため、非常に高速です。
      ④ ロールバックされませんので、トリガ処理との組み合わせで色々な自動処理も可能です。
         特定のログ出力時にメール送信を行ったり、外部EXEの起動などもできると思います。

    ●利用方法
      ① 接続先のデータベースに対して、SQLserverの動作しているコンピュータ上でODBC接続用DNSを作成
      ② 任意のデータベースで「MakeTable.SQL」を実行し、テーブルを作成(テーブル名は変更できません)
      ③ SQLserverのBinフォルダに本体(XP_LOG_OUTPUT.DLL)をコピー
      ④ 「AddExtendedProc.SQL」を実行し、拡張ストアドプロシージャとして登録する

    ●実行方法
      xp_log_output 第1引数~第8引数(引数の省略、NULLの指定はできません)
         ① 第1引数:varchar 128:DNS名
         ② 第2引数:varchar 128:ログテーブルを作成したデータベース名
         ③ 第3引数:varchar 32 :出力ログ名称
         ④ 第4引数:int        :ログ番号(自動インクリメントではありません)
         ⑤ 第5引数:int        :ログレベル
         ⑥ 第6引数:varchar 32 :実行者名(必要ない場合は、空文字を指定)
         ⑦ 第7引数:varchar 512:ログ①
         ⑧ 第8引数:varchar 512:ログ②

      SQL例:exec master..xp_log_output 'TestDNS','TestDB','Log001',1234,9,'TestAuth','処理開始','A001-990'

    ●削除方法
      ① 「DropExtendedProc.SQL」を実行
      ② SQLserverのBinフォルダから本体(XP_LOG_OUTPUT.DLL)を削除
      ③ 「DropTable.SQL」を実行し採番テーブルを削除

    ●免責事項
      ・本プログラムは期間限定のサンプルプログラムです。期間内は無料でご使用頂けます。
      ・期間制限なしのシェアウェア版は2008年1月頃公開予定です。
      ・アーカイブ形式でのみ再配布可能です。
      ・作者はプログラムの完全な動作を保証する物ではありません。
      ・本プログラムを使用した上で生じたいかなる損害についても、製作者は一切の責任を負いません。
      ・サポート義務は負いません。
      ・メールでご質問は受け付けますが、素早いレスポンスは期待しないでください。
      ・バグ修正は、できるだけ行いたいと思いますが、全てに対処できるわけではありません。
        しかし、可能な限り良いプログラムは提供したいと思います。

    本地下载:XP_LOG_OUTPUT.zip