连接字符串中的“Server”与“Data Source”有何区别?

151

我是SqlServer的新手,现在我已经安装了SqlLocalDb以便本地工作。很好,但我发现通常会有两个连接字符串,而且都可以使用:

Data Source=(localdb)\v11.0;Integrated Security=true;

Server=(localdb)\v11.0;Integrated Security=true;

这两者之间确切的区别是什么?


1
此答案中列出了与服务器、数据库、用户名和密码相关的关键字:https://dev59.com/A2445IYBdhLWcg3wirAi#15529085 - nawfal
4个回答

160
请参考SqlConnection.ConnectionString文档以获取包括完全同义词在内的所有连接字符串关键字的完整列表:
这些都是完全等效的:
  • Data Source
  • Server
  • Address
  • Addr
  • Network Address

18
这句话的意思是:“这让人质疑,为什么微软要创建等效产品……?(除了混淆我们的判断之外 :-))。” - bytedev
1
@bytedev - 我相信这是历史的交汇点。大多数这些名称最初都是在其他旧的数据库连接“标准”中使用的。在构建ADO.Net时,只要没有冲突的用法,您可以允许存在于旧标准中的尽可能多的常见名称,以便轻松移植代码。 - Damien_The_Unbeliever
7
如果你的连接字符串包含多个相同类型的关键词(且地址值冲突),最后一个关键词将被使用,之前的值将被忽略。例如,如果给定连接字符串 Server=192.168.2.2;Data Source=localhost,客户端将使用 localhost 值而忽略 192... 的值。 - Brian Lacy

20

13
他们是同义词 - 你可以使用任何一个。
也就是说 - 就框架而言,它们是相同的。

1
我一直在谷歌搜索连接字符串中等效关键字范围的原因。到目前为止,我还没有找到一个好的解释。我认为这可能是由于历史原因和来自不同“世界”的用户聚集在一起。还有其他原因吗? - DonkeyBanana

9

我最喜欢的设置是不包含任何空格的设置。 最简单的形式是提供四个值 - URL、容器、用户和凭据。

  • 服务器
  • 数据库
  • 用户(或uid)
  • 密码(或pwd)

因此,连接字符串看起来像这样。

server=stuffy.databases.net;database=stuffy;user=konrad;password=Abc123(.)(.);


1
Konrad,我认为投票者没有理解你的意思。你的意思是,例如,"server"比"data source"更好,因为一个单词不包含空格。同样的道理,"uid"比"user id"更好。我认为你的回答是正确的。 - Click Ok
@ClickOk 可能是,可能是... 不过你得到了,所以... :) - Konrad Viltersten
这使得复制、粘贴、理解、过滤和解析连接字符串变得容易。 这是一个很好的答案! - Joshua K
@JoshuaK 感谢您的友善评价。我同意除了 grok 以外的每个词。因为我不知道它的意思... 怎么才能 理解 一个字符串呢? - Konrad Viltersten
@KonradViltersten https://docs.datadoghq.com/logs/processing/parsing/?tab=matcher - Joshua K
@KonradViltersten 《异乡人》一书中的“Grok”。https://zh.wikipedia.org/wiki/Grok - Trevor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接