Sql server 可信连接和连接字符串中的集成安全性之间有什么区别?

Sql server 可信连接和连接字符串中的集成安全性之间有什么区别?,sql-server,connection-string,Sql Server,Connection String,我很好奇SQL Server连接字符串中的令牌“Trusted_Connection”和“Integrated Security”之间有什么区别(我相信其他数据库/驱动程序不支持这些)。我知道它们是相等的。它们是相同的 不幸的是,有几种类似的变体,包括: 服务器/数据源 数据库/初始目录 我不确定这些变体的起源,我假设其中一些变体是通用的(不是以数据库为中心的,所以如果连接到RDBMS与连接到目录服务等,您的连接字符串看起来会非常相似)。它们是彼此的同义词,可以互换使用 在.Net中,有一个名为

我很好奇SQL Server连接字符串中的令牌“Trusted_Connection”和“Integrated Security”之间有什么区别(我相信其他数据库/驱动程序不支持这些)。我知道它们是相等的。

它们是相同的

不幸的是,有几种类似的变体,包括:

服务器/数据源

数据库/初始目录


我不确定这些变体的起源,我假设其中一些变体是通用的(不是以数据库为中心的,所以如果连接到RDBMS与连接到目录服务等,您的连接字符串看起来会非常相似)。

它们是彼此的同义词,可以互换使用

在.Net中,有一个名为的类,它对于使用类型安全属性来构建部分字符串来处理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 | +----------------------+-------------------------+ +----------------------+-------------------------+ |值|同义词| +----------------------+-------------------------+ |应用程序|应用程序名称| |异步|异步处理| |扩展属性| attachdbfilename| |初始文件名| attachdbfilename| |连接超时|连接超时| |超时|连接超时| |语言|当前语言| |地址|数据源| |地址|数据源| |网络地址|数据源| |服务器|数据源| |数据库|初始目录| |可信连接|集成安全| |连接生存期|负载平衡超时| |net |网络图书馆| |网络|网络图书馆| |密码| |持久安全信息|持久安全信息| |uid |用户id| |用户|用户id| |wsid |工作站id| +----------------------+-------------------------+ (在Reflector的帮助下编译)


还有其他类似的类用于处理和连接字符串,但不幸的是,其他数据库供应商没有这样的类-我假设供应商的库有责任提供这样的实现。

因此,稍后我发现了名称冲突的根源。ODBC使用了一组令牌,而OLEDB使用了另一组令牌。对于Sql Server,由于遗留原因,它们仍然可以互换地支持这两种方法


Trusted_Connection=true是ODBC,Integrated Security=SSPI是OLEDB。

在我的例子中,我发现了“Trusted_Connection”和“Integrated Security”之间的区别。我正在使用Microsoft SQL Server 2005。最初我使用Windows登录(集成安全性=SSPI)。但是,当我将Windows身份验证替换为添加用户ID和密码的SQL Server身份验证时,将SSPI替换为“False”失败。它返回了一个“多步骤OLE DB操作生成的错误”。然而,当我将“integratedsecurity=False”替换为“Trusted_Connection=no”时,它起到了作用。

似乎说两者都适用于OLEDB。你有不同的资源吗?这篇文章未来观众的旁注:在Sql Server 2014中,受信任的连接不适用于我。集成安全确实如此,所以我同意!在SQL Express 2014上,我正在使用trusted_连接,它正在工作。。。请注意下划线,在使用受信任的连接时,您必须使用“是”而不是“真”。术语
catalog
是关系数据库术语的一部分,除了RDBMS外,不指任何内容。在这个SO答案中解释得很好:如果您使用SQL Server身份验证并指定用户id和密码,则不需要提及“集成安全性”或“受信任的连接”。