/ / Jak wyświetlić i zamknąć wszystkie aktywne połączenia RJDBC - sql-server, r, jdbc, mssql-jdbc, rjdbc

Jak wyświetlić i zamknąć wszystkie aktywne połączenia RJDBC - sql-server, r, jdbc, mssql-jdbc, rjdbc

Zaadaptowaliśmy RJDBC na jego szybkość (nad RODBC)ale występują problemy z zapewnieniem, że wszystkie otwarte połączenia z bazą danych są zamykane na końcu sesji R. Problem polega na tym, że po uruchomieniu partii będziemy często mieć ponad 100 śpi połączeń DB. Na naszym serwerze działa Microsoft SQL Server 2012.

Ciąg połączenia ma postać:

drv <<- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "C:/Program Files/Microsoft JDBC Driver 4.2 for SQL Server/sqljdbc_4.2/enu/sqljdbc42.jar")
dbConnection <<- dbConnect(drv, "jdbc:sqlserver://s26",integratedSecurity=TRUE,databaseName="XXXXXX")

Jak mam się upewnić, że wszystkie aktywne połączenia DB są zamknięte? Znalazłem funkcję, która wygląda na to, że zadziała, gdybym używał RMySQL, ale ja nie jestem. Dokumentacja RJDBC również nie opisuje żadnej metody zestawiania połączeń, aby można je było zamknąć. Również wspólna funkcja dbListConnections () DBI nie działa dla RJDBC.

Twoja pomoc jest dopracowana!

Odpowiedzi:

2 dla odpowiedzi № 1

Wiem, że to pytanie zostało zadane jakiś czas temu, ale odpowiadam mu na wypadek, gdyby ktoś szukał rozwiązania.

Możesz sprawdzić, czy zmienna globalna jest połączeniem JDBC i zamknąć ją.
Oto przykładowy kod tego, co robię:

    var <- as.list(.GlobalEnv)
var_names <- names(var)

for (i in seq_along(var_names)){
if (class(var[[var_names[i]]]) == "JDBCConnection"){
dbDisconnect(var[[var_names[i]]])
}
}