in

TimberLandChapel.com
Community Stage

Untiring efforts and inspiration of the moment...
TimberLandChapel.com supports the engineers who study every day.

TraceIDを変数としsp_trace_setstatusに組み込むSQL文

Last post 木, 6 12 2008 10:56 by maseki. 4 replies.
Page 1 of 1 (5 items)
Sort Posts: Previous Next
  • 水, 6 11 2008 10:04

    • maseki
    • Top 10 Contributor
    • Joined on 木, 5 24 2007
    • Posts 24

    TraceIDを変数としsp_trace_setstatusに組み込むSQL文

    お世話になります。

    TraceIDはトレースファイルをsp_trace_createストアドプロシージャで作成した時にOUTPUTとして返され、サービスを再起動するたびにトレースファイルが作成されます。
    タスクジョブにトレース開始、終了のSQL文sp_trace_setstatusにTraceIDを変数とし組み込みたいと思っています。
    具体的には、select * from ::fn_trace_getinfo(default)ですべてのアクティブなトレースに関する情報が返されます。
    このうち特定のトレースのTraceIDを何らかの形でsp_trace_setstatusの第一引数へ引き渡せるようなロジックをTransact-SQL等を利用して作成するにはどのようなプログラムを作成すれば良いでしょうか。
    特定トレースはトレース情報のプロパティ2(ファイル名)がトレースが作成される度に変わりますので、Pホルダ(P:\trace\)にあるという条件で可能と思います。

  • 水, 6 11 2008 11:04 In reply to

    Re: TraceIDを変数としsp_trace_setstatusに組み込むSQL文

    お疲れ様です。TimberLandChapel です。

    意図されていることがいまいちよくわかりませんが,

     システムストアドプロシージャとはいえ,引数はただの int 型の変数ですから,

    DECLARE @SomeID int

    で宣言して取得・利用すればよろしいんじゃないでしょうか?

    それとも何か特殊な状況が発生するのでしょうか?

    <-------------------------
     TimberLandChapel
     TimberLandChapel.com Community Stage Administrator
    --------------------------->
  • 水, 6 11 2008 15:56 In reply to

    • maseki
    • Top 10 Contributor
    • Joined on 木, 5 24 2007
    • Posts 24

    Re: TraceIDを変数としsp_trace_setstatusに組み込むSQL文

    早速ありがとうございます。

    declare @sw int
    set @sw = (select traceid from ::fn_trace_getinfo(default)
    where property=2 and value='P:\user\trace\AuditTrc20080610145923  .trc')
    exec sp_trace_setstatus @sw,1

    この場合のwhere 条件のvalue=の値ですが、トレース作成するとファイル名が変わってしまいます。

    そこで value='P:\user\*.trc'  とするも where value like 'P:\user\trace\%' とするもヒットできず、

    「メッセージ 214、レベル 16、状態 3、プロシージャ sp_trace_setstatus、行 1プロシージャにはデータ型 'int' のパラメータ '@traceid' が必要です。」

    というエラーがでます。

     

     

  • 水, 6 11 2008 19:46 In reply to

    Re: TraceIDを変数としsp_trace_setstatusに組み込むSQL文

    お疲れ様です。TimberLandChapel です。

    複雑な用途に組み込む前に,クエリのテストをされた方がよいと思います。

    問題はsp_trace_setstatus の引数の問題ではありません。

    @sw を取得してくるクエリを単体でテストされていれば気づけると思うのですが。。。

     fn_trace_getinfo の返す結果セットの型に注意してください。

    value のデータ型は sql_variant 型です。char でも nchar でもありません。

    そのデータ型に LIKE 演算をかけるとどうなるか?

    そして,結果セットが NULL の状態で変数を設定して,次のクエリにパスしたらどうなるか?

    ということではないでしょうか。

     

    <-------------------------
     TimberLandChapel
     TimberLandChapel.com Community Stage Administrator
    --------------------------->
  • 木, 6 12 2008 10:56 In reply to

    • maseki
    • Top 10 Contributor
    • Joined on 木, 5 24 2007
    • Posts 24

    Re: TraceIDを変数としsp_trace_setstatusに組み込むSQL文

    ありがとうございました。CASTで解決できました。本当にマニアックなんですね。

     

Page 1 of 1 (5 items)
©TimberLandChapel.com all right reserved 2005-2011.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems