我正在使用VSTS 2008 + C#+ ADO.Net + SQL Server 2008.我对SQL Server 2008将使用哪种通信协议的问题,我的问题的更多细节,
如果连接字符串如下所示,是使用了命名管道还是TCP / IP?是否使用不同的通信协议取决于客户端和SQL Server是否在同一台机器上?
Data Source = labtest1; Initial Catalog = CustomerDB; Trusted_Connection = true; Asynchronous
在SQL Server配置管理器中,有一些项称为“SQL Server网络配置”和“SQL Native Client 10.0配置”。我发现它们都有命名管道或TCP / IP的配置选项(用于通信协议),“SQL Server网络配置”和“SQL Native Client 10.0配置”之间有什么区别?
答案 0 :(得分:5)
根据SQL Server 2008联机丛书,会发生以下情况:
在服务器上本地连接
从本地客户端连接到数据库引擎(客户端应用程序和SQL Server位于同一台计算机上)时,默认情况下连接使用共享内存协议。 SQL Server Native Client接受以下任何格式,以使用共享内存协议进行本地连接:
要使用其他协议进行本地连接(用于故障排除),请在启用协议的情况下执行以下操作之一:
通过网络连接
默认情况下,SQL Server客户端的默认协议是 TCP / IP 。如果无法使用TCP / IP建立连接,则尝试使用其他已启用的协议。无法通过网络建立共享内存连接。使用SQL Server配置管理器启用或禁用客户端协议,并更改连接尝试的顺序。
在Sql Server配置管理器中,您可以定义客户端协议的顺序 - 我会假设这是客户端尝试连接到SQL Server的顺序。将使用服务器首先支持的协议。
配置实用程序的AS:
如果你有一个开发盒,两者都有,你会看到两者。连接到SQL Server的常规PC通常本地没有安装SQL Server本身,因此服务器端设置显然没有意义。
马克
答案 1 :(得分:2)
在运行客户端程序的计算机上使用SQL Server Native Client Configuration中配置的设置。在运行SQL Server的计算机上配置时,它们仅影响服务器上运行的客户端程序。
计算机上的Microsoft SQL Server客户端使用SQL Server Native Client库文件中提供的协议与SQL Server服务器通信。
请记住,Microsoft .NET SqlClient不使用这些设置。 .NET SqlClient的协议顺序是TCP,然后是命名管道,无法更改。