Bonjour à tous,

J'ai actuellement un problème pour me connecter dans mon logiciel a la base de données, les droits sont bien présent et pourtant cela ne marche pas avec l'authentification windows.

Voici ma chaîne de connexion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Data Source=decsqldev;Initial Catalog=BotanicDW_MEC;Integrated Security=True
Je peut me connecter via l'outils d'exploration de bases de données mais même en copiant la chaîne de connexion que cela me donne, une fois le programme lancé j'ai une erreur qui survient lorsque j'ouvre la connexion.

Voici l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
System.Data.SqlClient.SqlException (0x80131904): Échec de l'ouverture de session de l'utilisateur*'BOTANIC\PORT-SBRODA1$'.
   à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   à System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   à System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   à System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   à System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
   à System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
   à System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
   à System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken)
   à System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   à System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
   à System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   à System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   à System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   à System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   à System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   à System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   à System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   à System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   à System.Data.SqlClient.SqlConnection.Open()
   à Service.GetDateCA(Int32 date, String format) dans c:\Program Files (x86)\IIS\Website1\App_Code\Service.cs:ligne 57
ClientConnectionId :e25aece5-80ea-410d-ad7e-07d873da2736
Error Number :18456,State :1,Class :14
Dans cette erreur on voit BOTANIC\PORT-SBRODA1$ pourtant mon nom sur le domaine est le suivant : BOTANIC\sbroda1.

Je vous met aussi a disposition le code qui utilise cette connexion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string connetionString = "Data Source=decsqldev;Initial Catalog=BotanicDW_MEC;Integrated Security=True";
        SqlConnection cnn = new SqlConnection(connetionString);
        try
        {
            SqlCommand cmd = new SqlCommand();        
            cmd.CommandText = "[Webservices].[GetCA_Exemple]";
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter a = cmd.Parameters.Add("@date", SqlDbType.Int);
            cmd.Connection = cnn;
            a.Direction = ParameterDirection.Input;
            a.Value = 2013;
 
            cnn.Open();
            SqlDataReader reader = cmd.ExecuteReader();
Merci d'avance pour votre aide !

Edit 1 : L'origine du problème a été trouvé , la connexion récupère les identifiant de IIS et non de ma session !

Edit 2 : Voici comment résoudre le problème : ouvrir IIS -> pool d’application -> paramètres avancés -> Identité -> et choisir votre USER