1

我有一個存儲過程,我從VB代碼在Access 2007數據庫中運行。通常代碼運行良好;不過有時我收到以下錯誤:「直接執行SQL;無遊標。」錯誤在Access 2007 VB代碼

Error # -2147217900 was generated by Microsoft OLE DB Provider for ODBC Drivers [Microsoft][SQL Server Native Client 10.0][SQL Server]Executing SQL directly; no cursor.

我已經做了相當多的研究這個,我還沒有想出了很多。有兩個來源我見過:其中一個原因是權限不足,另一個與存儲過程本身的問題有關。我知道權限不是問題。無論我運行多少次,存儲過程在管理工作室中都運行得非常好。

請幫忙!!!

回答

4

與同事一起工作,發現問題。從根本上來說,核心問題是真正的問題被一個通用的錯誤信息混淆了;在這種情況下,「無遊標」錯誤。訣竅是弄清楚實際的錯誤信息是什麼。經過一番思考,一位同事將ODBC驅動程序從我的文章中提到的「SQL Server Native Client 10」改爲舊的MS SQL Server驅動程序;而較新的版本10模糊了錯誤,較舊的驅動程序揭示了存儲過程中的實際錯誤(我認爲原來由於我自己的測試而不是這種情況)。所以底線是有兩點可以從中得到:首先,如果你有這個錯誤嘗試上述技巧來嘗試揭示實際的錯誤和第二個注意事項,在這種情況下真正的問題是,司機隱藏編程問題。

+0

這裏同樣的情況。試過這個解決方案,我能找到的本地客戶端的唯一老版本是9,而且我的平臺(win8.1)不支持這個版本。有沒有其他的技巧來揭示真正的錯誤? – antipattern 2017-03-16 14:36:58

1

當出現此錯誤時,您應該計算出傳遞給存儲過程的參數。打印出傳遞給存儲過程對象的變量。我會特別注意非字母數字字符,如單引號或轉義字符。