Usare il parametro nome server in un stringa di connessione per specificare la libreria di rete client

Riepilogo

Questo articolo descrive come specificare a livello di codice la libreria di rete client nel stringa di connessione quando ci si connette a un database SQL Server.

In Microsoft Data Access Components (MDAC) 2.6 e versioni successive è possibile specificare la libreria di accesso client usando il parametro nome server in stringa di connessione. Pertanto, è possibile specificare una libreria di accesso client specifica quando viene richiesto da un'applicazione per un nome di server a cui connettersi. Questo comportamento può essere utile durante il test e la risoluzione dei problemi di connettività per SQL Server.

Ad esempio, è possibile usare l'utilità da riga di comando Osql per connettersi a SQL Server e forzarlo a usare la libreria di rete TCP/IP:

osql -Stcp:myServer,portNumber -E

Versione originale del prodotto: SQL Server
Numero KB originale: 313295

Esempio di codice

Nell'esempio di codice .NET di Microsoft Visual C# seguente viene illustrato come impostare il stringa di connessione. Il stringa di connessione ha lo stesso formato indipendentemente dalla lingua usata:

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

Il stringa di connessione e in particolare il valore del parametro server:

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

Usare l'esempio di codice con diverse librerie di rete

Gli esempi di codice seguenti illustrano come usare il valore del parametro server per specificare diverse librerie di rete:

  • TCP / IP:

    server=tcp:hostname
    

    Facoltativamente, è possibile specificare un numero di porta specifico. Per impostazione predefinita, la porta è 1433.

    server=tcp:hostname, portNumber
    
  • Named Pipes:

    server=np:hostname
    

    Facoltativamente, è possibile specificare una named pipe specifica.

    server=np:\\hostname\pipe\pipeName
    

    Per impostazione predefinita, il nome della pipe è sql\query. Se ci si connette a un'istanza denominata, il nome della pipe è in genere nel formato seguente:

    MSSQL$instnaceName\sql\query

  • Il valore predefinito del protocollo sottostante è determinato dalle impostazioni del sistema operativo in cui un protocollo può avere uno dei valori seguenti:

    Valore Protocollo sottostante
    ncacn_np Named Pipe
    Ncacn_ip_tcp Transmission Control Protocol/Internet Protocol (TCP/IP)
    ncalrpc Chiamata di routine locale
  • Memoria condivisa:

    server=lpc:hostname
    

Riferimenti

Per altre informazioni, vedere Appendice A: Voci del Registro di sistema.