C#でSQLServer2008R2 Expressに作ったDBに接続するアプリを作っていたんですが、

いざ、データベースに接続しようとすると「ファイル xxx.mdf の自動的に名前が付けられたデータベースをアタッチできませんでした。同じ名前のデータベースが既に存在するか、指定されたファイルを開けないか、UNC共有に配置されています。 」とかいうエラーが。

接続文字列を間違えたかと思ってVisutalStudioのデータベースエクスプローラから接続してみようとしたんですが、同じエラーが出て失敗。。。

色々と調べてみた結果、どうも旧バージョンのSQLServerのゴミが残ってたのが原因でした。

C:Users{ユーザー名}AppDataLocalMicrosoftMicrosoft SQL Server DataSQLExpress

にあるファイルを削除して、SQLServerのサービスを再起動したところ無事解決しました。

(上記のパスはWindows7の場合ですね。

XPの場合は C:Documents and Settings{ユーザー名}Local SettingsApplication Data~ に変わります。)

僕の開発環境は、

・Windows7 Home Premium (x86)

・VisualStdio2010 Express

・SQLServer 2008R2 Express

なんですが、

SQLServer2008を入れるのに一悶着ありまして。

当初、SQLServer2008Express(無印)をインストールしたんですが、何故かSQLServer Management Studioがインストールされなくて困ってたんですよ。

どうも無印SQLServer2008はWindows7に対応してなかったみたいで(Vistaに対応してたからてっきり行けるもんだと・・・orz)

それで色々試行錯誤しながらインストールしたり消したりしてたんですが、その時の残骸が原因だったみたいです。

SQLServer2005も入ってたし。

アンインストールでゴミが残るのって一番めんどくさいですね。。。