• 締切済み

BULK INSERT でファイルが開けなくて困っています

初めての質問なのでトンチンカンなこと言ってたらすみません。 SQL Server 2005のストアドプロシージャを使ってBulk InsertでSQL Server とは別のパソコンにあるcsvファイルをテーブルにインポートしようとしているのですが、「...を開けなかったので、一括読み込みできません。...アクセスが拒否されました。」とエラーが出てしまいます。ストアドプロシージャは別パソコンのVB2005からパラメータ(ファイルパス等)を与えて実行しています。 ファイルの保存先フォルダは共有にしています。 ちなみにSQL Server側のパソコンからストアドプロシージャを実行するとちゃんとインポートしてくれます。 パスワードや権限が関係してるんでしょうか? 長くなりましたが、よろしくお願い致します。

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

Windows認証の場合、ローカルログインであればログインユーザの権限を借用してリモートファイルにアクセスしますが、リモートログインの場合は、それができないはず、というのが前回の趣旨でした。 探してみたら、記述がありました。 http://msdn.microsoft.com/ja-jp/library/ms188365.aspx >セキュリティ アカウントの委任 (権限借用) >SQL Server ユーザーが Windows 認証を使用してログインした場合、そのユーザーは SQL Server プロセスのセキュリティ プロファイルに関係なく、そのユーザー アカウントでアクセス可能なファイルだけを読み取ることができます。 >あるコンピュータで sqlcmd または osql を使用して BULK INSERT ステートメントを実行し、2 台目のコンピュータの SQL Server にデータを挿入し、UNC パスを使用して 3 台目のコンピュータの data_file を指定した場合、エラー 4861 が返されることがあります。 >この問題を解決するには、SQL Server 認証を使用し、SQL Server ログインを指定します。このログインでは、SQL Server プロセス アカウントのセキュリティ プロファイルが使用されます。 SQL Server側のインストール時の設定をどうされているかによりますが、ドメインユーザでなければフォルダのアクセスの縛り方は考える必要があります。一旦共有フォルダの権限を緩めてみると、今フォルダアクセスが問題なのかどうかわかると思います。

waki16
質問者

お礼

色々とすみません。 他のやり方も考えながらやっていこうと思います。 初めての質問だったのですが、ご丁寧に回答頂きましてありがとうございます。 結果が出る前に、まずはお礼致まで。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

もし、SQL ServerにWindows認証でログインしているならば、SQL Server認証でログインして実行してみてください。 SQL Serverにリモート接続している場合、Windows認証ではリモートファイルでBULK INSERTできなかったと思います。

waki16
質問者

お礼

ご回答ありがとうございます。 試してみます。

waki16
質問者

補足

SQL Server認証で実行した結果、「ユーザー名を認識できないか、またはパスワードが間違っています」 とメッセージが出てしまいます。 saのログインを有効にして、VB側からの接続は成功しています。 csvファイルがあるパソコンはパスワード設定するしていますが 何が原因なのでしょうか?

関連するQ&A