こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

初めての質問なのでトンチンカンなこと言ってたらすみません。

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

投稿日時 - 2008-07-04 16:27:36

QNo.4150915

困ってます

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.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側のインストール時の設定をどうされているかによりますが、ドメインユーザでなければフォルダのアクセスの縛り方は考える必要があります。一旦共有フォルダの権限を緩めてみると、今フォルダアクセスが問題なのかどうかわかると思います。

投稿日時 - 2008-07-08 20:26:32

お礼

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

投稿日時 - 2008-07-09 14:57:44

ANo.1

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

投稿日時 - 2008-07-04 19:41:50

補足

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

投稿日時 - 2008-07-08 14:15:58

お礼

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

投稿日時 - 2008-07-07 08:53:58

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-