Ei pessoal,Obrigado pelas sugestões de todos. Não sei de onde veio essa informação de que RODBC estaria "deprecated" olhei no r-forge e parece estar ativo. A ultima atualização é do primeiro semestre de 2016.A saida do meu problema foi usando Rclient. Um R disponibilizado no sítio da microsoft, que já vem instalados com uma série de pacotes proprietários da Microsoft para integração com o SQL server 2016/2017. O nome do pacote é RevoScaleR.Ao invés de fazer ...> p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022"> mod.teste.peq <- sqlQuery(conn, p) # que retorna o erro de memória!Eu fiz ...mod.teste.peq <- RxOdbcData(sqlQuery = "SELECT model FROM tempo_permanencia_models WHERE id_model=1018" ,connectionString = dbconn)mod.teste.peq <- rxReadObject(mod.teste.peq , decompress = "none")Agora dá pra fazer as previsões novamente...Abraço forte a todos,Pedro BrasilEm 2 de agosto de 2017 15:20, Leonard Assis via R-br <r-br@listas.c3sl.ufpr.br> escreveu:RSQLServer não é boa alternativa, não sofre manutenção a tempos e depende de Java na máquina. Sugiro o pacote odbc.SQL Server é mestre em dar problema no R comigo, mas o problema é na autenticação.Em 1 de ago de 2017 9:14 AM, "Zhu Sha Zang via R-br" <r-br@listas.c3sl.ufpr.br> escreveu:Parece que RODBC está "deprecated", tente usar o pacote RSQLServer.
Atenciosamente
On 07/31/2017 01:53 PM, Cesar Rabak via R-br wrote:
Correto Pedro!
Contudo, não entendo porque. . .
Minha forma de atacar esse problema seria mandar os dados para o BD por outra maneira (que ñ via R) e tentar conectar apenas para puxar os dados: aí a gente vê se é na criação do BD via R que ele deixa em aberto um tamanho default muito grande ou se é a chamada que por alguma coincidência cria um default exigindo tanta memória (embora nos OSs modernos isso não deveria gerar problema porque existem os gerenciadores de memória virtual).
HTH--Cesar Rabak
2017-07-31 10:32 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil <emmanuel.brasil@gmail.com>:
Cesar,
A função RODBC::sqlQuery não tem exemplo, mas já usei diversas vezes com outros scripts e funciona. Esse problema está acontecendo somente no exemplo dessa conexão em específico. Então estou entendendo a partir de agora que alguma configuração da conexão está pedindo pra reservar memória mais do que o a máquina possui.
Pedro Brasil
Em 29 de julho de 2017 20:45, Cesar Rabak <cesar.rabak@gmail.com> escreveu:
Pedro,
Calloc é uma chamada "primitiva" para o R, uma função da biblioteca C e é uma função feita para "alocar" (reservar) memória e zerá-la.
O estranho, para mim, é a tentativa do aplicativo de reservar tanta memória assim na chamada da função do R.
Essa função sqlQuery() pode ser testada fazendo:
> example(sqlQuery)
?
Se o exemplo do próprio pacote funcionar, aí teremos que fazer uma busca para ver de onde vem esse comportamento.
HTH--Cesar Rabak
2017-07-28 17:12 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil <emmanuel.brasil@gmail.com>:
Ei Cesar,
Eu tenho pouco familiaridade com SQL, e o amigo da TI que tem e faz manutenção do servidor diz que o erro é na minha estação com R. Eu acho que não, mas não tenho certeza porque eu não sei ao certo o que quer dizer esse erro. O que seria essa "Calloc"? É uma coisa natural do R?
Abraço,
Pedro Brasil
Em 28 de julho de 2017 16:59, Cesar Rabak <cesar.rabak@gmail.com> escreveu:
Pedro,
Mesmo sem poder fazer uma tentativa, me parece que o erro é estranho demais para não ser notado: a chamada à primitiva da ling. C "calloc" está pedindo 200 Gbytes, que falha e me parece algo grande demais para um "default" da chamada a sqlQuery().
HTH
2017-07-28 9:42 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil via R-br <r-br@listas.c3sl.ufpr.br>:
______________________________Amigos de R,
Estou envolvido numa tarefa que importo um banco SQL de um servidor, faço uma modelagem, salvo o modelo no SQL através de uma seriliazação, e depois carrego esse modelo do SQL para fazer previsões em novos dados.
Estou seguindo um exemplo disponível nessa página:
Sei que esse exemplo não é reproduzível porque depende da conexão com o servidor e credenciais que não posso divulgar. Mas se alguem já passou por esse problema poderia pelo menos indicar aonde está o problema que não estou sabendo identificar? Acho que muito provavelmente seria uma configuração do SQL no servidor...
library(RODBC)
# define database connection stringdbconn <- 'Driver={SQL Server};Server=BLABLABLA;Database=BLABLABLA;Trusted_Connecti on=yes;'
# define a connectionconn <- odbcDriverConnect(connection = dbconn)
# Estou fazendo o exemplo com o objeto LETTERS só pra ter certeza que é um objeto pequeno e que não deveria ser um problema de memória do R.> LETTERS
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X"[25] "Y" "Z"> teste_pequeno <- serialize(LETTERS, connection = NULL)> teste_pequeno <- paste(teste_pequeno, collapse = "")
# o EXEC PersistModel faz# insert into [tempo_permanencia_models] (model, [description]) values (convert(varbinary(max),@m,2), @description)# insere o modelo e uma descricao
> p <- paste("EXEC PersistModel @m='", teste_pequeno,"', @description = 'Teste de serialização objeto pequeno'", sep = "")> sqlQuery(conn, p)character(0)> rm(teste_pequeno)> p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022"> mod.teste.peq <- sqlQuery(conn, p)Error in odbcQuery(channel, query, rows_at_time) :'Calloc' could not allocate memory (214748364800 of 1 bytes)> p <- paste0("SELECT id_model, description FROM [tempo_permanencia_models] WHERE id_model = 1022")
> sqlQuery(conn, p) #id_model description1 1022 Teste de serialização objeto pequeno
Reparem que o objeto está salvo no servidor. Foi salvo a partir do R, mas não retorna para o R por conta do erro de memoria. Eu não estou sabendo nem por onde começar.
Que a força esteja sempre com vocês e abraço forte.
Pedro Brasil
_________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia ) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi -bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia ) e forne�a c�digo m�nimo reproduz�vel.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia ) e forneça código mínimo reproduzível.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia ) e forneça código mínimo reproduzível.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia ) e forneça código mínimo reproduzível.