尝试将 SQL 连接详细信息从 R 代码移动到 DSN 并使用 DSN 作为连接字符串时遇到奇怪的错误。
使用 ODBC 包,我可以使用以下命令通过 RStudio 构建连接:
con <- DBI::dbConnect(odbc::odbc(),
Driver = "SQL Server Native Client 11.0",
Server = "XXX",
Database = "YYY",
uid = "username",
pwd = "password",
port = 1443)
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常并允许 SQL 连接。当将此移动到 DSN(已尝试用户和系统 DSN)时,会生成错误。用户和系统 DSN 均已尝试,并且当从 Windows (Win 10) 中的 ODBC 应用程序测试连接时,测试成功。
在 R 中使用以下代码时,连接失败。
con <- DBI::dbConnect(odbc::odbc(), "ZZZ")
Run Code Online (Sandbox Code Playgroud)
错误:nanodbc/nanodbc.cpp:950: 28000: [Microsoft][SQL Server Native Client 11.0][SQL Server]用户“”登录失败
这似乎表明用户名未知,但我的信息是所有连接参数都存储在 DSN 条目中。我的初始设置是从以下位置生成的: https: //support.rstudio.com/hc/en-us/articles/214510788-Setting-up-R-to-connect-to-SQL-Server-
在页面底部的进一步讨论之后,似乎仅讨论连接的代码版本。 https://db.rstudio.com/databases/microsoft-sql-server/
此链接讨论 DSN 组件以及确保驱动程序可用。 https://db.rstudio.com/getting-started/connect-to-database 这确认了尝试使用 DSN …
闪亮模块环境的新手,我正在尝试设置一个基本脚手架,以将 UI 的选项卡式组件和其他组件从 ui.r 和 server.r 中分离出来
目前我有以下4个文件:
用户界面
navbarPage(id = "main", windowTitle = "Dashboard Title", position =
"fixed-top", header = "Header Text?", title = "Application Logo <To Do>",
navbarMenu("Company Dashboards", icon = icon("dashboard"),
tabPanel(title = "Sales", value = "SalesModule", icon = icon("bar-chart-o"), salesModuleUI("SalesModule")))
Run Code Online (Sandbox Code Playgroud)
服务器.r
shinyServer(function(input, output, session){
### Modules
callModule(module = salesModule, id = "SalesModule")
})
Run Code Online (Sandbox Code Playgroud)
全局.r
#######
# Libraries
#######
library(shiny)
library(shinydashboard)
library(dplyr)
library(highcharter)
library(DT)
#######
# Source Files
#######
source("modules/salesModule.r")
Run Code Online (Sandbox Code Playgroud)
销售模块.r
salesModuleUI <- function(id){
ns <- NS(id) …Run Code Online (Sandbox Code Playgroud) 在使用 DSN 与非 DSN 与 R 包 ODBC 之间遇到问题。
使用 DSN,我能够成功地连接到服务器并且代码消失了。但是,使用非 DSN odbc 连接字符串,我收到:
错误:nanodbc/nanodbc.cpp:950: IM002: [Microsoft][ODBC 驱动程序管理器] 数据 > 未找到源名称且未指定默认驱动程序
该连接在语法上似乎是正确的,并且所有必填字段都根据多个功能文档进行了填充,包括:https : //support.rstudio.com/hc/en-us/articles/214510788-Setting-up-R-to -连接到-SQL-Server-
odbc_con <- dbConnect(odbc::odbc(),
Driver = "SQLServer",
Server = server,
Database = test,
Uid = 'username',
Pwd = 'password',
Port = 1433)
Run Code Online (Sandbox Code Playgroud)
服务器和测试都在代码的前面定义。我尝试删除 odbc:: 并仅使用 odbc()。使用分号,去除大写字母。
有点卡住了,有什么建议吗?
使用 Shiny Dashboard、ui.r、server.r 和几个包含函数的 r 脚本。
基本问题是:我将两个数据集带入 server.r 并将它们传递给准备/清理数据集的函数,然后将它们绑定在一起,并应返回一个完整的数据帧。dataFrame 应该是反应式的。这是我到目前为止所拥有的:
在 server.r 中,我在函数(输入、输出、会话)之前加载数据。然后我有:
################server.r code #########################
data <- reactive({
testDF <- prepData(data1, data2)
})
Run Code Online (Sandbox Code Playgroud)
prepData 函数做了很多事情,但以:
####################prepData function return#################
return(rbind(data1, data2))
Run Code Online (Sandbox Code Playgroud)
如果我使用类似的东西:
############## server.r code#######################
value = nrow(data()),
Run Code Online (Sandbox Code Playgroud)
然后代码返回正确的值。但是,我更愿意像使用 testDF 一样返回数据框。
Shiny 将在找不到对象“testDF”的 UI 中抛出错误。
我尝试解决: 如何在 R/Shiny 中构建反应式数据框? 使用代码:
dataR <- prepData(data1, data2)
makeReactiveBinding(dataR)
Run Code Online (Sandbox Code Playgroud)
这仍然会引发错误。该功能显然可以正常工作并且已经过验证,但是对于使用此功能的反应性组件,我一定不明白。任何帮助,将不胜感激。谢谢!
服务器界面
function(input, output, session) {
### PreProcess the Data
data <- reactive({
testDF <- prepData(bdata, qdata)
})
#dataR <- prepData(bData, qData)
#makeReactiveBinding(dataR)
### Information …Run Code Online (Sandbox Code Playgroud)