Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Falha na chamada ODBC com procedimento armazenado - Passar pela consulta


Para obter mais informações sobre a causa de uma "falha na chamada ODBC". erro, podemos percorrer o DBEngine.Errors coleção e veja se há outras mensagens que possam ser um pouco mais descritivas. Por exemplo, com o 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

podemos ver o seguinte na janela imediata do 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.

Certamente

A permissão EXECUTE foi negada no objeto 'SAMPLE_TEST', banco de dados 'myDb', esquema 'dbo'.

é consideravelmente mais útil do que apenas

ODBC--falha na chamada.