Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Итоги
В этой статье описывается, как программно указать клиентская сетевая библиотека в строка подключения при подключении к базе данных SQL Server.
В компонентах Microsoft Data Access (MDAC) 2.6 и более поздних версий можно указать библиотеку клиентского доступа с помощью параметра имени сервера в строка подключения. Таким образом, можно указать определенную библиотеку клиентского доступа при появлении запроса приложения на имя сервера, к которому необходимо подключиться. Это поведение может быть полезно при тестировании и устранении проблем с подключением для SQL Server.
Например, можно использовать служебную программу командной строки Osql для подключения к SQL Server и принудительного использования сетевой библиотеки TCP/IP:
osql -Stcp:myServer,portNumber -E
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 313295
Образец кода
В следующем примере кода Microsoft Visual C# .NET показано, как задать строка подключения. Строка подключения имеет одинаковый формат независимо от используемого языка:
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: записи реестра.