¿Cuál es la diferencia entre Trusted_Connection y Integrated Security en una cadena de conexión?

81

Tengo curiosidad por saber cuál es la diferencia entre el token "Trusted_Connection" y la "Seguridad integrada" en las cadenas de conexión de SQL Server (creo que otras bases de datos / controladores no los admiten). Entiendo que son equivalentes.

Peter Oehlert
fuente

Respuestas:

100

Son sinónimos entre sí y se pueden usar indistintamente.

En .Net, hay una clase llamada SqlConnectionStringBuilder que es muy útil para tratar con cadenas de conexión de SQL Server utilizando propiedades de tipo seguro para construir partes de la cadena. Esta clase mantiene una lista interna de sinónimos para que pueda mapear de un valor a otro:

+ ---------------------- + ------------------------- +
| Valor | Sinónimo |
+ ---------------------- + ------------------------- +
| aplicación | nombre de la aplicación |
| async | procesamiento asincrónico |
| propiedades extendidas | attachdbfilename |
| nombre de archivo inicial | attachdbfilename |
| tiempo de espera de conexión | tiempo de espera de conexión |
| tiempo de espera | tiempo de espera de conexión |
| idioma | idioma actual |
| addr | fuente de datos |
| direccion | fuente de datos |
| dirección de red | fuente de datos |
| servidor | fuente de datos |
| base de datos | catalogo inicial |
| confiable_conexión | seguridad integrada |
| vida útil de la conexión | tiempo de espera del equilibrio de carga |
| neto | biblioteca de red |
| red | biblioteca de red |
| pwd | contraseña |
| persistsecurityinfo | persistir información de seguridad |
| uid | ID de usuario |
| usuario | ID de usuario |
| wsid | ID de la estación de trabajo |
+ ---------------------- + ------------------------- +

(Compilado con la ayuda de Reflector)

Hay otras clases similares para tratar con cadenas de conexión ODBC y OleDb , pero desafortunadamente nada para otros proveedores de bases de datos; supongo que la responsabilidad recae en la biblioteca del proveedor para proporcionar dicha implementación.

adrianbanks
fuente
Nota al margen para los futuros espectadores de esto: Trusted Connection no me funciona en un Sql Server 2014. Sin embargo, Integrated Security sí, ¡así que voy con eso!
Stachu
4
En SQL Express 2014 estoy usando trust_connection y está funcionando ... tenga en cuenta el subrayadoc, por favor, y debe usar "yes" en lugar de "true" cuando use trust_connection
Zoran P.
10

Ellos son iguales.

Desafortunadamente, existen varias variaciones como esta, que incluyen:

Servidor / Fuente de datos

Base de datos / Catálogo inicial

No estoy seguro de los orígenes de las variaciones, supongo que algunas están destinadas a ser genéricas (no centradas en la base de datos, por lo que su cadena de conexión se vería muy similar si se conecta a un RDBMS en lugar de conectarse a un servicio de directorio, etc.)

Cade Roux
fuente
El término cataloges parte de la nomenclatura de la base de datos relacional y no se refiere a nada más que a un RDBMS. Se explica bastante bien en esta respuesta SO: stackoverflow.com/questions/7022755/…
ProfK
2

Así que un poco más tarde descubrí el origen del conflicto de nombres. ODBC utilizó un conjunto de tokens y se definió un conjunto diferente para OLEDB. Para Sql Server, por razones heredadas, todavía admiten ambos indistintamente.

Trusted_Connection = true es ODBC y Integrated Security = SSPI era OLEDB.

Peter Oehlert
fuente
1
connectionstrings.com/sql-server parece decir que cualquiera de los dos funciona para OLEDB. ¿Tiene un recurso diferente?
AlignedDev
1

En mi caso, he descubierto una diferencia entre "Trusted_Connection" y "Seguridad integrada". Estoy usando Microsoft SQL Server 2005. Originalmente usé el inicio de sesión de Windows (Seguridad Integrada = SSPI). Pero cuando reemplacé la autenticación de Windows por la autenticación de SQL Server agregando el ID de usuario y la contraseña, el reemplazo de SSPI por "Falso" falló. Devolvió un "error generado por la operación OLE DB de varios pasos". Sin embargo, cuando reemplacé "Integrated Security = False" por "Trusted_Connection = no", funcionó.

Cordis Audax Agrinova
fuente
Si está utilizando la autenticación de SQL Server y especifica la identificación de usuario y la contraseña, no es necesario que mencione "seguridad integrada" o "conexiones_de_confianza".
grahamesd