Udostępnij za pośrednictwem


Użyj parametru nazwy serwera w parametry połączenia, aby określić bibliotekę sieci klienta

Podsumowanie

W tym artykule opisano sposób programowego określania biblioteki sieciowej klienta w parametry połączenia podczas nawiązywania połączenia z bazą danych programu SQL Server.

W programie Microsoft Data Access Components (MDAC) 2.6 lub nowszym można określić bibliotekę dostępu klienta przy użyciu parametru nazwy serwera w parametry połączenia. W związku z tym można określić określoną bibliotekę dostępu klienta po wyświetleniu monitu przez aplikację o nazwę serwera, z którą ma nawiązać połączenie. To zachowanie może być przydatne podczas testowania i rozwiązywania problemów z łącznością dla programu SQL Server.

Na przykład możesz użyć narzędzia wiersza polecenia Osql, aby nawiązać połączenie z programem SQL Server i wymusić użycie biblioteki sieciowej TCP/IP:

osql -Stcp:myServer,portNumber -E

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 313295

Przykład kodu

W poniższym przykładzie kodu platformy .NET w języku Microsoft Visual C# pokazano, jak ustawić parametry połączenia. Parametry połączenia ma ten sam format niezależnie od używanego języka:

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

Uwaga 16.

Parametry połączenia, a szczególnie wartość parametru serwera:

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

Używanie przykładu kodu z różnymi bibliotekami sieciowymi

W poniższych przykładach kodu pokazano, jak używać wartości parametru serwera do określania różnych bibliotek sieciowych:

  • TCP/IP:

    server=tcp:hostname
    

    Opcjonalnie możesz określić określony numer portu. Domyślnie port to 1433.

    server=tcp:hostname, portNumber
    
  • Nazwane potoki:

    server=np:hostname
    

    Opcjonalnie możesz określić określony nazwany potok.

    server=np:\\hostname\pipe\pipeName
    

    Domyślnie nazwa potoku to sql\query. Jeśli łączysz się z nazwanym wystąpieniem, nazwa potoku jest zwykle w następującym formacie:

    MSSQL$instnaceName\sql\query

  • Wartość domyślna protokołu bazowego jest określana przez ustawienia systemu operacyjnego, w których protokół może mieć dowolną z następujących wartości:

    Wartość Protokół bazowy
    ncacn_np Nazwane potoki
    ncacn_ip_tcp Transmission Control Protocol/Internet Protocol (TCP/IP)
    ncalrpc Wywołanie procedury lokalnej
  • Pamięć udostępniona:

    server=lpc:hostname
    

Informacje

Aby uzyskać więcej informacji, zobacz Dodatek A: Wpisy rejestru.