dポイントプレゼントキャンペーン実施中!

BCPコマンドのリダイレクト値が空になる
現在、VB.NET2005で開発を行っております。
バッチファイルにて、SQLServerExpressからCSVを作成しているのですが、
リダイレクトの出力結果をログファイルに出力する際
結果が空になる場合があるのです。
SQLExpressを止める等、強制的にエラーを起こしてみたりしたのですが
その場合は接続エラーがでますし、正常の場合は「コピーを開始中です...以下略」
と何かしらのメッセージが出力されます。

ログが空になるというのはどういう場合が考えられるのでしょうか。
お分かりの方がおられましたらお力をお貸しください。
お願いします。

バッチの中身は
******************************
BCP "SELECT * FROM TABLE" queryout D:\AAA.csv -c -t , -r \n -S localhost\SQLEXPRESS -U XXX -P XXX > D:\AAA.log
******************************
こんな感じです。

A 回答 (1件)

手元にMSSQLが無いので推測です。



強制的にエラーにすると接続エラーが出る、との事ですが、以下の可能性が考えられます。

DOSのコマンドの多くはエラーの場合、正常時とエラー時で出力される標準出力が違います。
つまり、接続エラーと正常メッセージは別の領域に吐かれている、と言う事です。

それを両方同じにするなら

> D:\AAA.log



> D:\AAA.log 2>&1

とする必要があります。

最後のおまじないは、「エラー時にも正常の標準出力として表示せよ」と言う意味です。
(Unix/LinuxでもWindowsでも同じ)
    • good
    • 0
この回答へのお礼

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

やはり何かしらのエラーが出てるけど
標準ログには入っていいないと言うことなんでしょうかね。

DBとめたり、テーブルリネームしても
標準ログに入ってくるので、上記の書き方をしていなかったんですが
逆にどういう処理をしたら標準ではないエラーログに出力されるんでしょう。。。

お礼日時:2010/08/27 23:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す