连接字符串中的Trusted_Connection和Integrated Security有什么区别?

101

我很好奇 SQL Server 连接字符串中 "Trusted_Connection" 和 "Integrated Security" 标记的区别(我相信其他数据库/驱动程序不支持这些标记)。我了解它们是等价的。

4个回答

119
它们是彼此的同义词,可以互换使用。
在 .Net 中,有一个名为 SqlConnectionStringBuilder 的类非常有用,用于使用类型安全的属性处理 SQL Server 连接字符串来构建字符串的部分。该类保留了一个内部同义词列表,因此可以从一个值映射到另一个值:
+----------------------+-------------------------+
| Value                | Synonym                 |
+----------------------+-------------------------+
| app                  | application name        |
| async                | asynchronous processing |
| extended properties  | attachdbfilename        |
| initial file name    | attachdbfilename        |
| connection timeout   | connect timeout         |
| timeout              | connect timeout         |
| language             | current language        |
| addr                 | data source             |
| address              | data source             |
| network address      | data source             |
| server               | data source             |
| database             | initial catalog         |
| trusted_connection   | integrated security     |
| connection lifetime  | load balance timeout    |
| net                  | network library         |
| network              | network library         |
| pwd                  | password                |
| persistsecurityinfo  | persist security info   |
| uid                  | user id                 |
| user                 | user id                 |
| wsid                 | workstation id          |
+----------------------+-------------------------+

(使用 Reflector 编译)

有其他类似的类处理ODBCOleDb连接字符串,但不幸的是没有其他数据库供应商的类 - 我会认为这个责任在供应商的库上提供这样的实现。


未来的读者请注意: 在 Sql Server 2014 中,Trusted Connection 对我无效。但是 Integrated Security 可行,因此我选择使用它! - Stachu
4
在 SQL Express 2014 上,我正在使用 trusted_connection,并且它正在工作...请注意下划线,当使用 trusted_connection 时,您必须使用 "yes" 而不是 "true"。 - Zoran P.

13

它们是相同的。

不幸的是,存在多种类似的变化,包括:

服务器/数据源

数据库/初始目录

我不确定这些变化的起源,我认为有些是通用的(不是以数据库为中心的,因此如果连接到关系型数据库管理系统或连接到目录服务,则连接字符串看起来非常相似等)。


术语“目录”是关系数据库命名法中的一部分,不指代除RDBMS之外的任何东西。在这个SO答案中已经很好地解释了它:https://dev59.com/9Gw05IYBdhLWcg3wy012 - ProfK

3

后来我发现了名称冲突的起源。ODBC使用了一组标记,而OLEDB定义了另一组标记。由于遗留原因,对于Sql Server,它们仍然可以互换地支持这两种标记。

Trusted_Connection=true是ODBC的标记,Integrated Security=SSPI是OLEDB的标记。


1
http://www.connectionstrings.com/sql-server 网站似乎说OLEDB两种方式都可以。你有其他的资源吗? - AlignedDev

1
在我的情况下,我发现了“Trusted_Connection”和“Integrated Security”之间的差异。我正在使用Microsoft SQL Server 2005。最初我使用Windows登录(Integrated Security=SSPI)。但是当我用SQL Server身份验证替换Windows身份验证并添加用户ID和密码时,将SSPI替换为“False”失败了。它返回了“Multiple-step OLE DB操作生成错误”。然而,当我用“Trusted_Connection=no”替换“Integrated Security=False”时,它可以工作。

1
如果您正在使用 SQL Server 身份验证并指定用户 ID 和密码,则无需提及“集成安全性”或“受信任的连接”。 - grahamesd

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