[Catégorie encore modifiée .Net -> VBA] [SQL Server] Chaine de connexion avec DS

Signaler
Messages postés
112
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
14 mai 2021
-
Messages postés
112
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
14 mai 2021
-
Bonjour j'ai un petit problème avec ma chaine de connexion vers une base SQL Server 2005 sur VBA. J'ai crée un compte utilisateur SQL qui possède tous les droits en lecture/écriture.

Voici ma chaine de connexion :

Set cn = New ADODB.Connection
        With cn
            .ConnectionString "Provider SQLOLEDB;Data Source=CheminDuServeur;Initial Catalog=MaBase;Uid=Login;Trusted_Connection=yes" 'Chaîne de connexion Sql Server 2005'
            .Open
        End With


La connexion s'effectue parfaitement en local mais dès que j'essaye d'y accéder en réseau ça ne marche plus.

J'ai donc créer un lien ODBC entre mon PC et ma base mais je ne trouve pas de chaine de connexion permettant d'utiliser ce lien ODBC. Est ce que quelqu'un a une idée ?

3 réponses

Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour

Voici une exemple access:
ConnectStr = "ODBC;DRIVER={SQL Server};SERVER=mercure;APP=Microsoft® Access;UID=lune;PWD=terre;DATABASE=venus"

Voici comment j'ai établi une connexion ado sous excel :
Public Cnn1 As ADODB.Connection
Public Ctrnn As String

Ctrnn = "provider=sqloledb;SERVER=capricorne;initial catalog=venus;User ID=lune;Password=terre"
Set Cnn1 = New ADODB.Connection
Cnn1.Open Ctrnn

bonne journée
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut

VBA n'est pas du VB.Net --> Catégorie
Merci d'en tenir compte pour tes prochaines questions.

Pas la peine d'utiliser DSN pour te connecter à SQL Server.
Première chose : lire les exemples fournis par <ce site de référence>

Si tu utilises SQL Server dans sa version Express, n'oublie pas d'ajouter \SQLExpress après le nom/chemin de la machine hôte.

Si tu utilises "Trusted_Connection" :
- Ce n'est pas Yes mais True qu'il faut utiliser
- Dans ce cas, il n'est pas nécessaire de préciser le login/password puisque la connexion se base sur les identifiants de login Windows --> Voir SSPI
Personnellement, j'éviterai.

Exemple de connexion à SQL Server (non Express) :
cnnSqlServer est déclaré comme une ADODB.Connection
Public Function ConnectSqlServer(ServerName As String, DBName As String) As Boolean
    ' Renvoie True si connexion Ok
    On Error GoTo Erreur
    With cnnSqlServer
        ' Referme si déjà ouverte
        If .State <> adStateClosed Then .Close
        ' Paramétrage connexion
        .ConnectionTimeout = 5  ' TimeOut à la connexion
        .CommandTimeout = 30    ' TimeOut des requètes
        .Provider = "sqloledb"
        .Properties("Data Source").Value = ServerName
        .Properties("Initial Catalog").Value = DBName
        .Properties("User ID").Value = sUserID
        .Properties("Password").Value = sPassword
        On Error Resume Next
        ' Connexion
        .Open
        ' Attend connexion terminée
        Do While .State = adStateConnecting
            DoEvents
        Loop
        On Error GoTo 0
        ' Au final, renvoie True si on est bien ouvert
        ConnectSqlServer CBool(.State adStateOpen)
    End With
Fin:
    Exit Function
Erreur:
    MsgBox "#### ConnectSqlServer - Erreur " & CStr(Err.Number) & " - " & Err.Description, vbCritical Or vbOKOnly, "mon programme"
    GoTo Fin
End Function

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
112
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
14 mai 2021
1
Salut Jack, désolé je ne trouvais pas VBA du coup j'ai choisis ce qui s'en rapprochait le plus.

Enfaite ma chaine de connexion était presque bonne j'ai trouvé pourquoi tu m'as mis sur la piste voilà la bonne :

.ConnectionString "Provider SQLOLEDB;Server=monserver;Initial Catalog=Mabase;Uid=login;pwd=mdp" 'Chaîne de connexion Sql Server 2005'


Enfaite il fallait que j'ajoute le mot de passe pour que ça fonctionne.

En tout cas merci (encore une fois) à toi et à c148270 bonne journée.