Gebruik de servernaamparameter in een verbindingsreeks om de clientnetwerkbibliotheek op te geven

Samenvatting

In dit artikel wordt beschreven hoe u programmatisch de clientnetwerkbibliotheek opgeeft in de verbindingsreeks wanneer u verbinding maakt met een SQL Server-database.

In Microsoft Data Access Components (MDAC) 2.6 en hoger kunt u de clienttoegangsbibliotheek opgeven met behulp van de servernaamparameter in verbindingsreeks. Daarom kunt u een specifieke clienttoegangsbibliotheek opgeven wanneer u wordt gevraagd door een toepassing voor een servernaam waarmee verbinding moet worden gemaakt. Dit gedrag kan nuttig zijn wanneer u connectiviteitsproblemen voor SQL Server test en ops lossen.

U kunt bijvoorbeeld het opdrachtregelprogramma Osql gebruiken om verbinding te maken met SQL Server en deze af te dwingen om de TCP/IP-netwerkbibliotheek te gebruiken:

osql -Stcp:myServer,portNumber -E

Oorspronkelijke productversie: SQL Server
Oorspronkelijk KB-nummer: 313295

Codevoorbeeld

In het volgende Microsoft Visual C# .NET-codevoorbeeld ziet u hoe u de verbindingsreeks instelt. De verbindingsreeks heeft dezelfde indeling, ongeacht de taal die u gebruikt:

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

Notitie

De verbindingsreeks en met name de waarde van de serverparameter:

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

Het codevoorbeeld gebruiken met verschillende netwerkbibliotheken

In de volgende codevoorbeelden ziet u hoe u de waarde van de serverparameter gebruikt om verschillende netwerkbibliotheken op te geven:

  • TCP/IP:

    server=tcp:hostname
    

    U kunt desgewenst een specifiek poortnummer opgeven. Standaard is de poort 1433.

    server=tcp:hostname, portNumber
    
  • Named Pipes:

    server=np:hostname
    

    U kunt desgewenst een specifieke benoemde pijp opgeven.

    server=np:\\hostname\pipe\pipeName
    

    De pijpnaam is standaard sql\query. Als u verbinding maakt met een benoemd exemplaar, heeft de pijpnaam doorgaans de volgende indeling:

    MSSQL$instnaceName\sql\query

  • De standaardwaarde van het onderliggende protocol wordt bepaald door de besturingssysteeminstellingen waarbij een protocol een van de volgende waarden kan hebben:

    Weergegeven als Onderliggend protocol
    ncacn_np Named Pipes
    ncacn_ip_tcp Transmission Control Protocol/Internet Protocol (TCP/IP)
    ncalrpc Lokale procedure-aanroep
  • Gedeeld geheugen:

    server=lpc:hostname
    

Verwijzingen

Zie bijlage A: Registervermeldingen voor meer informatie.