簡體   English   中英

R SQL 查詢:找不到存儲過程

[英]R SQL query: Could not find stored procedure

我正在使用 R 運行存儲的 SQL 過程:

    query.str = "EXEC [StoredProcedure].[Procedure1]"
    con <- odbcConnect("my_database")
    my_data  = sqlQuery(con, query.str)

這段代碼在我的筆記本電腦上運行良好。 但是當我嘗試在服務器上運行它時,它給出了一個錯誤:

42000 2812 [Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure

我不認為這是存儲過程本身的問題,因為我遇到了多個存儲過程的相同情況(它們在我的筆記本電腦上工作,但不在服務器上)。

編輯:我確定連接字符串有效。 當我對非存儲過程使用相同的連接字符串時,它可以正常工作並且數據讀取得很好。 該問題僅發生在存儲過程中。

先感謝您!

找到的解決方案:通過 Window Odbc 連接器,將默認數據庫更改為所需的數據庫修復了問題。

由於三個主要問題,可能會出現此錯誤:

  • 對象封裝的引用不正確,包括模式或數據庫。

    每個 SQL 服務器 object(表、存儲過程、function 等)都駐留在模式中,每個模式都駐留在數據庫中。 此外,每個 object 都可以由多部分名稱引用。 SQL 服務器中的默認架構是dbo 因此,通過在 object 參考中未指定數據庫和模式,假設 object 駐留在連接數據庫和dbo模式中。 因此,以下調用是等價的:

     EXEC [myServer].[myConnectedDatabase].[dbo].[myStoredProcedure] EXEC [myConnectedDatabase].[dbo].[myStoredProcedure] EXEC [dbo].[myStoredProcedure] EXEC [myStoredProcedure]

    如果myStoredProcedure不駐留在指定的數據庫或模式中,則會引發此錯誤。 如果您不知道或不記得存儲過程所在的位置,請在系統sys視圖、 INFORMATION_SCHEMA視圖或系統存儲過程sp_*上運行查詢。

  • 存儲過程拼寫錯誤,包括非 escaping 特殊字符或保留字

    要轉義空格、特殊字符(非字母數字和非下划線)和保留字,請將 object 名稱括在方括號[...]中。 最好避免使用此類名稱。 謝天謝地,默認情況下 SQL 服務器對標識符不區分大小寫。 在其他 RDBMS 中,如 Oracle 和 Postgres,在CREATE TABLE階段為混合大小寫保留大小寫敏感性,混合大小寫類型需要雙引號(即, "myStoredProc" <> mystoredproc <> MYSTOREDPROC )。

  • 通過刪除或轉移到不同的數據庫或模式,數據庫或模式中不存在object。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM