Partage
  • Partager sur Facebook
  • Partager sur Twitter

Connection projet ASP.net et docker sql server

Sujet résolu
    26 juillet 2021 à 11:41:46

    Bonjour,

    je suis en train de  développer un projet en ASP.Net qui doit se connecter à une base de donnée SQL server qui tourne sous Docker.

    Cependant, je n'arrive pas à connecter mon projet ASP à ma base de données. J'ai essayé de me connecter à ma base de données avec SQl server management Studio et j'y arrive sans problème. 

    Voici les éléments de code que j'ai : 

    Le docker compose pour le docker de sql server : 

    version: '3.2'
    
    services:
        mssql:
          image: mcr.microsoft.com/mssql/server:2017-latest
          ports:
            - "1433:1433"
          environment:
            - SA_PASSWORD=myPass123
            - ACCEPT_EULA=Y
    


    Voici la connection string de asp.Net : 

    "connection": "server=localhost,1443;database=madatabase;User Id=sa;Password=myPass123;MultipleActiveResultSets=true"

    Voici l'erreur que j'obtiens : 

    Microsoft.Data.SqlClient.SqlException : 'A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.)'

    Auriez vous des solutions à me proposer ?

    Cordialement

    • Partager sur Facebook
    • Partager sur Twitter
      26 juillet 2021 à 19:24:45

      un ':' à la place de ',' entre localhost et le numéro de port => "localhost,1443" devient "localhost:1443"
      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2021 à 9:43:03

        Bonjour,

        Merci beaucoup pour votre réponse.

        J'ai change le "," par ":", cependant j'obtiens cette erreur : 

        Microsoft.Data.SqlClient.SqlException : 'A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)'

        Exception interne : Win32Exception : Le chemin réseau n’a pas été trouvé.
        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2021 à 12:27:50

          est-ce que ton instance server SQL est bien en fonctionnement ? 

          remplace localhost par l'adresse IP (ou le nom) du PC qui héberge le serveur SQL

          • Partager sur Facebook
          • Partager sur Twitter
            28 juillet 2021 à 11:14:13

            Bonjour,

            je viens de modifier en effet ca fonctionne. Merci beaucoup pour votre aide.

            Maintenant j'ai un autre problème.

            J'ai mon projet asp net core qui tourne dans docker et qui arrive a se connecter à la base de donnée sql server qui tourne dans un autre contener docker.

            Et j'ai aussi une base de données qui tourne en local sur ma machine dans (localdb).

            Le but du projet c'est en gros de transférer en C# les données de ma base de données localdb vers la base qui tourne dans docker.

            Le problème est que je n'arrive pas à me connecter à localdb à partir du code asp qui tourne dans docker.

            Voici la connection string que j'utilise actuellement : 

            "OldDBConnection": "server=(localdb)\\MSSQLLocalDB;database=maBDD;Trusted_Connection=True"



            Et voici l'erreur associée : 

            LocalDB is not supported on this platform.'
            

            J'ai aussi essayé avec cette connection string  : 

                "OldDBConnection": "server=PORT01265\\SQLEXPRESS;database=maBDD;Trusted_Connection=True"

            Et j'obtiens également une erreur : 

            Cannot connect to SQL Server Browser. Ensure SQL Server Browser has been started.'



            Auriez vous une solution ?

            Merci par avance pour votre réponse.

            • Partager sur Facebook
            • Partager sur Twitter
              28 juillet 2021 à 11:45:14

              Pourquoi passer par une application et non de simple outils type ETL pour faire ce type de transfère ?
              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                28 juillet 2021 à 11:50:15

                Par ce qu'il y a plein de modification à faire lors du transfère, ajout de référentiel, de clés étrangères, d'appels API pour récupérer des infos externes...

                Ce n'est pas simplement un copier coller, ça serait bien mais malheureusement ce n'est pas le cas :/

                -
                Edité par SysyBebe 28 juillet 2021 à 11:51:17

                • Partager sur Facebook
                • Partager sur Twitter
                  28 juillet 2021 à 12:30:11

                  bah même réponse que précédemment, ta base localdb est bien démarré (comme l'évoque le message d'erreur) ? et c'est bien un server sql local ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 juillet 2021 à 13:16:31

                    J'ai parlé d'ETL, pas d'un bête export/import de données.

                    Tous ce que vous indiquez comme tâche à faire est facilement réalisable dans n'importe quel outil d'ETL, comme SSIS ou Talend, par exemple.

                    Ces outils permettent une bien plus grande maintenabilité (concision, feedback gaphique, etc), qu'une approche "Dev brut".

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      28 juillet 2021 à 15:07:21

                      Oui c'est vrai je ne connaissais pas ces outils là.

                      Par contre cela fait plusieurs mois que je travaille avec le C# du coup je vais continuer avec ma méthode même si j'avoue que ETL c'est pas mal du tout 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 juillet 2021 à 16:25:22

                        >Par contre cela fait plusieurs mois que je travaille avec le C# du coup

                        Attention au biais cognitif d’aversion à la perte.

                        Votre résultat final risque bien d'être bien moins bon que l'utilisation d'un ETL, même en partant "from scratch" avec l'ETL.

                        Bon Courage.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                          29 juillet 2021 à 14:50:06

                          Oui j'imagine bien.

                          Mais du coup au niveau de mon probleme de connexion avec la base de données locale vous auriez une idée ?

                          umfred a écrit:

                          bah même réponse que précédemment, ta base localdb est bien démarré (comme l'évoque le message d'erreur) ? et c'est bien un server sql local ?

                          Oui la base localdb est bien démarrée et oui c'est un server sql local. J'arrive à me connecter à localdb avec sql server management studio 





                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 juillet 2021 à 15:09:06

                            vérifies que le service " SQL Server Browser" est bien démarré (le message semble dire que non)

                            ou met l'adresse IP du Serveur au lieu de son nom

                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 juillet 2021 à 16:09:18

                              Sql server brower est bien activé et en fonctionnement, je viens d'aller voir dans les services windows

                              La connectionString serait du genre : 

                              "OldDBConnection": "server=192.168.242.127\\(localdb)\\MSSQLLocalDB;database=maBdd;Trusted_Connection=True"


                              Voici l'erreur que j'obtient :

                              Microsoft.Data.SqlClient.SqlException : 'A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid)'

                              • Partager sur Facebook
                              • Partager sur Twitter
                                29 juillet 2021 à 16:18:54

                                Il t'indique que la chaine de connexion n'est pas valide, donc un des paramètres n'est pas bon; Perso, je retirerai la partie (localdb) du server.

                                => server=192.168.242.127\\MSSQLLocalDB

                                -
                                Edité par umfred 29 juillet 2021 à 17:44:01

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  29 juillet 2021 à 16:34:23

                                  Oui j'ai essayé ça aussi, 

                                  ca me met la même erreur

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 juillet 2021 à 17:48:55

                                    il y a quoi dans ta fenêtre de connexion à cette base dans sql server management studio ? tu dois mettre la même chose
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      30 juillet 2021 à 9:19:15

                                      Voici les informations de connexion aux bases localdb et sqlexpress.
                                      Le problème vient peut-être de l'authentification windows du coup ?

                                      J'ai essayé avec cette connexionstring : 

                                      "OldDBConnection": "server=192.168.242.127\\SQLEXPRESS;database=maBDD;Integrated Security=SSPI"


                                      Mais j'obtiens l'erreur suivante : 

                                      Microsoft.Data.SqlClient.SqlException : 'Cannot authenticate using Kerberos. Ensure Kerberos has been initialized on the client with 'kinit' and a Service Principal Name has been registered for the SQL Server to allow Kerberos authentication.
                                      ErrorCode=InternalError, Exception=Interop+NetSecurityNative+GssApiException: GSSAPI operation failed with error - Unspecified GSS failure.  Minor code may provide more information (SPNEGO cannot find mechanisms to negotiate).
                                         at System.Net.Security.NegotiateStreamPal.GssInitSecurityContext(SafeGssContextHandle& context, SafeGssCredHandle credential, Boolean isNtlm, SafeGssNameHandle targetName, GssFlags inFlags, Byte[] buffer, Byte[]& outputBuffer, UInt32& outFlags, Int32& isNtlmUsed)
                                         at System.Net.Security.NegotiateStreamPal.EstablishSecurityContext(SafeFreeNegoCredentials credential, SafeDeleteContext& context, String targetName, ContextFlagsPal inFlags, SecurityBuffer inputBuffer, SecurityBuffer outputBuffer, ContextFlagsPal& outFlags)
                                         at Microsoft.Data.SqlClient.SNI.SNIProxy.GenSspiClientContext(SspiClientContextStatus sspiClientContextStatus, Byte[] receivedBuff, Byte[]& sendBuff, Byte[] serverName)
                                         at Microsoft.Data.SqlClient.SNI.TdsParserStateObjectManaged.GenerateSspiClientContext(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength, Byte[] _sniSpnBuffer)
                                         at Microsoft.Data.SqlClient.TdsParser.SNISSPIData(Byte[] receivedBuff, UInt32 receivedLength, Byte[]& sendBuff, UInt32& sendLength)'

                                      Auriez vous une solution ?

                                      -
                                      Edité par SysyBebe 30 juillet 2021 à 15:29:31

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        4 août 2021 à 19:05:21

                                        Je croyais que ça fonctionnait pour ta base sur SQLEXPRESS ? avec Trusted_connection=Yes au lieu de Integrated Security=SSPI (c'est peut-être ça le problème depuis le début Yes au lieu de True pour Trusted_connection

                                        Sinon la doc de MS dit Integrated Security=True>

                                        Server=(localdb)\MSSQLLocalDB;Integrated Security=true

                                        lien https://docs.microsoft.com/fr-fr/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver15 

                                        -
                                        Edité par umfred 4 août 2021 à 19:06:06

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Connection projet ASP.net et docker sql server

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        • Editeur
                                        • Markdown