sqlserverconnect provides a minimal, user-friendly
interface for connecting to Microsoft SQL Server from R.
It wraps DBI (with the odbc driver) and optionally pool with a small set of consistent helpers:
db_connect() – create a DBI connection (default) or a
connection pooldb_disconnect() – safely close either a DBI connection
or a poolThe goal is to offer a lightweight API without the repeated setup/cleanup boilerplate that shows up in scripts and Shiny apps.
You can install the development version of sqlserverconnect from GitHub:
# install.packages("remotes")
remotes::install_github("drosenman/sqlserverconnect")When using Windows Authentication, you typically don’t need
uid/pwd. Keep trusted = TRUE (the
default).
library(sqlserverconnect)
library(DBI)
conn <- db_connect(
server = "localhost",
database = "master"
)
DBI::dbGetQuery(conn, "SELECT TOP (5) name, create_date FROM sys.databases")
db_disconnect(conn)For SQL authentication, set trusted = FALSE and provide
uid and pwd.
Tip: avoid hardcoding passwords in scripts. Use environment variables, a keyring, or another secret manager.
library(sqlserverconnect)
library(DBI)
conn <- db_connect(
server = "localhost",
database = "master",
uid = Sys.getenv("SQLSERVER_UID"),
pwd = Sys.getenv("SQLSERVER_PWD"),
trusted = FALSE
)
DBI::dbGetQuery(conn, "SELECT TOP (5) name FROM sys.tables")
db_disconnect(conn)db_connect() supports pooled connections via the
pool package. Set pool = TRUE to create a
pool, or leave it as the default (FALSE) for a regular DBI
connection.
library(sqlserverconnect)
library(DBI)
pool <- db_connect(
server = "localhost",
database = "master",
pool = TRUE
)
DBI::dbGetQuery(pool, "SELECT TOP (5) name FROM sys.databases")
db_disconnect(pool)pool = FALSE) for
interactive scripts and short-lived jobs.pool = TRUE) for Shiny apps or long-running
processes where you want connections managed and reused.| Feature / Use case | db_connect(pool = FALSE) |
db_connect(pool = TRUE) |
|---|---|---|
| Interactive scripts | Simple and direct | Usually unnecessary |
| Long-running jobs | May time out if idle | Better handling of idle / reused conns |
| Shiny apps | Risk of too many connections | Recommended best practice |
| Parallel workloads | Each worker opens its own conn | Pool can reuse connections (per process) |
| Cleanup | db_disconnect() |
db_disconnect() |
In Shiny, create the pool once (at startup), reuse it everywhere, and close it when the app stops.
# global.R (or at the top of app.R)
library(sqlserverconnect)
db_pool <- db_connect(
server = "localhost",
database = "master",
pool = TRUE
)
onStop(function() {
db_disconnect(db_pool)
})If you frequently connect to SQL Server from R, this package keeps your workflow clean and consistent.
sqlserverconnect is built on these packages:
dbConnect() genericodbc::odbc()) used by DBI to talk to SQL Server