ネットワークドライブ上のファイルを使ったbulk insert

SQL Serverを使ったWebアプリケーションを作っているのだけれど、扱うデータ量が結構多くて明らかにデータハンドリングがボトルネックになっている。

まずは1つが30MB程度の容量になるファイルが200個位あって、それらをDBに格納しないといけない。当然ながらbulk insertを使うわけだけど、ただでさえもDB登録でHDDがガリガリ言っているというのに、次から次へと30MBのファイルが転送されていたりする。

そこで、ファイル(アプリサーバ)とDB(SQL Serverサーバ)を分けることを考えた。DBサーバからアプリサーバにあるファイルをネットワーク共有ドライブ越しにアクセスしてbulk insertできれば簡単、簡単。と思っていたら、どうやらSQL Serverはネットワークドライブにはアクセスできないらしい。もっと厳密に言うと、

Windowsのネットワークドライブはユーザーごとの割り当てですから、ネットワークドライブを割り当てたユーザーしか見ることができません。

ユーザー USER1 が ネットワークドライブを F: に割り当てていたらSQL Server のサービス自体を ユーザー USER1 で動かさないと割り当てたネットワークドライブを参照することはできません。

サービスがローカルシステムアカウントで動作している場合は、ネットワークドライブを利用することはできないと思います。

とのことのよう。掲示板の回答によると。

で、bulk insertを行うには、bulk insert用のファイルはDBサーバ上にないといけないことになる。そうするとサーバ間でファイル転送が行われ、結局アプリサーバとDBサーバを分けた意味がなくなってしまうっぽい。

みんなこの問題、どうやって克服しているんだろう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です