Использование параметра имени сервера в строка подключения для указания клиентской сетевой библиотеки
Сводка
В этой статье описывается, как программно указать клиентную сетевую библиотеку в строка подключения при подключении к базе данных SQL Server.
В microsoft Data Access Components (MDAC) 2.6 и более поздних версиях можно указать библиотеку клиентского доступа с помощью параметра имя сервера в строка подключения. Таким образом, вы можете указать конкретную библиотеку клиентского доступа, когда приложение запрашивает имя сервера, к которому необходимо подключиться. Это может быть полезно при тестировании и устранении проблем с подключением для SQL Server.
Например, можно использовать программу командной строки Osql для подключения к SQL Server и принудительного использования сетевой библиотеки TCP/IP:
osql -Stcp:myServer,portNumber -E
Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 313295
Пример кода
В следующем примере кода .NET Для Microsoft Visual C# показано, как задать строка подключения. Строка подключения имеет одинаковый формат независимо от используемого языка:
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);
}
}
}
}
Примечание.
Строка подключения и, в частности, значение параметра сервера:
string sCxn = "server=myServer;Integrated Security=SSPI; database=northwind"
Использование примера кода с различными сетевыми библиотеками
В следующих примерах кода показано, как использовать значение параметра сервера для указания различных сетевых библиотек:
TCP/IP:
server=tcp:hostname
При необходимости можно указать конкретный номер порта. По умолчанию порт — 1433.
server=tcp:hostname, portNumber
Именованные каналы:
server=np:hostname
При необходимости можно указать конкретный именованный канал.
server=np:\\hostname\pipe\pipeName
По умолчанию имя канала — sql\query. При подключении к именованным экземплярам имя канала обычно имеет следующий формат:
MSSQL$instnaceName\sql\query
Значение по умолчанию базового протокола определяется параметрами операционной системы, где протокол может иметь одно из следующих значений:
Значение Базовый протокол ncacn_np Именованные каналы ncacn_ip_tcp Протокол управления передачей и протокол Интернета (TCP/IP) ncalrpc Вызов локальной процедуры Общая память:
server=lpc:hostname
Ссылки
Дополнительные сведения см. в приложении A. Записи реестра.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по