1. ホーム
  2. c#

[解決済み] SQL ネットワーク インターフェース、エラー。50 - ローカル データベース ランタイム エラーが発生しました。自動インスタンスを作成できません。

2023-06-26 01:53:22

質問

ASP.NET MVC 5のWebアプリケーションを構築しようとしています。 MyDatabase.mdf ファイルを App_Data フォルダーに格納します。SQL Server 2014 Express をインストールし、その中に LocalDb インスタンスでインストールされています。サーバーエクスプローラーを使用してデータベーステーブルを編集することができますが、アプリケーションをデバッグしてデータベースが必要なページに移動すると、次のエラーが表示されます。

SQL Server への接続を確立する際に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいか、SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー SQL Network Interfaces、エラー。50 - ローカル データベース ランタイム エラーが発生しました。自動インスタンスを作成できません。エラーの詳細については、Windowsアプリケーションのイベントログを参照してください。

そこで、イベント ビューアーを見てみると Application を見ると、1つのWarningが何度も繰り返し表示されるだけです。

The directory specified for caching compressed content C:\UsersUser1╱AppDataLocal╱Temp╱IIS Temporary Compressed Files╱Clr4IntegratedAppPool is invalid. Static compression is being disabled.

そこで、サーバーを再起動してみましたが、やはりダメでした。前と同じエラー50です。

私は、以下のクラスを作成しました。 Models というクラスがあり、そこに Post .

namespace MyApplication.Models
{
    public class Post
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    }

    public class MyDatabase : DbContext
    {
        public DbSet<Post> Posts { get; set; }
    }
}

また Controller からの投稿を一覧表示するように設定されています。 MyDatabase .

namespace MyApplication.Controllers
{
    public class PostsController : Controller
    {
        private MyDatabase db = new MyDatabase();

        // GET: Posts
        public ActionResult Index()
        {
            return View(db.Posts.ToList());
        }
    }

私の web.config ファイルでは、接続文字列は次のようになります...

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

私は投稿された提案を試してみました ここで を試してみましたが、うまくいきませんでした。また この .

また、アプリケーションの実行を開始すると、MyDatabase インスタンスが切断されることに気づきました。Visual Studio のサーバー エクスプローラーを使用してデータベースを更新すると、テーブルを表示することができます。

Visual Studio 2013 内でデータベースに接続し編集することができますが、アプリケーションをデバッグすると、データベースに接続できないのはなぜですか。

どのように解決すればよいですか。

LocalDB の変更点: SQL 2014 に適用されます。 この記事に目を通してから (localdb)\mssqllocaldb をサーバー名として使用し、LocalDB自動インスタンスに接続するなどしてください。

<connectionStrings>
  <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; 
  ...

この記事では、2014 LocalDB に接続するために 2012 SSMS を使用することについても言及しています。 これは、複数のバージョンの SQL がインストールされている可能性があると思わせるもので、次のような指摘があります。 この SO の回答 は、今後発生する可能性のある他のバージョンの不一致の問題を避けるために、LocalDB のデフォルト名を変更することを示唆しています。問題の原因としてではなく、単一の開発マシンにインストールされた複数の SQL バージョンが引き起こす可能性のある衝突に対する認識を高めるために言及されています。

言及する価値のあるもうひとつのこと - この問題を解決するためにインスタンスをいじったために使用不可能な状態になってしまった場合、アンインストール、再インストールをやり直す価値があるかもしれません。 mssqllocaldb の代わりに v12.0 を追加して、問題が修正されるかどうかを確認します。