sql >> Base de Datos >  >> RDS >> Sqlserver

La llamada ODBC falló con el procedimiento almacenado - Pasar a través de la consulta

Para obtener más información sobre la causa de un "ODBC:error en la llamada". error podemos recorrer el DBEngine.Errors colección y vea si hay otros mensajes que podrían ser un poco más descriptivos. Por ejemplo, con el código

    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

podríamos ver lo siguiente en la ventana Inmediato de VBA:

(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.

Ciertamente

Se denegó el permiso EXECUTE en el objeto 'SAMPLE_TEST', base de datos 'myDb', esquema 'dbo'.

es considerablemente más útil que solo

ODBC:llamada fallida.