我正在使用Visual Studio 2012来创建MVC4 Internet应用程序。我已经离开了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);
}
}
}
}
}
答案 0 :(得分:0)
如果这是SQL Server Express (标记建议如此),那么您很可能有一个名为SQLEXPRESS
的命名实例,因为这是SQL Server Express安装的默认实例名称。如果是这种情况,您需要将连接字符串更改为Data Source=.\SQLEXPRESS
。
答案 1 :(得分:0)
重新部署时,我在MVC4网站上遇到了同样的错误。我不能说问题的根本原因是什么,但似乎是在重新部署网站时保留在浏览器中缓存的东西(可能是会话Guid),并且由于某种原因这导致服务器端代码抛出此奇怪的错误。
关闭并重新打开浏览器似乎清除了缓存,然后该网站按预期工作。这可能解释了问题的间歇性。