无法打开与 SQL Server 的 SQL 连接:找不到网络路径

问题描述 投票:0回答:5

我正在开发一个基于 .NET 的 Web 应用程序,我想连接到使用 SQL Server Management Studio 2014 创建的 SQL Server。我已经遵循了 ITWorldCodeProject 的教程,但没有成功。我收到错误“未找到网络路径”。虽然当我在“项目属性”->“设置”->“连接属性”上测试它时,结果是“测试连接成功”。直接通过 SQL Management Studio 执行查询也可以。

如何解决这个问题?

Web.config

  <connectionStrings>
    <add name="SQL_Server"
      connectionString="Data Source=192.168.60.130;Initial Catalog=TestServer;Persist Security Info=True;User ID=name;Password=password"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

默认.aspx.cs

 protected void Page_Load(object sender, EventArgs e)
 {
            string sqlConn = "SQL_Server";
            ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings[sqlConn];

            using (SqlConnection conn = new SqlConnection(settings.ConnectionString))
            {
                conn.Open(); //this is line 31 as shown from the Stack Trace error below
                SqlCommand command = new SqlCommand("SELECT * from [SQL_DB].[dbo].[users]", conn);

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {

                        Console.WriteLine(reader);
                    }
                }
                Console.ReadLine();
                Console.Clear();
            }
}

堆栈跟踪:

[Win32Exception (0x80004005): The network path was not found]

[SqlException (0x80131904): Network-related or instance-specific error when connecting to SQL Server. The server was not found or can not be accessed. Verify that the instance name is correct and that SQL Server allows remote connections. (provider: Named Pipes Provider, error: 40 - Could not open connection with SQL Server)]
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) +1431
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +1085
   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +70
   System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +964
   System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +109
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +1529
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +156
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +258
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +312
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +202
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +413
   System.Data.SqlClient.SqlConnection.Open() +128
   VF.BC._Default.Page_Load(Object sender, EventArgs e) in C:\Users\VM_User\source\repos\SQLProject\Default.aspx.cs:31
   System.Web.UI.Control.OnLoad(EventArgs e) +106
   System.Web.UI.Control.LoadRecursive() +68
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3785
c# sql-server visual-studio-2017
5个回答
2
投票

导致此错误消息的原因有很多,如下所示

  • 防病毒,
  • 防火墙
  • SQL Server 网络配置

请检查连接字符串“Data Source=x.x.x.x,1433”中是否有端口

详情请观看此视频。 解决 SQL Server 连接错误


2
投票

所以我终于找到了问题所在。问题实际上是 Web 服务器和 SQL 服务器之间的防火墙。我刚刚意识到它们位于完全不同的 IP 地址上。我使用 UDL Tool 进行测试,Web 服务器无法访问 SQL 服务器。

我联系了网络管理员,问题现已解决。

我应该早点测试一下这种方式。感谢大家的时间和支持。抱歉造成混乱。


1
投票

您的代码没有错误,它应该可以工作。请检查您的网络设置和访问权限。我在浪费了几个小时后遇到了同样的问题,我发现这是我的防病毒软件。简而言之,可以是网络端口,也可以是防火墙。


0
投票

请尝试这个:-

string connectionString = 
ConfigurationManager.ConnectionStrings["SQL_Server"].ConnectionString.ToString();

SqlConnection con = new SqlConnection(@connectionString);

请告诉我这是否有帮助。


0
投票

当服务器在 vSphere 中重新启动时,我遇到了此错误“未找到网络路径”,但虚拟机的网络适配器未设置为“开机时连接”。 因此,“Connected”值未被选中,并且虚拟机没有可用的网络。 检查已连接使其联机。 检查开机时连接可以防止这种情况发生。

vSphere Network Adapter

© www.soinside.com 2019 - 2024. All rights reserved.