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