HMR*_*HMR 13 .net sql-server connection-string web-config
如果我在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"/>
Run Code Online (Sandbox Code Playgroud)
连接有效,我可以连接到数据库资源管理器中的数据库.
当我在代码中指定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();
Run Code Online (Sandbox Code Playgroud)
从web.config获取连接字符串会产生相同的错误:
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings
["conn"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"System.ComponentModel.Win32Exception:找不到网络路径"
在跟踪中说:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)]
我需要一些帮助来解决这个问题,一直试图解决这个问题几个小时,任何在线建议是我应该检查网络设置(不适用,因为它连接到sql server express的本地实例).服务器名称(相同的字符串在VS Express中有效,但在运行代码中不起作用).
这可能是身份验证问题吗?如果是这样,为什么没有信息的错误?
感谢您阅读我的帖子,希望您能帮助我.
更新:
我尝试过以下的事情:
鉴于该组每个人都对mdf和ldf文件拥有完全权限
在web下的项目属性中,我尝试在VS开发服务器和本地IIS Web服务器下运行项目(是IIS Express)
没有运气,在将代码复制到使用"ASP.NET空Web应用程序"创建的项目时,仍然无法连接完全正常的连接
小智 13
您已正确转义了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");
Run Code Online (Sandbox Code Playgroud)
问题与应用程序未在.net 4.0版中运行有关
根据以下页面:http: //www.connectionstrings.com/sql-server-2012#sqlconnection
您需要.net 4.0以及最多使用命名管道:
4.0.2之前的.NET Framework版本不支持Server =(localdb)语法.但是,命名管道连接将用于将4.0.2之前的应用程序连接到LocalDB实例.
SqlLocalDB.exe create MyInstance
SqlLocalDB.exe start MyInstance
SqlLocalDB.exe info MyInstance
Run Code Online (Sandbox Code Playgroud)
info提供了命名管道,然后可以在连接字符串中使用:
<add name="conn"
providerName="System.Data.SqlClient"
connectionString="Server=np:\\.\pipe\LOCALDB#B1704E69\tsql\query"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37959 次 |
| 最近记录: |