「SQL Server」カテゴリーアーカイブ

Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 3がインストールできない

アップデートの更新があるから更新しようと思ったらなぜか失敗する。更新内容は「Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 3」。OSはWindows XP Pro SP3。いろいろとググッたら、結構同じ目にあっている人がいて、MSXML6 SP2がどうも悪さをしているみたい。で、MSXML6を削除しようと思ったらこれもできない。

さらにググッたらWindows Install Clean Upユーティリティというものがあったので、それでまずはMSXML6を消す。そしてただいま自動更新を再実行中。。。 そして無事終了。

「プログラムの追加と削除」で確認したらMSXML6 Parserが追加されてた。SQL Server 2005 Express Editionが入っている似たような構成のPCでは自動更新はうまく言ったんだけど、このPCは最初からMSXML6 Parserだった。

なんだかよくわからないけど、うまくいったからいいか。

ネットワークドライブ上のファイルを使った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サーバを分けた意味がなくなってしまうっぽい。

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