在Server Explorer
下使用SSMS和Visual Studio 2015的Data Connections
标签,我可以毫无问题地在远程服务器KOSH上执行查询。为什么在Visual Studio / IIS Express中本地运行的MVC应用程序无法执行相同操作?
使用VS2015的连接Properties
,我得到它的连接字符串:
Data Source=123.456.78.9;Persist Security Info=True;User ID=Foo;Password=Bar
使用该连接字符串,MVC应用程序迎接:
“发生与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server配置为允许远程连接。 (提供者:命名 管道提供程序,错误:40 - 无法打开与SQL的连接 服务器)“
内部异常消息:
“找不到网络路径”
我知道服务器/防火墙/网络设置是正确的。这就离开了申请。
using(var connection = Database.Connection(conInfo.ConnectionString, provider)) {
// rowCountSql: SELECT SUM(rows) TM_ROWCOUNT FROM sys.partitions
// WHERE object_id = object_id(@tableName) and index_id IN (0,1)
// Any other SQL yields same error
var countTask = connection.QueryAsync(rowCountSql, new { tableName = Editor.TableName });
}
使用异步是因为Oracle版本的查询可能需要几秒钟才能返回。 应用程序应该是正确的,因为它连接到家中的同一服务器(也是服务器的位置)和运行2008R2到2014的远程数据中心中的相同数据库没有问题。
Database.Connection()
是:
// This is unlikely to be the problem as it is very well tested
public static DbConnection Connection(string connectionString, string databaseProvider) {
DbProviderFactory databaseFactory = DbProviderFactories.GetFactory(databaseProvider);
DbConnection connection = databaseFactory.CreateConnection();
if(connection != null)
connection.ConnectionString = connectionString;
return connection;
}
我打赌我错过了一些简单的事情,但我很感激能帮助你做些什么。
答案 0 :(得分:0)
正如我在评论中所说,可能是你的代码:
conInfo.ConnectionString
不包含您想要的正确连接字符串。
检查出来