1

Visual Studio 2012 を使用して MVC4 インターネット アプリケーションを作成しています。Entity Framework から離れ、SQL Server 2008 R2 のローカル インストールを使用しています。

ローカルの SQL Server インスタンスを指すように接続文字列を変更しました。

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=NotesBoard;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>

私のプロジェクトには他の接続文字列はありません。これはうまくいきましたが、今は得ています


SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

説明:現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

SQLExpress データベース ファイルの自動作成エラー:
接続文字列がローカルの Sql Server Express インスタンスを指定しています...


奇妙なことは、断続的にこれが機能し、その後壊れた状態に戻ることです。

更新: Pawelの質問に答える には: すべてのコントローラーから参照される次のクラスがあります。

public class DataAccess
{

    public void ExecuteNonQuery(String StoredProc, List<SqlParameter> Parameters)
    {
        String ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
        SqlConnection cn = new SqlConnection(ConnectionString);

        SqlCommand cm = new SqlCommand(StoredProc, cn);
        cm.CommandType = CommandType.StoredProcedure;

        FillCommandParameters(Parameters, cm);

        cn.Open();
        cm.ExecuteNonQuery();
        cn.Close();
    }

    public DataSet Execute(String StoredProc, List<SqlParameter> Parameters = null)
    {
        String ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
        SqlConnection cn = new SqlConnection(ConnectionString);

        SqlCommand cm = new SqlCommand(StoredProc, cn);
        cm.CommandType = CommandType.StoredProcedure;

        FillCommandParameters(Parameters, cm);

        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cm;
        DataSet ds = new DataSet();

        cn.Open();
        da.Fill(ds);
        cn.Close();

        return ds;
    }

    private static void FillCommandParameters(List<SqlParameter> Parameters, SqlCommand cm)
    {
        if (Parameters != null)
        {
            if (Parameters.Count > 0)
            {
                foreach (var Parameter in Parameters)
                {
                    cm.Parameters.Add(Parameter);
                }
            }
        }
    }
}
4

2 に答える 2

0

これが SQL Server Expressの場合 (タグでそのように示唆されています)、名前付きインスタンスが呼び出されている可能性が非常に高くなりますSQLEXPRESS。これは、SQL Server Express インストールの既定のインスタンス名であるためです。この場合は、接続文字列を に変更する必要がありますData Source=.\SQLEXPRESS

于 2013-01-16T18:57:06.340 に答える
0

再デプロイ時に MVC4 サイトで同じエラーが発生しています。問題の根本的な原因が何かはわかりませんが、サイトが再デプロイされたときにブラウザーにキャッシュされたもの (おそらくセッション Guid) が保持され、何らかの理由でサーバー側のコードがこれをスローするようです気になるエラー。

ブラウザを閉じて再度開くと、キャッシュがクリアされ、サイトが期待どおりに機能するようです。これは、問題の断続的な性質を説明している可能性があります。

于 2014-03-10T12:26:45.460 に答える