none
BCPコマンドをSCRIPT作成しましたが、queryoutのファイルの出力されません RRS feed

  • 質問

  • 下記のようなSHELLを作成してSCRIPT実行しましたが、
    queryoutの出力結果がなにも表示されません。bcpコマンドを編集して実行すれば

    出力結果は得られます。実行されているか、エラーになっているのかが不明です

    波線のし下はBCPコマンドのバッチファイルの内容です

    このバッチファイルを実行すると、queryoutのファイルに出力されます

    aDim Shell

    Dim bcpcmd
    Dim rtn
    Dim COUNT
    Set Shell = CreateObject("WScript.Shell")
    bcpcmd = "select count(*) from sys.fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log\am\log_6.trc',default) where LoginName = 'sa' and (StartTime >= '2019-01-01 00:00:00' or EndTime <= '2019-07-13 23:59:59')" & " queryout " & "C:\odbc\countfile.csv" & " -c -S" & " *********" & "-T" 
    'コマンドを発行
    Shell.run "cmd /C ""bcp " & bcpcmd & """", 0, False
    set Shell = Nothing
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    編集後のbcpコマンド

    bcp "select count(*) from sys.fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log\am\log_6.trc',default) where LoginName = 'sa' and (StartTime >= '2019-01-01 00:00:00' or EndTime <= '2019-07-13 23:59:59')" queryout "C:\odbc\countfile.csv"-c -S " *********" -T 

    2019年7月16日 4:06

回答

  • Haruka様へ、ありがとうございます
    >1.SQL Serverを使用してSSMSでこのコードを実行しますか。 
     実行します。
    >2.SQL Serverのバージョン情報を教えていただけますでしょうか。 
    Microsoft SQL Server Management Studio 10.50.4000.0
    sqlservr.exe 10.50.4000.0
    >3.あなたのログに何かエラーがありますか。
    SQLState = S1000, NativeError = 0
    Error = [Microsoft][SQL Server Native Client 10.0]BCP ホストのデータファイルが開けません。

    詳細な内容です

    1.トレースフォルダ内の拡張子がtrcのみのファイルをリスト化
     【例】
      トレースファルダ:
             C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\     トレースファイル:
           log_89.trc、log_90.trc
        トレースファイルのリスト化の内容
            C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\log_89.trc      
            C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\log_90.trc

    2.リストファイルを読込みして以下の様なselect命令を含むBCPコマンドを実行する
      SELECT COUNT(*) FROM SYS.fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\log_89.trc',default) where LoginName='ABC' and
    StartTime>='2019-08-22 17:30:00' and StartTime<='2019-08-22 17:45:00'

    ※2件目は2件目のトレースファイル名になります

    3.上記の内容を以下の様なBCPコマンドで実施する
      bcp "上記のSELECT命令" queryout C:\abc.csv -c -S SERVER01 -e C:\Error01.log -o C:\Error02.log -T
        ※認証は、SQL Server認証とWindows認証にしています

    4.BCPコマンド実行結果
      「最初のレコード」のみBCPコマンドが失敗する、2番目のレコード処理は正常に終了する

      失敗した時の Error02.log の内容
      「SQLState = S1000, NativeError = 0
         Error = [Microsoft][SQL Server Native Client 10.0]BCP ホストのデータファイルが開けません。」

    • 回答としてマーク momocyan99 2019年8月21日 3:00
    • 編集済み momocyan99 2019年8月22日 8:48
    2019年8月21日 2:12

すべての返信

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

    実際の環境といくつかの簡単なデータにつきまして詳細な情報がないので、下記の3点をご確認いただけますでしょうか。
    1.SQL Serverを使用してSSMSでこのコードを実行しますか。 
    2.SQL Serverのバージョン情報を教えていただけますでしょうか。 
    3.あなたのログに何かエラーがありますか。

    この問題がShellにもっと関連しているようと思っていますので、
    対応するフォーラムに投稿することで、プロな意見を得るでしょう。

    また、公式の記事bcpユーティリティを参照いただければと思います。

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


    MSDN/ TechNet Community Support Haruka

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

    2019年7月18日 7:41
    モデレータ
  • Haruka様へ、ありがとうございます
    >1.SQL Serverを使用してSSMSでこのコードを実行しますか。 
     実行します。
    >2.SQL Serverのバージョン情報を教えていただけますでしょうか。 
    Microsoft SQL Server Management Studio 10.50.4000.0
    sqlservr.exe 10.50.4000.0
    >3.あなたのログに何かエラーがありますか。
    SQLState = S1000, NativeError = 0
    Error = [Microsoft][SQL Server Native Client 10.0]BCP ホストのデータファイルが開けません。

    詳細な内容です

    1.トレースフォルダ内の拡張子がtrcのみのファイルをリスト化
     【例】
      トレースファルダ:
             C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\     トレースファイル:
           log_89.trc、log_90.trc
        トレースファイルのリスト化の内容
            C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\log_89.trc      
            C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\log_90.trc

    2.リストファイルを読込みして以下の様なselect命令を含むBCPコマンドを実行する
      SELECT COUNT(*) FROM SYS.fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Log\log_89.trc',default) where LoginName='ABC' and
    StartTime>='2019-08-22 17:30:00' and StartTime<='2019-08-22 17:45:00'

    ※2件目は2件目のトレースファイル名になります

    3.上記の内容を以下の様なBCPコマンドで実施する
      bcp "上記のSELECT命令" queryout C:\abc.csv -c -S SERVER01 -e C:\Error01.log -o C:\Error02.log -T
        ※認証は、SQL Server認証とWindows認証にしています

    4.BCPコマンド実行結果
      「最初のレコード」のみBCPコマンドが失敗する、2番目のレコード処理は正常に終了する

      失敗した時の Error02.log の内容
      「SQLState = S1000, NativeError = 0
         Error = [Microsoft][SQL Server Native Client 10.0]BCP ホストのデータファイルが開けません。」

    • 回答としてマーク momocyan99 2019年8月21日 3:00
    • 編集済み momocyan99 2019年8月22日 8:48
    2019年8月21日 2:12