Je me rends compte qu'il existe de nombreuses questions similaires à propos de la connexion à RODBC avec brillant. Cependant, aucune de leurs solutions n'a fonctionné pour moi.RODBC ne peut pas se connecter en brillant - odbcValidChannel (canal) n'est pas VRAI
Je me suis connecté à mon serveur SQL en local sans problème, mais l'application brillante publiée ne peut pas se connecter.
Lorsque vous exécutez l'application que j'utilise localement:
myData <- reactive({
##connect to database
myServer <- "***"
myUser <- "***"
myPassword <- "**"
myDatabase <- "lto"
myDriver <- "ODBC Driver 13 for SQL Server"
connectionString <- paste0(
"Driver=", myDriver,
";Server=", myServer,
";Database=", myDatabase,
";Uid=", myUser,
";Pwd=", myPassword)
conn <- odbcDriverConnect(connectionString)
dbhandle <- odbcDriverConnect(connectionString)
query='SELECT [menu_item_id]
,[primary_brand_id],[Q1],[Q2],[Q3]
,[Q4],[Q5],[Q6],[Q7],[brand],[brand_parent]
,[menu_item_name],[course_category],[day_part]
,[description],[display_name],[display_with_brand]
,[meal_part],[product_category],[reported]
,[month],[year],[year_month],[period],[respondent_id]
,[generation],[gender],[ethnicity],[income]
,[eater_archetype],[survey_type]
FROM [dbo].[vw_menu_item_responses]
WHERE [month]=?'
#month<-3
#store results
res <- sqlExecute(channel = dbhandle,
query = query,
data = list(input$month),
fetch = TRUE,
stringsAsFactors = FALSE)
#close the connection
odbcClose(dbhandle)
#return results
res
})
output$table<- renderDataTable({
d<-myData()
head(d)
})
Lorsque vous essayez de publier l'application, je l'utilise:
myData <- reactive({
##connect to database
myServer <- "***"
myUser <- "***"
myPassword <- "**"
myDatabase <- "lto"
myDriver <- "FreeTDS;TDS_Version=9.0"
connectionString <- paste0(
"Driver=", myDriver,
";Server=", myServer,
";Database=", myDatabase,
";Uid=", myUser,
";Pwd=", myPassword)
conn <- odbcDriverConnect(connectionString)
dbhandle <- odbcDriverConnect(connectionString)
#build query
#query = "SELECT * FROM [my_db].[dbo].[my_table] where [CATEGORY] = '1070'"
#query = "SELECT * FROM [my_db].[dbo].[my_table] where [CATEGORY] = ?"
query='SELECT [menu_item_id]
,[primary_brand_id],[Q1],[Q2],[Q3]
,[Q4],[Q5],[Q6],[Q7],[brand],[brand_parent]
,[menu_item_name],[course_category],[day_part]
,[description],[display_name],[display_with_brand]
,[meal_part],[product_category],[reported]
,[month],[year],[year_month],[period],[respondent_id]
,[generation],[gender],[ethnicity],[income]
,[eater_archetype],[survey_type]
FROM [dbo].[vw_menu_item_responses]
WHERE [month]=?'
#month<-3
#store results
res <- sqlExecute(channel = dbhandle,
query = query,
data = list(input$month),
fetch = TRUE,
stringsAsFactors = FALSE)
#close the connection
odbcClose(dbhandle)
#return results
res
})
Remarque J'ai aussi essayé le différentes versions de TDS (7.0 et 8.0). En outre, le problème ne réside pas avec ma variable $ mois d'entrée parce que j'ai essayé de le mettre à une constante et cela ne fonctionne toujours pas.
TOUTES les suggestions sont les bienvenues. S'il vous plaît aider.
évidemment aussi mon code d'utilisateur, mot de passe, et le serveur ne sont pas réellement astérisques, mais des informations confidentielles, je ne veux pas partager :)