ホーム>source

VS 2017パッケージマネージャーコンソールでUpdate-databaseコマンドを実行すると、このエラーが発生します。

私はWindowsサーバー2016を持っており、その上にSQL 2016をインストールし、ファイアウォールで1433としてすべての必要なポートを開き、ファイアウォールから有効にするためにsql server.exeを追加します。 わかりました、VS 2017サーバーエクスプローラーパネルでは、サーバーに接続でき、データベースとテーブルを見ることができます。

コードファーストモードでモデルを作成した後>

。私add-migrationを実行します 私のパッケージコンソールでこれはうまくいきます 。走るデータベースを更新する このエラーが出ました

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

実行時にのみこのエラーが発生する理由データベースを更新する サーバーエクスプローラーパネルがありませんか?

さらに、SQlサーバー構成でTCP-Ipをチェックすると、sql server browserも有効になります。

更新:

私の接続文字列は

var connection = @"Server=***.***.***.***;Database=Mydatabase;Integrated Security=false;Initial Catalog=Mydatabase;User ID=MyDbYser;Password=MyDbPassword;";
services.AddDbContext<UniverContext>(options =>
           options.UseSqlServer(connection));

あなたの答え
  • 解決した方法 # 1

    エラーは明示的です。接続文字列が正しくありません。具体的には、データベースに接続できないため、ホストにアクセスできないか、プロバイダーが存在しないか(稼働中にLocalDbを使用して接続文字列を実際のサーバーに変更することを怠る場合が多い)、またはデータベースがありません存在します。

    コードをまったく提供していないため、正確な問題を特定することはできませんが、実稼働環境でLocalDbを使用しようとしています。そのプロバイダーは開発中にのみ存在します。運用には実際のSQL Serverインスタンスを使用する必要があります。

  • 解決した方法 # 2

    データベースサーバーが名前付きインスタンスで、App.Configまたは他の構成ファイルから接続文字列をコピーした場合、エスケープされたバックスラッシュを削除する必要があります。つまりSERVER \\ INSTANCENAMEではなく、SERVER \ INSTANCENAMEを使用する必要があります

    エラーは、他の異常な問題ではなく、インスタンス名が正しくない可能性があります。

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ JavaScript:単一リンクリストに2番目の値を追加できません