質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Windows

    1406questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • SQL Server

    572questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • コマンドプロンプト

    309questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

bcpコマンドでSQLServerからデータを抜き出すことが出来ません。

解決済

回答 6

投稿

  • 評価
  • クリップ 0
  • VIEW 14K+

miyamoto0105

score 192



bcp.exeで解決できないエラーがあって困っています。

bcp.exe [サーバー名].dbo.[テーブル名] OUT C:\Users\Desktop\tes.csv -c -t \t -S [サーバー] -U sa -P [パスワード] >> log.txt 

コマンドプロンプトを開いて実行するとファイルが出力される。
バッチファイルで実行するとエラーになる。

実行している文字列は同じなので、権限まわりの可能性があるのですが
何かお分かりになりませんでしょうか。

【エラー】
SQLState = 28000, NativeError = 18456
Error = [Microsoft][SQL Native Client][SQL Server]ユーザー 'sa' はログインできませんでした。

こちらを見ると、出力出来ている方もいるようです。
http://seiic.blog.so-net.ne.jp/2008-09-02
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

check解決した方法

0

環境の問題ということにします。。。 ご回答いただき本当にありがとうございます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

まず、SQLの認証はどうなっていますか?ユーザー名 sa を指定してSQL Server ログインを使用しているように見えますが、実際にはWindows 認証が使われていたりしませんか?
その上で、TASK スケジューラーなどで、サービスからバッチファイルを実行していませんか?
サービスはサービスアカウントで実行されていますので、通常のコマンドラインから成功するコマンドでも、失敗することがあります。
正しい方法は、Windows 認証を使い、ユーザー名などはしていせず、サービスを実行するアカウントにSQL Serverへのアクセス権を与える方法です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/03 14:46

    御回答ありがとうございます。
    タスクスケジューラやサービスからの実行はしておりません。

    -S [サーバー] -U sa -P [パスワード]のオプションを使っていてもwindwos認証になることはあるのでしょうか。実行のサーバーのプロパティ、セキュリティを見てもwindows認証とsqlserver認証の混在のほうにチェックが入っています。

    キャンセル

  • 2015/03/04 10:56

    サービスから実行していないのであれば、ただ単にバッチファイルのスペースの文字が全角とかになっているのではないでしょうか?

    キャンセル

  • 2015/03/04 12:11

    バッチファイルの文字列をコピーしてコマンドプロンプトで実行すると通るので、それはないかと思います。。。
    おそらくどこかの認証まわりかと思ってますが、、

    キャンセル

0

エラーメッセージは確かに認証周りに見えるのですが、
どこからどこに接続しようとしているのかが分からないので
少し質問させてください。


> bcp.exe [サーバー名]・・・
> -S  [サーバー]・・・

⇒[サーバー名]と[サーバー]は、完全に同じ文字列ですか
同じだとして、ホスト名かIPアドレス、どちらですか。

接続先のインスタンスは別のサーバですか、
それとも、お手元のPCで動いているSQLServerでしょうか。


>コマンドプロンプトを開いて実行するとファイルが出力される。 
>バッチファイルで実行するとエラーになる。 

⇒どちらもお手元のPCで質問者さん自身が実行されたものですか。


例えば、サーバのコンソールにリモートデスクトップログインし、
プロンプトから実行すると出力できるのに、
クライアントからバッチで実行するとサーバへ接続できずエラーになる場合、
サーバ側でリモートIPからのアクセスが無効になっているかもです。


投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/04 18:20


    bcp.exe [サーバー名].dbo.[テーブル名] OUT C:\Users\Desktop\tes.csv -c -t \t -S [サーバー] -U sa -P [パスワード] >> log.txt

    [サーバー名] は masterなど指定するDB名
    [サーバー] は サーバーのIPアドレス
    になります。
    SQLサーバーはwindows serverで動いており、バッチファイルもコマンドプロンプトもクライアントから実行しています。

    キャンセル

  • 2015/03/04 18:56

    >バッチファイルもコマンドプロンプトもクライアントから
    どちらもクライアントからIPアドレスを指定だと、すみません、ちょっと原因は思いつかないです。

    以下の様な連続した操作でも、やはりエラーになりますか?

    1.プロンプトを開き、bcpを実行

    bcp.exe [サーバー名].dbo.[テーブル名] OUT C:\Users\Desktop\tes.csv -c -t \t -S [サーバー] -U sa -P [パスワード]

    2.プロンプトを開けたまま、矢印キーでもう一度"1."のコマンドを表示

    3.コマンドの先頭と最後に文字を追加して実行

    # [1.のコマンド]
    # ↓
    # ↓先頭と最後に追加
    # ↓
    # echo.[1.のコマンド] > C:\Users\Desktop\test.bat

    4.プロンプトを開けたまま、プロンプトからバッチを実行

    #call C:\Users\Desktop\test.bat


    これでダメだった場合、IPアドレスの後ろにインスタンス名とポートを
    明示的に指定してみたらという気もしますが、上手くいくという確証はないです。
    (私は普段、インスタンス名を指定して使う事が多いので)

    キャンセル

  • 2015/03/05 10:41

    call C:\Users\Desktop\test.bat でもうまくいきません。。

    ちなみにインスタンス、ポートなど指定する場合はどう記述すればいいでしょうか。

    キャンセル

0

もしインスタンス名が"Something"、ポートが"54321"だった場合、
IPアドレスの後ろに"\"を挟んでインスタンス名、更にカンマを挟んでポートを書けば指定できます

… - S 192.168.1.11

… - S 192.168.1.11\Something,54321

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/03/05 11:27

    ありがとうございます!!!
    やっぱりコマンドラインから直打ちすると通りますけど、
    バッチをたたくと駄目でした 汗
    わざわざ付き合っていただいて、ありがとうございます。

    キャンセル

  • 2015/03/05 11:36

    ダメでしたか~
    こちらでも事象が再現できればよかったのですが・・・
    お力になれずすみません;;

    キャンセル

0

>> log.txt
を消したらうまくいったりしませんか。ないですかね...

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

いまさらですが…
コマンドプロンプトでは実行できるのに、
batに書いて実行すると失敗してしまう場合の原因として
・実行するディレクトリがちがう
・環境変数の設定がちがう
・hoge.cmdにしたら
あたりが思いつきます。
参考にされたWebページとの違いというと、
ダブルクォートで囲んでるくらいですかねえ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Windows

    1406questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • SQL Server

    572questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • コマンドプロンプト

    309questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。