C#控制台应用程序无法使用TCP / IP协议连接到远程SQL Server 2008

时间:2016-04-07 17:40:44

标签: c# sql-server tcp visual-studio-2015 named-pipes

我目前无法使用C#中的TCP / IP协议连接到远程SQL Server。

使用命名管道确实有效,但TCP / IP连接没有。令人沮丧的是,我可以使用Visual Studio 2015中的服务器资源管理器窗口中的TCP / IP协议连接到数据库,但我的代码不能,即使我正在复制并粘贴确切的连接字符串。

一旦我从连接字符串中删除“Network Library = dbmssocn”,代码就可以工作,但是这使得它使用命名管道,我不能依赖它作为开发环境之外的选项。

以防万一,我已经验证在SQL Server上启用了TCP / IP协议。这是有道理的,因为我可以在visual studio的服务器资源管理器窗口中指定TCP / IP协议,并且这些连接可以正常工作。

还为SQL身份验证和Windows身份验证配置了服务器。 Windows防火墙可能也不是问题,因为它目前已关闭。

以下是我正在使用的代码:

        DbConnection testConnectionIntegrated = new SqlConnection("Data Source = MyServer; Initial Catalog = MyDatabase; Integrated Security = True; Encrypt = True; TrustServerCertificate = True; Network Library = dbmssocn");
        try
        {
            Console.Write("Attempting to connect using Windows Authentication...");
            testConnectionIntegrated.Open();

            Console.WriteLine(testConnectionIntegrated.State);
        }
        catch (Exception caughtException)
        {
            Console.WriteLine("Integrated Security Connection Failed");
            Console.WriteLine(caughtException.Message);
        }
        finally
        {
            Console.Write("Closing connection...");
            testConnectionIntegrated.Close();
            Console.WriteLine(testConnectionIntegrated.State);
        }


        DbConnection testConnectionSQLAuth = new SqlConnection("Data Source = MyServer; Initial Catalog = MyDatabase; Persist Security Info = True; User ID = my_user_name; Password = my_password; Encrypt = True; TrustServerCertificate = True; Network Library = dbmssocn");
        try
        {
            Console.Write("Attempting to connect using SQL Authentication...");
            testConnectionSQLAuth.Open();
            Console.WriteLine(testConnectionSQLAuth.State);
        }
        catch (Exception caughtException)
        {
            Console.WriteLine("SQL Authentication Connection Failed");
            Console.WriteLine(caughtException.Message);
        }
        finally
        {
            Console.Write("Closing connection...");
            testConnectionSQLAuth.Close();
            Console.WriteLine(testConnectionIntegrated.State);
        } 

这是我在两次连接尝试中看到的错误消息:

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:TCP提供程序,错误:0 - 在数据库查找期间发生了不可恢复的错误。)

有什么我想念的吗?

编辑: 我在服务器上验证了以下内容:

  • 允许远程连接。
  • 启用并配置了TCP / IP协议。
  • 已启用并配置命名管道协议。
  • 防火墙不是问题。
  • SQL Server和SQL Server Browser服务正在运行。
  • 我已重新启动服务以确保。

另外,我已经重新启动了我的开发机器,问题仍然存在。

0 个答案:

没有答案