繁体   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