在连接字符串中使用 server name 参数指定客户端网络库
09/25/2020
本文内容
摘要
本文介绍在连接到 SQL Server 数据库时,如何以编程方式在连接字符串中指定客户端网络库。
在 Microsoft Data Access 组件 (MDAC) 2.6 及更高版本中,您可以使用 "连接字符串" 中的 " 服务器名称 " 参数指定客户端访问库。 因此,当应用程序提示要连接到的服务器名称时,您可以指定特定的客户端访问库。 在测试和解决 SQL Server 的连接问题时,此行为可能很有用。
例如,可以使用 Osql 命令行实用工具连接到 SQL Server 并强制其使用 TCP/IP 网络库:
osql -Stcp:myServer,portNumber -E
原始产品版本: SQL Server
原始 KB 数: 313295
代码示例
下面的 Microsoft Visual c # .NET 代码示例演示如何设置连接字符串。 连接字符串具有相同的格式,而不考虑您使用的语言:
using System;
using System.Data;
using System.Data.SqlClient;
namespace getCurrentProtocol
{
///
/// Main Application Driver Class
///
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);
}
}
}
}
备注
连接字符串,尤其是 server 参数的值:
string sCxn = "server=myServer;Integrated Security=SSPI; database=northwind"
将代码示例用于不同的网络库
下面的代码示例演示如何使用 server 参数的值指定各种网络库:
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) 的传输控制协议/Internet 协议 (
ncalrpc
本地过程调用
共享内存:
server=lpc:hostname
参考
有关详细信息,请参阅 附录 A:注册表项。