这些连接字符串的区别?

时间:2009-10-07 10:10:12

标签: asp.net performance connection-string

有人能告诉我以下连接字符串之间的有效区别:

<add key="ConnectionString" value="server=tcp:192.168.0.12\Sqlserver2005;database=;user id=sa;password=;">



<add key="ConnectionString" value="server=192.168.0.12\Sqlserver2005;database=;user id=sa;password=;Network Library=DBMSSOCN;">

我相信两者都是一样的。指定“网络库= DBMSSOCN”使用TCPIP显式连接,前缀服务器值与TCP做同样的事情。

请告诉我在web.config中指定这些设置是否存在任何差异或性能影响。

3 个答案:

答案 0 :(得分:11)

两个选项之间的区别是:

指定协议

使用其中之一,

Multiprotocol = rpc

共享内存= lpc

NWlink IPX / SPX = spx

Banyan VINES =葡萄藤

Apple Talk = adsp

TCP = tcp

这是推荐的方法。我觉得它更安全,因为DLL名称比协议名称更有可能改变。

它还允许您更改端口号,而不是使用SQL Server客户端网络实用程序全面配置它。

在没有 dll 扩展程序的情况下指定库

指定库将使用与没有.dll扩展名的实际网络DLL库文件相同的名称。

示例:

TCP / IP:C:\ WINDOWS \ system32 \ DBMSSOCN.dll

命名管道:C:\ WINDOWS \ system32 \ DBNMPNTW.dll

多协议(RPC):C:\ WINDOWS \ system32 \ DBMSRPCN.dll

NWLink IPX / SPX:C:\ WINDOWS \ system32 \ DBMSSPXN.dll

AppleTalk:C:\ WINDOWS \ system32 \ DBMSADSN.dll

Banyan VINES:C:\ WINDOWS \ system32 \ DBMSVINN.dll

当您想编写自己的网络库时,这将最有效。 请参阅SQL Server客户端网络实用程序。

表现权衡是微不足道的,并不明显。最好坚持使用标准并在web.config中进行配置,因为其他开发人员将知道在哪里查找连接设置。类似于在java中拥有数据源连接。

答案 1 :(得分:4)

DBMSSOCN是网络库的默认值。因此,如果您不在连接字符串上使用它,那么它将使用默认值“DBMSSOCN”

请参阅:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

答案 2 :(得分:3)

关于Network Library=:直接来自Microsoft source

  • dbnmpntw - Win32 Named Pipes
  • dbmssocn - Win32 Winsock TCP / IP
  • dbmsspxn - Win32 SPX/IPX
  • dbmsvinn - Win32 Banyan Vines
  • dbmsrpcn - Win32多协议(Windows RPC)

SQL Server默认使用TCP / IP,因此无需指定它。可以找到关于连接字符串的整篇文章here