SqlConnection类中的默认网络协议是什么

时间:2014-08-28 05:24:06

标签: c# asp.net .net sql-server ado.net

在下面的代码片段中,用于连接SQL Server的网络协议是什么? TCP / IP或命名管道还是其他?

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
    //
    // First access the connection string.
    // ... This may be autogenerated in Visual Studio.
    //
    string connectionString = "Server=SERVER\\INSTANCE;Database=myDataBase;User Id=myUsername;
Password=myPassword;"
    //
    // In a using statement, acquire the SqlConnection as a resource.
    //
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        //
        // Open the SqlConnection.
        //
        con.Open();
        //
        // The following code uses an SqlCommand based on the SqlConnection.
        //
        using (SqlCommand command = new SqlCommand("SELECT TOP 2 * FROM Dogs1", con))
        using (SqlDataReader reader = command.ExecuteReader())
        {
        while (reader.Read())
        {
            Console.WriteLine("{0} {1} {2}",
            reader.GetInt32(0), reader.GetString(1), reader.GetString(2));
        }
        }
    }
    }
}

2 个答案:

答案 0 :(得分:7)

根据SQL Server Native Client Configuration

  

按照列出的顺序尝试协议,尝试首先使用顶级协议进行连接,然后使用第二个列出的协议等进行连接。

但是,我们也读到了:

  

Microsoft .NET SqlClient不使用这些设置。 .NET SqlClient的协议顺序是TCP,然后是命名管道,无法更改。

这就是他们将要尝试的顺序 - 首先是TCP,然后是命名管道 - 所以没有“a”协议将被使用 - 这取决于成功

答案 1 :(得分:1)

来自MSDN

  

SQL Server的.NET Framework数据提供程序使用自己的协议   与SQL Server通信。因此,它不支持使用   连接到SQL Server时的ODBC数据源名称(DSN)   因为它没有添加ODBC层。

还有MSDN

  

如果您在尝试时指定的端口号不是1433   连接到SQL Server实例并使用除以外的协议   TCP / IP,Open方法失败。指定除以外的端口号   1433,包括" server = machinename,port number"在连接中   字符串,并使用TCP / IP协议。