而与SQL Server建立连接时出现错误(error occurred while establi

2019-08-21 06:05发布

如果我有我的连接字符串中像这样的web.config文件(添加换行符以提高可读性):

<add 
name="conn" 
connectionString="Data Source=(localdb)\v11.0; Initial 
    Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True; 
    AttachDbFilename=D:\Products.mdf" 
providerName="System.Data.SqlClient"/>

该连接工作,我可以连接到数据库中的资源管理器数据库。

当我在代码中指定ConnectionString中或使用ConfigurationManager中得到它它不工作:

    SqlCommand command = new SqlCommand();
    command.CommandText = "select ...";
    command.CommandType = CommandType.Text;
    SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
        "Initial Catalog=MyDB; Integrated Security=True; "+
        "MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");
    command.Connection = cn;
    cn.Open();
    DataTable dataTable = new DataTable();
    SqlDataReader reader;
    reader = command.ExecuteReader();
    dataTable.Load(reader);
    cn.Close();

充分利用web.config中的连接字符串给出了同样的错误:

SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings
 ["conn"].ConnectionString;

我正的错误是“System.ComponentModel.Win32Exception:网络路径找不到”

在跟踪是说:

而与SQL Server建立连接时出现与网络相关的或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称是否正确,以及SQL Server配置为允许远程连接。 (provider:命名管道提供程序,error:40 - 无法打开到SQL Server的连接)

我需要一些帮助解决这一点,一直在努力解决这个问题的时间和任何在线的建议是,我应该检查网络设置(因为它是连接到SQL Server Express的本地实例不适用)。 服务器名称(相同的字符串作品VS快,但不是在运行的代码)。

难道是一个身份验证问题? 如果是的话,那么为什么联合国信息的错误?

感谢您阅读我的文章,希望你能帮助我与此有关。

更新:

我尝试了以下几件事:

鉴于对MDF和LDF文件的组每个人完全权限

在网下的项目属性我试过跑下VS开发服务器和本地IIS Web服务器项目(是IIS快递)

没有运气,仍然无法连接它复制的代码已被以“ASP.NET空Web应用程序”创建项目时,连接完全没有问题

Answer 1:

你已经正确地躲过了数据库文件名,但没有数据源,因此它会尝试连接到名为数据源“(的LocalDB)11.0”,其中(最有可能)不存在。

尝试正确转义它是这样的:

SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");


Answer 2:

该问题涉及到应用程序的.NET版本4.0不运行

根据以下页面: http://www.connectionstrings.com/sql-server-2012#sqlconnection

您需要.NET 4.0,并为使用命名管道:

服务器=(的LocalDB)语法不是由.NET framework版本4.0.2之前的支持。 然而,命名管道连接将致力于连接前4.0.2应用程序的LocalDB实例。

SqlLocalDB.exe create MyInstance
SqlLocalDB.exe start MyInstance
SqlLocalDB.exe info MyInstance

该信息提供了命名管道那么这可以在连接字符串中使用:

<add name="conn" 
providerName="System.Data.SqlClient" 
connectionString="Server=np:\\.\pipe\LOCALDB#B1704E69\tsql\query"/>


Answer 3:

除了使用(的LocalDB)的,你有没有尝试过使用“\的SQLExpress。” 每本页MSDN ? 它使用默认实例,这可能不是你所需要的。

它会读取,如下所示:

<add 
name="conn" 
connectionString="Provider=SqlClient;Data Source=.\\SQLExpress; Initial 
    Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True; 
    AttachDbFilename=D:\Products.mdf" 
providerName="System.Data.SqlClient"/>


Answer 4:

只是为了笑而不是把(的LocalDB)把一个时期'.' 。 因此,它看起来像

Data Source=.\v11.0;

我会感到惊讶,如果它的工作原理,但你可以做到这一点完全SQL。



Answer 5:

因为这是网站项目,你需要指定正确的.NET Framework版本来构建。 SqlLocalDb需要.NET框架4。

如果您创建Web项目和网站源文件添加到它,它就会如果.NET框架是4+工作。 当您打开网站默认目标框架或现有的DLL框架可能不相同,可.NET 3.5,这就是为什么你得到这个错误。 希望这可以帮助。



Answer 6:

检查空项目,工程,和你的项目不工作的参考System.Data的版本。 您可以使用该解决方案资源管理器进行检查。 使用相同版本的这两个项目?



Answer 7:

此外...这可能与在IIS中您的设置。

您的网站的(会话状态)可以设置为使用SQL Server进行会话。 检查有太多......我只是有这个问题,并实现我们的sqlbox连接改变了,忘了在IIS上更新。



Answer 8:

这个错误出现了后,我压缩C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL11.MSSQLSERVER \ MSSQL \ DATA目录。 解压它固定的错误。



文章来源: error occurred while establishing a connection to SQL Server