Использование параметра имени сервера в строка подключения для указания клиентской сетевой библиотеки

Сводка

В этой статье описывается, как программно указать клиентную сетевую библиотеку в строка подключения при подключении к базе данных SQL Server.

В microsoft Data Access Components (MDAC) 2.6 и более поздних версиях можно указать библиотеку клиентского доступа с помощью параметра имя сервера в строка подключения. Таким образом, вы можете указать конкретную библиотеку клиентского доступа, когда приложение запрашивает имя сервера, к которому необходимо подключиться. Это может быть полезно при тестировании и устранении проблем с подключением для SQL Server.

Например, можно использовать программу командной строки Osql для подключения к SQL Server и принудительного использования сетевой библиотеки TCP/IP:

osql -Stcp:myServer,portNumber -E

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 313295

Пример кода

В следующем примере кода .NET Для Microsoft Visual C# показано, как задать строка подключения. Строка подключения имеет одинаковый формат независимо от используемого языка:

using System;
using System.Data;
using System.Data.SqlClient;

namespace getCurrentProtocol
{
    /// <summary>
    /// Main Application Driver Class
    /// </summary>
    class Driver
    {
        static void Main(string[] args)
        {
            string sCxn = "server=myServer;Integrated Security=SSPI; database=master";
            //string sCxn = "server=np:myServer;Integrated Security=SSPI; database=master";
            //string sCxn = "server=tcp:myServer;Integrated Security=SSPI; database=master";
            //string sCxn = "server=rpc:myServer;Integrated Security=SSPI; database=master";
            //string sCxn = "server=lpc:myServer;Integrated Security=SSPI; database=master";
            string sCmd = "SELECT net_library from sysprocesses where spid=@@spid";
            SqlConnection cxn = new SqlConnection(sCxn);
            SqlCommand sqlCmd = new SqlCommand(sCmd, cxn);
            SqlDataAdapter sqlDa = new SqlDataAdapter(sCmd, cxn);
            DataTable dt = new DataTable();
            try 
            {
                sqlDa.Fill(dt);
                Console.WriteLine("Hit ENTER to continue ...");
                Console.ReadLine();
                foreach (DataRow dr in dt.Rows)
                Console.WriteLine(dr["net_library"]);
            } 
            catch (SqlException e)
            {
                Console.WriteLine(e.StackTrace);
                Console.WriteLine("SQL Error Number: " + e.Number);
                Console.WriteLine("SQL Error Message: " + e.Message);
            }
        }
    }
}

Примечание.

Строка подключения и, в частности, значение параметра сервера:

string sCxn = "server=myServer;Integrated Security=SSPI; database=northwind"

Использование примера кода с различными сетевыми библиотеками

В следующих примерах кода показано, как использовать значение параметра сервера для указания различных сетевых библиотек:

  • TCP/IP:

    server=tcp:hostname
    

    При необходимости можно указать конкретный номер порта. По умолчанию порт — 1433.

    server=tcp:hostname, portNumber
    
  • Именованные каналы:

    server=np:hostname
    

    При необходимости можно указать конкретный именованный канал.

    server=np:\\hostname\pipe\pipeName
    

    По умолчанию имя канала — sql\query. При подключении к именованным экземплярам имя канала обычно имеет следующий формат:

    MSSQL$instnaceName\sql\query

  • Значение по умолчанию базового протокола определяется параметрами операционной системы, где протокол может иметь одно из следующих значений:

    Значение Базовый протокол
    ncacn_np Именованные каналы
    ncacn_ip_tcp Протокол управления передачей и протокол Интернета (TCP/IP)
    ncalrpc Вызов локальной процедуры
  • Общая память:

    server=lpc:hostname
    

Ссылки

Дополнительные сведения см. в приложении A. Записи реестра.