web-dev-qa-db-fra.com

Quelle est la différence entre Trusted_Connection et Integrated Security dans une chaîne de connexion?

Je suis curieux de savoir quelle est la différence entre le jeton "Trusted_Connection" et "Integrated Security" dans les chaînes de connexion SQL Server (je crois que d'autres bases de données/pilotes ne les prennent pas en charge). Je comprends qu'ils sont équivalents.

67
Peter Oehlert

Ils sont synonymes les uns des autres et peuvent être utilisés de manière interchangeable.

Dans .Net, il existe une classe appelée SqlConnectionStringBuilder qui est très utile pour gérer les chaînes de connexion SQL Server en utilisant le type -safe propriétés pour construire des parties de la chaîne. Cette classe conserve une liste interne de synonymes afin de pouvoir mapper d'une valeur à une autre:

 + ---------------------- + --------------------- ---- + 
 | Valeur | Synonyme | 
 + ---------------------- + ------------------- ------ + 
 | app | nom de l'application | 
 | async | traitement asynchrone | 
 | propriétés étendues | attachdbfilename | 
 | nom de fichier initial | attachdbfilename | 
 | délai de connexion | délai d'expiration de la connexion | 
 | délai d'expiration | délai d'expiration de la connexion | 
 | langue | langue actuelle | 
 | addr | source de données | 
 | adresse | source de données | 
 | adresse réseau | source de données | 
 | serveur | source de données | 
 | base de données | catalogue initial | 
 | trust_connection | sécurité intégrée | 
 | durée de vie de la connexion | délai d'expiration de l'équilibre de charge | 
 | net | bibliothèque réseau | 
 | réseau | bibliothèque réseau | 
 | pwd | mot de passe | 
 | persistsecurityinfo | informations de sécurité persistantes | 
 | uid | identifiant utilisateur | 
 | utilisateur | identifiant utilisateur | 
 | wsid | identifiant de poste de travail | 
 + ---------------------- + ------------------ ------- + 

(Compilé avec l'aide de Reflector)

Il existe d'autres classes similaires pour gérer les chaînes de connexion [~ # ~] odbc [~ # ~] et OleDb , mais malheureusement rien pour les autres fournisseurs de bases de données - Je suppose qu'il incombe à la bibliothèque d'un fournisseur de fournir une telle implémentation.

82
adrianbanks

Ce sont les mêmes.

Malheureusement, il existe plusieurs variantes comme celle-ci, notamment:

Serveur/source de données

Base de données/catalogue initial

Je ne suis pas sûr de l'origine des variations, je suppose que certaines sont censées être génériques (pas centrées sur la base de données, donc votre chaîne de connexion serait très similaire si vous vous connectez à un SGBDR par rapport à la connexion à un service d'annuaire, etc.)

9
Cade Roux

Un peu plus tard, j'ai découvert les origines du choc des noms. Un ensemble de jetons a été utilisé par ODBC et un autre ensemble défini pour OLEDB. Pour Sql Server pour des raisons héritées, ils prennent toujours en charge les deux de manière interchangeable.

Trusted_Connection = true est ODBC et Integrated Security = SSPI était OLEDB.

2
Peter Oehlert

Dans mon cas, j'ai découvert une différence entre "Trusted_Connection" et "Integrated Security". J'utilise Microsoft SQL Server 2005. À l'origine, j'utilisais la connexion Windows (Integrated Security = SSPI). Mais lorsque j'ai remplacé l'authentification Windows par l'authentification SQL Server en ajoutant l'ID utilisateur et le mot de passe, le remplacement de SSPI par "False" a échoué. Il a renvoyé une "erreur en plusieurs étapes OLE opération de base de données générée". Cependant, lorsque j'ai remplacé "Integrated Security = False" par "Trusted_Connection = no", cela a fonctionné.

1