オプションとしてqueryoutを使用してBCPプロセスを作成しました。結果として、クエリが実行され、結果が指定された出力ファイルに書き込まれる(または書き込まれる)必要があります。使用されているクエリは、SQLクエリアナライザ(MS SQL 2000を使用)で既知の結果セットを生成するために確認されています。BCP ...クエリアウトの実行により、データが存在することがわかっている行が0行に誤って返される
しかし、BCPコマンドでバッチファイルを実行すると、ゼロ行が返されます(レスポンス "0 rows copied")。しかし、私はこのクエリを取って、それをBCPプロセスの外で(クエリアナライザで)実行し、42,745行を取得できます。また、ビューを作成してより簡単なクエリを実行し、BCP ... queryoutオプションを使用して動作させることもできます。あなたは、クエリが「my_db..buildsから*を選択する」という、より複雑で見ることができるように
bcp "select obj_id, loc_code, CONVERT(VARCHAR(20), create_date, 20) AS build_date,
model_id, (len(build_string)/4) as feature_count, build_string
from my_db..builds a, my_db..models b
where a.model_id = b.model_id and obj_id like '_________C%' and obj_id not like '1G0%'" queryout z:\test.txt -U %1 -P %2 -S SQLSVR\VM_PROD -c
:私は使用していたクエリが2つのテーブルの情報を結合しています。基本的には、より複雑なクエリを使用してビューを作成した後、bcp ... queryoutを単純な単純なクエリで実行して、ビューからデータを取得するとうまくいきます。なぜ私はBCPコマンドでより複雑なクエリが動作しないのか理解できません。結果を返す前にタイムアウトすることができますか、それともBCPが複雑な "結合スタイル"のクエリを処理する方法を知らないのでしょうか?
あなたはプロファイラトレースを実行し、BCPから渡されたコマンドを調べることができますか? –
私はそれをどうやって行うのか慣れていません...私を啓発することはできますか? – user774512
ちょうどあなたの質問はSQL 2000についてです - http://www.developer.com/db/article.php/3482216/Introduction-to-SQL-Profiler.htmを参照してください –