in

TimberLandChapel.com Community Stage

技術者はたゆまぬ努力と一瞬のひらめき。。。
TimberLandChapel は日々研鑽する技術者をサポートします。DevPartner U.G. を立ち上げました。(2007.08.20)

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

最新の投稿は、投稿日時: 2008-06-12 10:56 投稿者: maseki です。スレッドには 4 件の返答があります。
ページ 1 / 1 (5 アイテム)
投稿のソート: 前へ 次へ
  • 2008-06-11 10:04

    • maseki
    • 貢献度トップ 10
    • 登録日 : 2007-05-25
    • 投稿数 22

    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\)にあるという条件で可能と思います。

  • 2008-06-11 11:04 返答元:

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

    お疲れ様です。TimberLandChapel です。

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

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

    DECLARE @SomeID int

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

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

    /----------
     TimberLandChapel
     TimberLandChapel.com Community Stage 管理者
    ----------/
  • 2008-06-11 15:56 返答元:

    • maseki
    • 貢献度トップ 10
    • 登録日 : 2007-05-25
    • 投稿数 22

    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' が必要です。」

    というエラーがでます。

     

     

  • 2008-06-11 19:46 返答元:

    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 管理者
    ----------/
  • 2008-06-12 10:56 返答元:

    • maseki
    • 貢献度トップ 10
    • 登録日 : 2007-05-25
    • 投稿数 22

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

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

     

ページ 1 / 1 (5 アイテム)
Powered by Community Server (Non-Commercial Edition), by Telligent Systems