web-dev-qa-db-ja.com

SQL Server Express EditionをインストールせずにSQL Serverデータベースファイル(.mdf)をVisual Studioに追加する方法

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を使用しています

11
Ali

これは本当に迷惑なものです。基本的に、開発中のフレームワークのバージョンの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がある場合)、表示->サーバーエクスプローラー->データ接続(右クリック- >接続の追加)-試しましたか?

12
dash

私はこの投稿が少し古いことを知っていますが、同じ問題に遭遇し、実際に解決策を見つけたので、共有したいと思います。

  1. SQL Express 2008 R2をインストールする
  2. Visual Studio 2010で_Tools -> Options_に移動します
  3. _Database Tools -> Data Connections_を選択し、Sql Server Instance Name (blank for default)をデータベースのインスタンス名で更新します。
  4. 次に、を押してサービスに移動します ⊞WinR および_services.msc_
  5. SQL Server (<instance name of express edition>)を選択し、右クリックしてPropertiesを選択します
  6. 次に、サービスのプロパティウィンドウで_Log On_タブに移動し、_Local System account_を選択します

これらの手順の後、_.mdf_ファイルをVisual Studio 2010に追加できました。

また、SQL Server Expressをインストールせずに、2番目のステップから開始するだけでそれを実行できる可能性もありますが、私は試していません。

1
CodeArtist

存在しない場合は、コードを使用して追加できます

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();
            } 
        }
1
David Fawzy