Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Échec de l'appel ODBC avec la procédure stockée - Passer la requête

Pour obtenir plus d'informations sur la cause d'un "échec de l'appel ODBC". erreur, nous pouvons parcourir le DBEngine.Errors collection et voyez s'il y a d'autres messages qui pourraient être un peu plus descriptifs. Par exemple, avec le code

    qdf.Connect = strConnectionString
    qdf.SQL = " EXEC [dbo].[SAMPLE_TEST]"
    qdf.ReturnsRecords = True
    On Error GoTo oops
    Set rst = qdf.OpenRecordset
    Debug.Print rst!RecordCount
    rst.Close
    Set rst = Nothing
    Exit Sub
oops:
    Dim dbeError As Error
    For Each dbeError In DBEngine.Errors
        Debug.Print "(" & dbeError.Number & "): " & dbeError.Description
    Next
End Sub

nous pourrions voir ce qui suit dans la fenêtre VBA Immediate :

(229): [Microsoft][ODBC SQL Server Driver][SQL Server]The EXECUTE permission was denied on the object 'SAMPLE_TEST', database 'myDb', schema 'dbo'.
(3146): ODBC--call failed.

Certainement

L'autorisation EXECUTE a été refusée sur l'objet 'SAMPLE_TEST', base de données 'myDb', schéma 'dbo'.

est considérablement plus utile que simplement

ODBC :échec de l'appel.