/mssql_server_tiny

A Slightly Liberated Microsoft SQL Server Docker image

Primary LanguageC

mssql_server_tiny

what

  • a slightly modified Microsoft SQL Server docker image
    • modified to allow execution on a machine with less than 2 GiB of physical memory

why

  • Microsoft's sqlservr, at startup, looks to see how much physical memory its host has
  • if the host has less than 2 GiB sqlservr just quits with the message:
    • "sqlservr: This program requires a machine with at least 2000 megabytes of memory."
  • it turns out that sqlservr does not try to allocate that much memory and fail but rather sqlservr enforces that as a policy (perhaps to cut down on performance related issues due to page faulting)
  • but i think if someone wants to use swap space instead of physical memory that is up to that person

how

  • using LD_PRELOAD to redefine the system call "sysinfo"
  • when sqlservr invokes the "sysinfo" system call (to see how much physical memory the host has) we instead lie to sqlservr with our redefined sysinfo function

how to use

  • pull from docker hub's build of this repository:
    • docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d justin2004/mssql_server_tiny
  • or build this image yourself

  • https://hub.docker.com/_/microsoft-mssql-server
  • https://github.com/Microsoft/mssql-docker