22

私は解決するために何日間も努力していますが、できませんでした。私はasp.net 4.0でカスタムメンバーシップとロールプロバイダを実装したWebアプリケーションを持っています。アプリのホームページを開くと、データベースに接続して情報を取得します。そこログインフォームでもあり、私がログインしたときには、データベースを介して、ユーザーを検証し、予約ページに私をリダイレクトしますが、このエラーよりも表示されます:SQLネットワークインターフェイス、エラー:26 - 指定されたサーバー/インスタンスの指定エラー

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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

説明:

An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

例外を詳細:

System.Data.SqlClient.SqlException: 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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

ソースエラー:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

私は、私はstackoverflowので見つかりましたが、何も働いていないいくつかのソリューションを多くのものを試してみました。ここに私のconnectionStringsです:

以下
<connectionStrings> 
    <clear/> 
    <remove name="LocalSqlServer"/> 
    <add name="LocalSqlServer" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency; 
     Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False; 
     Packet Size=4096" providerName="System.Data.SqlClient" /> 
    <add name="AgencyConn" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency; 
     Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False; 
     Packet Size=4096" providerName="System.Data.SqlClient"/> 
</connectionStrings> 

もメンバーシップおよび役割マネージャのweb.configのセクションです:

<membership defaultProvider="AuthProvider"> 
    <providers> 
    <clear/> 
     <add name="AuthProvider" type="AuthenticationProvider" applicationName="~/Reserved/" connectionStringName="AgencyConn"/> 
    </providers> 
</membership> 
<roleManager enabled="true" defaultProvider="MyRoleProvider"> 
    <providers> 
    <clear/> 
     <add name="MyRoleProvider" type="RoleAccessProvider" connectionStringName="AgencyConn"/> 
    </providers> 
</roleManager> 

誰もいただきました!間違って把握することができますしてください?

+0

プロジェクト内のすべての接続文字列を確認します。あなたが見ている可能性のあるconnectionStringだけでなく、正しいconnectionStringであるかもしれません。間違っているかもしれない別のconnectionStringかもしれません。プロジェクト内の "すべての接続文字列をチェック"してください。 – Jogi

答えて

6

答えは、エラーメッセージ自体である:

Error Locating Server/Instance Specified 

は基本的に、あなたはこのビットつまり、接続文字列に間違ったサーバー\インスタンスを持っている:

Data Source=MSSQL2008-1 

は間違っているとサーバーを指していないか、サーバー名がIPアドレスに解決されません。他の2つの可能性:(1)SQL Serverを実行しているボックスのSQLブラウザサービスが実行されていないか、(2)SQLボックスのWindowsファイアウォールまたはその他のファイアウォールが着信接続を拒否している。

最終的には、サーバー名が正しい場合、ネットワークに問題が発生し、クライアントがサーバーに接続できない理由を調べる必要があります(これは、SQLよりも基本的なネットワーキングの問題サーバー構成の問題)。

+0

答えがありがとうございますが、私は接続の文字列を使用してデータを接続して取得していると言いますから、ユーザーの検証でもロールプロバイダのクラスが疑わしいだけですので、いくつかのテストを行いました。 –

+0

申し訳ありませんが、コードのどこかに別の接続文字列がありました。とにかくありがとう –

+0

また、コマンドラインsqlcmdからこれを実行している場合、-d yourdatabase –

1

最近同じ問題が発生しました。私たちは、コードがmachine.confgファイルの "LocalSqlServer"という名前の接続文字列を探していることを発見しました。私たちはこの行を追加し、うまくいきます。

33

は、WindowsマシンB(インストールされているSQL Serverとサーバー)にWindowsマシンAから接続されており、このエラーを取得している場合は、以下の操作を行う必要があります。

マシンBの場合:

1 。) "SQL Server Browser"というWindowsサービスをオンにしてサービスを開始します。

2。Windowsファイアウォールで、受信ポートUDP 1434を有効にします(マシンAのSQL Server Management Studioが接続しているか、またはマシンAのプログラムが接続している場合)

3.)Windowsファイアウォールで、 telnet接続がある場合には)

4)SQL Server構成マネージャでは、私は私のASPで、同じ問題を経験していたポート1433

enter image description here

+0

IPAllセクションのtcpポートを設定した後でしかアクセスできませんでした!特定のIPだけに設定し、動的ポートを空白にして、 'Enabled:Yes'を設定しても接続しませんでした!これは 'netstat -ano | find ":port" 'sqlサーバはIPAllセクションに設定されているポートだけをリッスンします。 –

+0

@JawadAIShikhにはどのOSとバージョンがありますか? – MacGyver

+1

Server 2012 R2 Standard、およびSQL Server 2012はツールで表現します。 Btw、私の以前のコメントは、あなたの答えを補完することを意図していたので、MS公式の文書はIPAllの下でポートを設定することについて言及していなかった:https://docs.microsoft。server-to-listen-on-a-specific-tcp-port –

5

