none
[SQL Server Profiler] トレースログのHostNameの出力条件について RRS feed

  • 質問

  • SQL Server Profilerのトレースログを解析するプログラムを開発しています。

    データ列にHostNameがあり、そこにデータが入っているケースと入っていないケースがありました。

    下記のサイトを参照したところ、クライアントがホスト名を指定している場合にデータが格納されます。

    クライアントがホスト名を指定しているというのはどういう状態を指すのでしょうか?

    sqlcmdで操作した場合や以下のような接続文字列を使用してsqlconnectionを接続を行った場合

    @"Data Source=192.168.0.1;Initial Catalog=iPentecSandBox;Connect Timeout=60;Persist Security Info=True;User ID=sa;Password=saPassword";

    は問題なくHostNameにデータが入っていました。

    入らないケースはどういう操作が該当するのか参照したサイトの内容からはわかりませんでした。

    もしご存知の方がいたらご教授ください

    参照したサイトについては、以下になります。

    https://docs.microsoft.com/ja-jp/sql/relational-databases/sql-trace/sql-trace?view=sql-server-2017

    ※テキストになっています



    • 編集済み m-matsuda 2019年6月17日 1:17
    2019年6月11日 1:54

回答

  • m-matsudaさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信いただきありがとうございます。

    >HOST_NAMEの値は、接続文字列から取得された値ということでよろしいですか?
    →はい、そうです。

    >HOST_NAMEの値が空になるケースというのは、接続文字列から値が取得できなかったと考えて良いということですか?
    →"ホスト名"は、接続文字列内でアプリケーションからSQL Serverに渡されます。 
    空の文字列であっても、ホスト名プロパティに好きなことを書くことができます。 
    ですから、sp_Who2やDMVから実際のホスト名を取得する保証はありません。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク m-matsuda 2019年6月24日 1:21
    2019年6月20日 2:11
    モデレータ

すべての返信

  • m-matsudaさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    詳細な状況をご提供いただきありがとうございます。その後のご状況いかがでしょうか。 
    追加でご確認いただいたことなどあれば、追記いただくことで回答がつきやすくなります。 
    私共でもご案内できる情報がないか確認いたします。 

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年6月14日 5:56
    モデレータ
  • m-matsudaさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    >クライアントがホスト名を指定しているというのはどういう状態を指すのでしょうか?
    →ホスト名は、クライアントが実行されているコンピュータの名前です。 
    しかし、SELECT HOST_NAME()は、接続文字列でワークステーションID(またはWSID)として提供された値を報告します。 
    この値は簡単に変更できるので、複数のアプリケーションがWSIDに同じ値を持ち、最終的にそれらがすべてHOST_NAMEに同じ値を報告する可能性があります。 
    WSIDまたはワークステーションIDは128文字以下にする必要があることにご注意ください。

    ここで接続文字列に関するすべてを読むことができます。

    これは、SQL Server Management Studioで次のクエリを実行したときのクエリのスクリーンショットです。 
    このクエリは、基本的に SSMS 経由で接続しているときにマシンの名前を返します。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年6月18日 6:54
    モデレータ
  • フォーラムオペレーター Harukaさん。

    回答ありがとうございます。

    理解の確認のため、ひとつ質問させてください。

    HOST_NAMEの値は、接続文字列から取得された値ということでよろしいですか?

    HOST_NAMEの値が空になるケースというのは、接続文字列から値が取得できなかったと

    考えて良いということですか?


    2019年6月19日 0:36
  • m-matsudaさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信いただきありがとうございます。

    >HOST_NAMEの値は、接続文字列から取得された値ということでよろしいですか?
    →はい、そうです。

    >HOST_NAMEの値が空になるケースというのは、接続文字列から値が取得できなかったと考えて良いということですか?
    →"ホスト名"は、接続文字列内でアプリケーションからSQL Serverに渡されます。 
    空の文字列であっても、ホスト名プロパティに好きなことを書くことができます。 
    ですから、sp_Who2やDMVから実際のホスト名を取得する保証はありません。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク m-matsuda 2019年6月24日 1:21
    2019年6月20日 2:11
    モデレータ
  • フォーラムオペレーター Harukaさん。

    返信遅くなり、申し訳ありません。

    大変有用な回答ありがとうございました。

    2019年6月24日 1:22