连接字符串中的“服务器”与“数据源”


112

我是SqlServer的新手,现在我已SqlLocalDb安装为在本地工作。很好,但是我通常可以看到两个连接字符串,并且都可以正常工作:

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

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

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


1
服务器,数据库,用户名,密码的相关关键字在此答案中列出:stackoverflow.com/a/15529085/661933
nawfal 2013年

Answers:


114

有关所有连接字符串关键字的完整列表,包括完全同义的关键字,请参阅SqlConnection.ConnectionString文档

这些都是完全等效的:

  • 数据源
  • 服务器
  • 地址
  • 地址
  • 网络地址

2
请问一个问题,为什么Microsoft创建了等效项...?(除了让我们感到困惑:
bytedev

1
@bytedev-我相信是历史融合。其中大多数名称最初是在其他较旧的数据库连接“标准”中使用的。在构建ADO.Net时,只要没有冲突的用法,您就可以允许使用较早标准中存在的许多常见用法,以简化代码移植。
Damien_The_Unbeliever

@Damien_The_Unbeliever什么是合流?我用谷歌搜索,但是有很多Atlassian的东西(我知道那个)。但是这个词是什么意思呢?我尝试了“翻译:汇合”,但得到了
答应

可能有用的是,如果由于某种原因,您的连接字符串包含多个以上关键字(并且地址值冲突),则使用最后一项;否则,使用最后一项。先前的值将被忽略。因此,例如,给定连接字符串,Server=192.168.2.2;Data Source=localhost客户端将接受该localhost值而忽略该192...值。
Brian Lacy


11

它们是同义词-您可以使用任何一个。

也就是说-就框架而言,它们是相同的。


我已经googlearching的原因在连接字符串相当于关键字的范围。到目前为止,我还没有找到很好的解释。我认为这是由于历史原因以及来自不同“世界”的用户走到一起。还有其他原因吗?
DonkeyBanana '17

0

我最喜欢的设置是不包含任何空格的设置。以最简单的形式,必须提供四个值-URL,容器,用户和证书。

  • 服务器
  • 数据库
  • uid
  • 密码

因此,连接字符串如下所示。

server = stuffy.databases.net; database = stuffy; uid = konrad; pwd = Abc123(!);


康拉德,我认为拒绝投票的人不明白你说的话。举例来说,您的意思是它比“数据源”更好的“服务器”,因为一个词不包含空格。对于“ uid”而不是“ user id”也是如此。我认为你的答案是正确的。
单击确定,

@ClickOk可能是,也许是……您明白了,所以... :)
Konrad Viltersten
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.