3

パススルー クエリを作成し、そこからストアド プロシージャを呼び出そうとしました。

SQL Server データベースでクエリを正常に実行できますが、ストアド プロシージャに関しては、次のようなエラーが発生します。

"ODBC call Failed"

問題は、ストアド プロシージャのみにあります。クエリは正常に実行されています。

ここに、私のコードがあります:

Dim qdf As DAO.QueryDef, rst As ADODB.Recordset
Dim DatabaseName As String
Dim Server As String
ServerName = "XXXX"
DatabaseName = "XXX"
Set qdf = CurrentDb.CreateQueryDef("")
 strConnectionString = "ODBC;DRIVER={sql server};" & _
        "DATABASE=" & DatabaseName & ";" & _
        "SERVER=" & ServerName & ";" & _
        "Trusted_Connection=YES;"
qdf.Connect = strConnectionString
qdf.SQL = " EXEC [dbo].[SAMPLE_TEST]"
qdf.ReturnsRecords = True
Set rst = qdf.OpenRecordset
Debug.Print rst!RecordCount
rst.Close
Set rst = Nothing

何か不足している場合はお知らせください。

4

2 に答える 2

6

「ODBC--call failed」の原因に関する詳細情報を取得するには。コレクションをループして、DBEngine.Errorsもう少し説明的な他のメッセージがあるかどうかを確認できます。たとえば、コードで

    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

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.

そうです

オブジェクト 'SAMPLE_TEST'、データベース 'myDb'、スキーマ 'dbo' に対する EXECUTE 権限が拒否されました。

よりもはるかに役立ちます

ODBC -- 呼び出しが失敗しました。

于 2015-04-21T15:49:49.410 に答える