Use el parámetro de nombre de servidor en un cadena de conexión para especificar la biblioteca de red cliente.

Resumen

En este artículo se describe cómo especificar mediante programación la biblioteca de red cliente en el cadena de conexión al conectarse a una base de datos de SQL Server.

En Microsoft Data Access Components (MDAC) 2.6 y versiones posteriores, puede especificar la biblioteca de acceso de cliente mediante el parámetro nombre del servidor en cadena de conexión. Por lo tanto, puede especificar una biblioteca de acceso de cliente específica cuando una aplicación le pida un nombre de servidor al que conectarse. Este comportamiento puede ser útil al probar y solucionar problemas de conectividad para SQL Server.

Por ejemplo, puede usar la utilidad de línea de comandos de Osql para conectarse a SQL Server y forzarla a usar la biblioteca de red TCP/IP:

osql -Stcp:myServer,portNumber -E

Versión del producto original: SQL Server
Número de KB original: 313295

Ejemplo de código

El siguiente ejemplo de código .NET de Microsoft Visual C# muestra cómo establecer el cadena de conexión. El cadena de conexión tiene el mismo formato independientemente del idioma que use:

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

Nota:

El cadena de conexión y, en particular, el valor del parámetro de servidor:

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

Uso del ejemplo de código con varias bibliotecas de red

En los ejemplos de código siguientes se muestra cómo usar el valor del parámetro de servidor para especificar varias bibliotecas de red:

  • TCP/IP:

    server=tcp:hostname
    

    Opcionalmente, puede especificar un número de puerto específico. De forma predeterminada, el puerto es 1433.

    server=tcp:hostname, portNumber
    
  • Canalizaciones:

    server=np:hostname
    

    Opcionalmente, puede especificar una canalización con nombre específica.

    server=np:\\hostname\pipe\pipeName
    

    De forma predeterminada, el nombre de la canalización es sql\query. Si se conecta a una instancia con nombre, el nombre de la canalización suele tener el siguiente formato:

    MSSQL$instnaceName\sql\query

  • El valor predeterminado del protocolo subyacente viene determinado por la configuración del sistema operativo, donde un protocolo puede tener cualquiera de los siguientes valores:

    Valor Protocolo subyacente
    ncacn_np Canalizaciones
    ncacn_ip_tcp Protocolo de control de transmisión/Protocolo de Internet (TCP/IP)
    ncalrpc Llamada a procedimiento local
  • Memoria compartida:

    server=lpc:hostname
    

Referencias

Para obtener más información, vea Apéndice A: Entradas del Registro.