.net 建立与SQL Server的连接时出错
如果我在web.config中有这样的连接字符串(添加换行以提高可读性): 从web.config获取连接字符串时会出现相同的错误:.net 建立与SQL Server的连接时出错,.net,sql-server,web-config,connection-string,.net,Sql Server,Web Config,Connection String,如果我在web.config中有这样的连接字符串(添加换行以提高可读性): 从web.config获取连接字符串时会出现相同的错误: SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings ["conn"].ConnectionString; 我得到的错误是“System.ComponentModel.Win32Exception:未找到网络路径” 跟踪中显示: 运行时发生与网络相关或特定于实例的
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings
["conn"].ConnectionString;
我得到的错误是“System.ComponentModel.Win32Exception:未找到网络路径”
跟踪中显示:
运行时发生与网络相关或特定于实例的错误
正在建立与SQL Server的连接。找不到服务器,或者
无法访问。验证实例名称是否正确,以及
SQL Server配置为允许远程连接。(提供者:已命名)
管道提供程序,错误:40-无法打开到SQL的连接
服务器)]
我需要一些帮助来解决这个问题,几个小时来一直在尝试解决这个问题,任何在线建议都是我应该检查网络设置(不适用,因为它连接到sql server express的本地实例)。服务器名称(在VS Express中使用相同的字符串,但在运行的代码中不使用)
这可能是身份验证问题吗?如果是这样,为什么会出现非信息性错误
谢谢你阅读我的帖子,希望你能在这方面帮助我
更新:
我试过以下几件事:
向组中的每个人授予mdf和ldf文件的完全权限
在web下的项目属性中,我尝试在VS development server和本地IIS web服务器(是IIS Express)下运行该项目
运气不好,将代码复制到使用“ASP.NET empty Web Application”创建的项目时,仍然无法完全连接到它连接的位置。您已正确转义db文件名,但没有转义数据源,因此它尝试连接到名为“(localdb)11.0”的数据源,该数据源(很可能)不存在 尝试像这样正确地转义它:
SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");
只是为了取笑,而不是放(localdb)一个句点。。这样看起来
Data Source=.\v11.0;
如果它能正常工作,我会感到惊讶,但您可以在完整的SQL中这样做。因为这是一个网站项目,所以您需要指定正确的.net framework版本来构建它。SqlLocalDb需要.NETFramework 4 如果您创建web项目并向其中添加网站源文件,则在.net framework为4+时,该项目将正常工作。打开网站时,默认的目标框架或现有的dll框架可能不同,可能是.net 3.5,这就是为什么会出现此错误。希望这有帮助 您尝试过使用“.\SQLExpress;”而不是使用(localdb)吗在这一页上?它使用默认实例,这可能不是您所需要的 内容如下:
<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"/>
检查参考系统的版本。工作的空项目和不工作的项目之间的数据。您可以使用解决方案资源管理器来检查这一点。两个项目是否使用相同的版本
问题与未在.net 4.0版中运行的应用程序有关 根据以下页面: 您需要.net 4.0及更高版本才能使用命名管道: .NET framework不支持Server=(localdb)语法 4.0.2之前的版本。但是,命名管道连接将适用于 将4.0.2之前的应用程序连接到LocalDB实例 该信息提供命名管道,然后可在连接字符串中使用:
<add name="conn"
providerName="System.Data.SqlClient"
connectionString="Server=np:\\.\pipe\LOCALDB#B1704E69\tsql\query"/>
还有。。。这可能与您在IIS中的设置有关
可以将网站的(会话状态)设置为在会话中使用SQL Server。也去那里看看。。。我刚刚遇到这个问题,意识到我们的sqlbox连接已更改,并且忘记在IIS上更新。在压缩C:\Program Files\Microsoft SQL Server\MSSQLS11.MSSQLSERVER\MSSQL\DATA目录后,出现了此错误。解压缩它修复了错误。谢谢,这确实使代码在另一个项目中工作。我正在处理的东西没有项目文件,所以我使用file=>openweb站点。在新的web窗体项目中工作的代码不在“打开的web站点”项目中(复制并粘贴工作代码)。此问题仍然存在。当使用“open web site”项目并添加数据连接以使用上面提到的连接字符串测试“sql server express”或从web配置获取数据连接时,我会遇到前面提到的错误。当使用完全相同的连接字符串时,根据异常详细信息创建带有“空asp.net web应用程序”或“asp.net web窗体应用程序”的项目时,它会起作用,您使用的是命名管道协议;你能切换到TCP/IP,看看是否有帮助吗?另请参见,您是否尝试连接到其他SQL Server实例?它连接到SQL Server和网站使用的服务器,但永远不会连接到我的本地SQL Server express。在数据库资源管理器中的VS中,我可以使用相同的连接字符串浏览表,但应用程序不会。将代码和连接字符串复制到anotehr应用程序可以使其正常工作。我只想在本地处理项目但无法使其正常工作时设置一个测试数据库。可能它需要驱动程序引用。sql server的版本是什么?我猜是sql server express 11(连接字符串中的v11.0)在程序文件中我有一个sql server文件夹,其中的子文件夹名为8到11(标准VS 2013 express安装),我确实需要将目标framework更改为3.5,所以尝试了类似以下的连接字符串“数据源=。\SQLEXPRESS;AttachDbFilename=D:\Products.mdf;综合安全=真;;连接超时=30;User Instance=True”,但错误相同。关于使用(localDb)的连接字符串需要.net 4,0,您是对的。由于无法使用.net 4.0构建项目,而服务器使用.net 2.0,我已使用命名管道连接到localdb。谢谢Daniele,尝试了该操作,但出现了相同的错误,它在VS数据库资源管理器中停止工作。事实上,它在VS数据库资源管理器中工作,并且连接字符串取自web配置,这告诉我e连接字符串应该正确,但可能不起作用
<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"/>
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"/>