Search code examples
sql-serverdockercontainerswindows-container

Why is the official SQL Server Express container only meant for development and testing?


It says here...

Intended use: development and testing only. Not supported in production environments

Should the production database not be hosted by a container, or is this advice about the Express version, regardless of whether it's in a container?


Solution

  • SQL Server inside containers (both Windows and Linux) is still a recent technology, so it's not so tested as a "normal" SQL Server on Windows. So it may contain bugs or behave differently regarding the "normal" version. (For example, if you look at the comments in that page, you will see some people complaining about a problem regarding blobs, that maybe does not affect a default SQL Server installation)

    Also, if you look at the "full" SQL Server container (https://hub.docker.com/r/microsoft/mssql-server-windows/), it says the same.

    So this claim should be more related to the fact that this a very recent technology (and so should be used with very caution / not used at all in a production environment), than to it being the Express version or not.

    Regarding the container storage, in general a database should store its data inside a volume, and not inside the container, for security/accessibility reasons (if the container, for some reason gets bricked, its easier to access the data inside a volume than inside the container), and even performance ones (because the way the containers works, storing the data outside of the container should have better performance).