読者です 読者をやめる 読者になる 読者になる

kondoumh のブログ

- とあるソフトウェアエンジニアのめったに更新されないブログ -

SQL Server Express MDFファイルのアタッチに失敗 → 解消

Visual Studio

トラブル解消メモです。

Visual Studio 2008 Professional SP1 とSQL Server 2005 Express で ASP.NETアプリを開発しています。App_DataフォルダーにMDFファイルを置いてアタッチして使っています。インスタンスは .\SQLEXPRESSにしています。
今日、SQL Server 2005 Express から SQL Server 2008 Express にアップグレードしてみました。インストールは無事に終わったのですが、VS2008からMDFファイルにアタッチできません。ガ━━(;゚Д゚)━━ン!!

「ユーザーインスタンスのプロセスを起動中のエラーにより、SQL Server のユーザー インスタンスを生成できませんでした。接続は閉じられます。」
と怒られるので、User Instance プロパティをFalseにすると
「ファイル xxx.mdf の自動的に名前が付けられたデータベースをアタッチできませんでした。同じ名前のデータベースが既に存在するか、指定されたファイルを開けないか、UNC共有に配置されています。 」
SQL Server Management Studio からはちゃんとアタッチできます。なんで??

Google先生にお伺いを立ててもめぼしい情報がなく、しょうがなく2005 Expressを再インストールしました。ところが、同様のエラーが・・Σ(゚д゚lll)ガーン

ユーザーにSQL Serverの管理権限を持たせたりして、2005 Expressをセットアップし直してもだめ。SQL Serverインスタンスを削除するにはSQL Server自体を削除しなければいけないので、何回もセットアップする羽目に。

今日はもうあきらめようかと思い、最後に「UNC共有」を「UNC Shared」のように英単語キーワードでぐぐってみると、英語の情報にヒットしました。
↓ ここです!
http://www.aspspider.com/resources/Resource170.aspx

なんと SQL Server Expressは C:\Documents and Settings\<ユーザー名>\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data というフォルダーに SQLEXPRESS というフォルダーを切って色々な情報を管理しているようなのです。どうやらここに古い設定のゴミが残っていた模様。フォルダを消したら無事VSから接続できました。こんなことだったとは orz
アンインストールの時に消しとかんかい(゚Д゚)ゴルァ!!

SQL Server 2008 Expressでも行けたんじゃないかなあ。今日は眠いのでアップグレードはあきらめました。┐(´д`)┌