Use o parâmetro nome do servidor em um cadeia de conexão para especificar a biblioteca de rede do cliente

Resumo

Este artigo descreve como especificar programaticamente a biblioteca de rede do cliente no cadeia de conexão quando você se conecta a um banco de dados SQL Server.

No MDAC (Componentes do Microsoft Data Access) 2.6 e posterior, você pode especificar a biblioteca de acesso ao cliente usando o parâmetro nome do servidor em cadeia de conexão. Portanto, você pode especificar uma biblioteca de acesso ao cliente específica quando for solicitado por um aplicativo para um nome de servidor ao qual se conectar. Esse comportamento pode ser útil quando você está testando e solução de problemas de conectividade para SQL Server.

Por exemplo, você pode usar o utilitário de linha de comando Osql para se conectar ao SQL Server e forçá-lo a usar a biblioteca de rede TCP/IP:

osql -Stcp:myServer,portNumber -E

Versão original do produto: SQL Server
Número de KB original: 313295

Exemplo de código

O exemplo de código .NET do Microsoft Visual C# a seguir demonstra como definir o cadeia de conexão. O cadeia de conexão tem o mesmo formato, independentemente da linguagem que você usa:

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);
            }
        }
    }
}

Observação

O cadeia de conexão e particularmente o valor do parâmetro do servidor:

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

Usar o exemplo de código com várias bibliotecas de rede

Os exemplos de código a seguir demonstram como usar o valor do parâmetro do servidor para especificar várias bibliotecas de rede:

  • TCP/IP:

    server=tcp:hostname
    

    Opcionalmente, você pode especificar um número de porta específico. Por padrão, a porta é 1433.

    server=tcp:hostname, portNumber
    
  • Pipes nomeados:

    server=np:hostname
    

    Opcionalmente, você pode especificar um pipe nomeado específico.

    server=np:\\hostname\pipe\pipeName
    

    Por padrão, o nome do pipe é sql\query. Se você se conectar a uma instância nomeada, o nome do pipe normalmente estará no seguinte formato:

    MSSQL$instnaceName\sql\query

  • O valor padrão do protocolo subjacente é determinado pelas configurações do sistema operacional em que um protocolo pode ter qualquer um dos seguintes valores:

    Valor Protocolo subjacente
    ncacn_np Pipes nomeados
    Ncacn_ip_tcp Protocolo de Controle de Transmissão/Protocolo de Internet (TCP/IP)
    ncalrpc Chamada de procedimento local
  • Memória compartilhada:

    server=lpc:hostname
    

Referências

Para obter mais informações, consulte Apêndice A: Entradas do Registro.