[英]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.