通过远程桌面从 Microsoft SQL 数据库读取数据。 R

Posted

技术标签:

【中文标题】通过远程桌面从 Microsoft SQL 数据库读取数据。 R【英文标题】:Read data from Microsoft SQL database on Remote Desktop via. R 【发布时间】:2013-12-01 08:30:41 【问题描述】:

我的数据加载到 Microsoft Windows Server 2012 远程桌面上的 Micorsoft SQL 服务器上。我想通过 R 访问数据。我知道它可以通过 RODBC 使用

odbcConnect(dsn, uid="", pwd="")

但我对在 dsn 上输入什么感到困惑。

【问题讨论】:

【参考方案1】:

这取决于您是要使用 ODBC DSN 还是无 DSN 连接字符串、身份验证类型和驱动程序。

这是一个使用域身份验证和 SQL Server 驱动程序的无 DSN 连接字符串示例:

odbcDriverConnect(connection="server=MYDB.mynet.tld;database=mydb_prod;trusted_connection=true;Port=1433;driver=SQL Server;TDS_Version=7.0;")

这是另一个示例,使用 SQL 身份验证和 FreeTDS 驱动程序(例如在 Mac 或 Linux 上)

odbcDriverConnect(connection="server=MYDB.mynet.tld;database=mydb_prod;uid=myuser;pwd=mypass;Port=1433;driver=FreeTDS;TDS_Version=7.0;")

请参阅http://www.connectionstrings.com/sql-server/,了解更多有关“连接”元素的示例。

这是我用来跨平台打开连接的一个函数:

require(RODBC)

connect <- function(host, db, user=NULL, pass=NULL, platform="win" )

  # TODO: Check input paramaters and add a branch for SQL auth on windows

  if(platform == "win")
  
    c <- odbcDriverConnect(connection=paste0("server=",host,
                                             ";database=",db,
                                             ";trusted_connection=true;Port=1433;driver=SQL Server;TDS_Version=7.0;"))

    if(class(c) == 'RODBC') 
      
      writeLines("Successfilly opened connection to db")
      return(c)
     
    else
    
      writeLines(paste0("Error opening connection: ", as.character(c)))
    
    

  if(platform == "mac")
  
    c <- odbcDriverConnect(connection=paste0("server=",host,
                                             ";database=",db,
                                             ";uid=",user,
                                             ";pwd=",pass,
                                             ";Port=1433;driver=FreeTDS;TDS_Version=7.0;"))

    if(class(c) == 'RODBC') 
      
      writeLines("Successfilly opened connection to db")
      return(c)
     
    else
    
      writeLines(paste0("Error opening connection: ", as.character(c)))
    
    

【讨论】:

当我输入以下作为连接名称时出现错误odbcDriverConnect(connection="server=10.100.0.1;database=db_name;uid=id;pwd=pwd;Port=1433;driver=FreeTDS;TDS_Version=7.0;") 错误Warning messages: [RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified 2:..... ODBC connection failed @FistOfFury 抱歉,我不再从事此工作,忘记了如何解决。

以上是关于通过远程桌面从 Microsoft SQL 数据库读取数据。 R的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Windows 远程桌面服务远程执行代码漏洞(CVE-2019-0708)

强大的微软windows远程连接工具——Microsoft Remote Desktop Mac

mac远程桌面Microsoft Remote Desktop for Mac的安装与使用

VMware Workstation 中虚拟软路由,无法从外网远程桌面到宿主计算机

Mac 10.12安装Windows远程桌面工具Microsoft Remote Desktop

使用Magic Trackpad 2在Mac上滚动Microsoft远程桌面