のためのTCP/IPプロトコルを有効にします。 NET MVC 4アプリケーション。

私がそれを解決した方法は、DatabaseContextです。接続文字列の名前を渡すことで、ベースコンストラクタを使用したかったのです。

public class DatabaseContext : DbContext 
{ 
    public DatabaseContext() 
     : base("DefaultConnection") // <-- this is what i added. 
    { 
    } 

    public DbSet<SomeModel> SomeModels { get; set; } 
} 
1

私はこの問題を抱え、それを修正しました。これは、次の私にとって

<add key="aaa" value="server=[abc\SQL2K8];database=bbb;uid=ccc;password=ddd;" /> 

<add key="aaa" value="server=abc\SQL2K8;database=bbb;uid=ccc;password=ddd;" /> 
13

問題は、DNSレコードが間違っていたということでした...

間違っている:問題は、このように見えました非常に有用であることが証明され、主にthis blog postから取られます。

このエラーメッセージは、実際には非常に具体的であり、ソリューションは非常に簡単です。

このエラーメッセージは、SQL Server名前付きインスタンスに接続しようとしている場合にのみ表示されます。既定のインスタンスの場合は、この段階で失敗した場合でも(つまり、指定されたサーバーまたはインスタンスのエラーを特定しても)既定値(既定のTCPポート1433、名前付きパイプの既定のパイプ名など)を使用して接続を試行し続けるためです。

クライアントがSQL Serverの名前付きインスタンスに接続するたびに、SSRP UDPパケットをサーバーマシンのUDPポート1434に送信します。この手順では、SQLのインスタンスの構成情報、 TCPポート、パイプ名など。この情報がなければ、クライアントは接続方法を知らず、このエラーメッセージで失敗します。

つまり、このエラーメッセージが表示されるのは、クライアントスタックがSQLブラウザーからSSRP応答UDPパケットを受信できなかったためです。正確な問題を特定するために次の手順を実行します。

  1. は、サーバー名は、例えば、名前にはタイプミス正しいないことを確認します。

  2. インスタンス名が正しいこと、実際にはターゲットマシンにそのようなインスタンスが存在することを確認してください。 (一部のアプリケーションで\が変換されることに注意してください)。

  3. DNSが正しく解決できるなど、サーバーマシンに到達可能であることを確認すると、サーバーにpingを実行できます(必ずしも真実ではありません)。

  4. SQL Browserサービスがサーバー上で実行されていることを確認してください。

  5. ファイアウォールがサーバーで有効になっている場合は、sqlbrowser.exeまたはUDPポート1434を例外として追加する必要があります。サーバーがクラスタ上またはマルチに名前付きインスタンスである

    1. :あなたはまだあなたが4までのステップ1を確認した後にするときにも発生する可能性が失敗する可能性が1コーナーケースがあり

    ホームマシン

  6. クライアントはファイアウォールがオンのVistaマシンです。

役に立つと分かるツール(私にとっては)はPortQryです。このコマンドが情報を返し、ターゲットインスタンスが含まれている場合は、上記の4)と5)の可能性を除外することができます。つまり、SQLブラウザーを実行し、ファイアウォールがSQLブラウザーUDPパケットをブロックしません。この場合、接続文字列が間違っているなどのその他の問題を確認できます。

最後に、SNACを使用すると同じ問題のエラーメッセージが表示されます。 [SQL Native Client] SQLネットワークインターフェイス:サーバー/インスタンスの指定エラー[xFFFFFFFF]。

Microsoftは最近、そのを通じて案内ウォークは、SQL Serverへの接続の問題の大部分をトラブルシューティングするためのワンストップショップとしての役割を果たすことができますリリース:Solving Connectivity errors to SQL Server

+0

を入力してください。私たちの事例では、私たちの組織は新しいマシンに新しいインスタンスをインストールし、古いDBをすべて移動しました。 これは私たちのDevボックスにありました。 何らかの理由で、私たちのDBAは、私たちのライブDBから直接devボックスに何かを参照することをお勧めします。したがって、アプリケーションからの接続文字列とは関係ありませんが、古いサーバー・インスタンスが見つからなかったという事実。 あなたはここで正しい方向に私を微調整しました。ありがとうございました –

1

問題がホスト名を解決するために失敗DNSによって引き起こされます。 「コンピュータ名」の代わりにIPアドレスを使用してみてください。

0

この問題は、鉱山のASP.NET MVCプロジェクトの1つで、幸運にも私のマシンではなく実稼働環境で問題が発生していたので、web.configと比較すると、エラーが表示されなくなりました。 。真のチャレンジは、この問題にSQL Serverエラー26を接続します。

1

同じエラーが発生し、SQL Server Expressサービスが開始されました。お役に立てれば。

0

私の例では、web.configファイル内のconnectionStringの名前が間違っています。これは、Entity Frameworkが使用するデータベースコンテキストの名前です。これは、EFがconnectionString名をコンテキストと照合できないときに発生するエラーだと思います。