有人能告诉我以下连接字符串之间的有效区别:
<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中指定这些设置是否存在任何差异或性能影响。
答案 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:
SQL Server默认使用TCP / IP,因此无需指定它。可以找到关于连接字符串的整篇文章here。