Visual Studio 2010プロジェクトに.mdf
ファイル(SQL Serverデータベース)を追加すると、以下のエラーが発生します
SQL Serverデータベースファイル(.mdf)に接続するには、SQL Server 2005 ExpressまたはSQL Server 2008 Expressがローカルコンピューターにインストールされ、実行されている必要があります。
SQL Server 2005 Enterprise Editionを既にインストールしているため、SQL Server Express(2005/2008)をインストールしたくない
Visual Studio 2010 Ultimateを使用しています
これは本当に迷惑なものです。基本的に、開発中のフレームワークのバージョンのMachine.configには、LocalSqlServerのエントリがあります。
私のマシンでは、バージョン4の場合:
C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Config\Machine.config
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
SQL 2005フルサーバーインスタンスを指すように接続文字列のデータソース部分を変更すると、先ほどお伝えしたエラーは発生しなくなりました。
(フレームワークの他のバージョンについても同様ですが、私も変更しました)
変更が機能するのを見る前に、ビジュアルスタジオだけを再起動する必要があるのか、マシン全体を再起動する必要があるのか思い出せません。
編集する前に、machine.configファイルを必ずバックアップしてください。
そうは言っても、Sql Server自体にデータベースを追加できず(mdfがある場合)、表示->サーバーエクスプローラー->データ接続(右クリック- >接続の追加)-試しましたか?
私はこの投稿が少し古いことを知っていますが、同じ問題に遭遇し、実際に解決策を見つけたので、共有したいと思います。
Tools -> Options
_に移動しますDatabase Tools -> Data Connections
_を選択し、Sql Server Instance Name (blank for default)
をデータベースのインスタンス名で更新します。services.msc
_SQL Server (<instance name of express edition>)
を選択し、右クリックしてProperties
を選択しますLog On
_タブに移動し、_Local System account
_を選択しますこれらの手順の後、_.mdf
_ファイルをVisual Studio 2010に追加できました。
また、SQL Server Expressをインストールせずに、2番目のステップから開始するだけでそれを実行できる可能性もありますが、私は試していません。
存在しない場合は、コードを使用して追加できます
string curFile = @"C:\Dev\Test_data.mdf";
if (!File.Exists(curFile))
{
SqlConnection connection = new SqlConnection(@"server=(localdb)\v11.0");
using (connection)
{
connection.Open();
string sql = string.Format(@"
CREATE DATABASE
[Test]
ON PRIMARY (
NAME=Test_data,
FILENAME = '{0}\Test_data.mdf'
)
LOG ON (
NAME=Test_log,
FILENAME = '{0}\Test_log.ldf'
)",
@"C:\Dev"
);
SqlCommand command = new SqlCommand(sql, connection);
command.ExecuteNonQuery();
}
}