【问题标题】:how to use odbcDriverConnect when using shinyapps.io to show the tables retrieving from SQL by means of RODBC使用 shinyapps.io 时如何使用 odbcDriverConnect 显示通过 RODBC 从 SQL 检索的表
【发布时间】:2017-11-30 00:02:55
【问题描述】:

我刚刚问了一个关于使用 Shinyapps 时没有链接 SQL 的问题。 “first argument“ error when using shinyapps.io, rodbc to show sql query result in web。这是关于错误信息“第一个参数不是开放的 rodbc 通道”,当我尝试使用 shinyapps.io 共享我使用 RODBC 从 SQL 数据库获得的 SQL 查询结果时。

非常感谢 Lars Br. 的帮助,我想我还需要尝试 odbcDriverConnect 而不是 odbcConnect。看到https://support.rstudio.com/hc/en-us/articles/225408367-Connecting-to-databases-using-RODBC-on-shinyapps-io的一些建议,可以解决我的问题。

但是,我的问题是:由于我对所有这些东西都很陌生,所以我对 odbcDriverConnect 中的所有参数感到困惑。我试过了:

ch <- odbcDriverConnect('driver=SQL Server;server=HANARB1P;database=testing;uid=****;pwd=****;TrustServerCertificate=true')

我得到了以下信息:

Warning messages:
1: In odbcDriverConnect("driver=SQL Server;server=HANARB1P;database=testing;uid=****;pwd=****;TrustServerCertificate=true") :
  [RODBC] ERROR: state 08001, code 17, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.
2: In odbcDriverConnect("driver=SQL Server;server=HANARB1P;database=testing;uid=****;pwd=****;TrustServerCertificate=true") :
  [RODBC] ERROR: state 01000, code 53, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
3: In odbcDriverConnect("driver=SQL Server;server=HANARB1P;database=testing;uid=****;pwd=****;TrustServerCertificate=true") :
  [RODBC] ERROR: state 01S00, code 0, message [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute
4: In odbcDriverConnect("driver=SQL Server;server=HANARB1P;database=testing;uid=****;pwd=****;TrustServerCertificate=true") :
  ODBC connection failed

到目前为止,我只有 DSN:HANARB1P。我不知道 odbcDriverConnect 中的驱动程序、服务器和数据库是什么。我在网上找不到定义。谁能给我解释一下?

我还从http://docs.rstudio.com/shinyapps.io/applications.html 中找到了一些可能有用的信息。它说:“如果您的闪亮应用程序需要访问您在组织防火墙后面运行的数据库,您的 IT 部门将需要知道哪些服务器将通过防火墙连接。以下是您必须列入白名单的 shinyapps.io IP 地址: ”。我不知道这是否与我的问题有关。如果是这样,我该如何设置这些东西?

【问题讨论】:

    标签: sql r shiny rodbc


    【解决方案1】:

    我认为您需要尝试更改驱动程序类型,如下文所述:https://support.rstudio.com/hc/en-us/articles/225408367-Connecting-to-databases-using-RODBC-on-shinyapps-io。我推断您正在尝试远程访问此数据库,对吗?如果是这样,您需要使用该数据库服务器的公共 IP 地址和端口号 - 而不是服务器的名称。

    con <- odbcDriverConnect('Driver=FreeTDS;TDS_Version=7.0;server="publicIPAddress";port"portNumber";database=testing;uid=****;pwd=****;') 
    

    尝试所有 3 个版本的 TDS。

    如果这是您公司的数据库,那么您很可能还必须允许通过 Internet 访问它。但是要小心,这样做可能会产生后果并允许入侵您的系统。您是否拥有可以为您处理此问题的 IT 团队?您似乎不熟悉如果操作不当可能对您的公司产生的影响,因此我会利用您必须正确执行此操作的任何熟练 IT 资源。

    您需要配置路由器以允许端口转发到您的数据库(通常是端口 1433)。这是您将在上面的 odbcDriverConnect 调用中输入的端口号。然后,您还需要检查服务器的防火墙设置——我的理解是标准规则是阻止所有传入 SQL Server 的流量。这意味着您需要添加允许您的 IP 地址建立连接的入站规则。您在帖子中包含了指向 shinyapps.io 的链接...您是在 shinyapps.io 上托管此应用程序还是仅在您自己的计算机上托管此应用程序?如果您要部署到 shinyapps.io,那么您还需要在我上面提到的允许的入站连接中包含该文章中列出的那些 IP。

    我的建议是与您的 IT 部门合作,在您的防火墙上创建一个列入白名单的入站规则,该规则只允许连接那些运行闪亮应用所需的 IP。

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多