This add-on quickly installs the MS SQL server into a DDEV project. It is based on the mcr.microsoft.com/mssql/server image.
Warning: the mssql-docker image does not natively work on Apple Silicon (arm64). However, this version of the add-on is able to use the Microsoft amd64 images where Rosetta 2 is installed, enabled, and configured in your Docker provider.
On ARM64/Apple Silicon machines, make sure to use a Docker provider with Rosetta 2 support enabled.
ddev add-on get ddev/ddev-sqlsrv
ddev restart
After installation, make sure to commit the .ddev
directory to version control.
Command | Description |
---|---|
ddev sqlcmd |
For Transact-SQL statements, system procedures, and script files |
ddev drupal-regex |
For compatibility with Drupal version 9 or higher |
Drupal CMS needs the database function installed that is mimicking the Regex function as Drupal requires. As a one-time setup for Drupal, install the database function by running the following command from your project's directory:
ddev drupal-regex
This script also changes the setting for the following database variables:
show advanced options
will be set to 1clr strict security
will be set to 0clr enable
will be set to 1
Drupal also required the sqlsrv
module to be installed as it is provides the database driver for SQL Server. The module can be installed with composer with the following command:
ddev composer require drupal/sqlsrv
If you don't want the default database engine to run, add omit_containers[db]
to your .ddev/config.yaml
.
See Config Options for additional notes.
You can the Sqlsrv server to host port for use by host-side applications. This is not useful for PHP applications that operate inside the container, and it means you can only run one project using ddev-sqlsrv
at a time.
Add a docker-compose.sqlsrv_extra.yaml
with:
services:
sqlsrv:
ports:
- "${MSSQL_EXTERNAL_PORT:-1433}:1433"
and set an alternate bind port like 1499 instead of 1433:
ddev dotenv set .ddev/.env.sqlsrv --mssql-external-port=1499
ddev add-on get ddev/ddev-sqlsrv
ddev restart
Commit the .ddev/.env.sqlsrv
and docker-compose.sqlsrv_extra.yaml
files to version control.
To change the password:
ddev dotenv set .ddev/.env.sqlsrv --mssql-sa-password='myNewPassword'
ddev add-on get ddev/ddev-sqlsrv
ddev restart
Make sure to commit the .ddev/.env.sqlsrv
file to version control.
All customization options (use with caution):
Variable | Flag | Default |
---|---|---|
MSSQL_DOCKER_IMAGE |
--mssql-docker-image |
mcr.microsoft.com/mssql/server:2022-CU17-ubuntu-22.04 |
MSSQL_EXTERNAL_PORT |
--mssql-external-port |
1433 |
MSSQL_SA_PASSWORD |
--mssql-sa-password |
Password12! |
MSSQL_PID |
--mssql-pid |
Evaluation |
MSSQL_DB_NAME |
--mssql-db-name |
master |
MSSQL_HOST |
--mssql-host |
sqlsrv |
MSSQL_COLLATION |
--mssql-collation |
LATIN1_GENERAL_100_CI_AS_SC_UTF8 |
- SQL Server docker hub
- Installing the ODBC driver for SQL Server
- Installing the ODBC driver for SQL Server Tutorial
- Installation tutorial for MS drivers for PHP
- The SQLCMD utility
- The SQL Server on Linux
- The password policy
- The SQL Server environment variables
- Beakerboy's Drupal Regex database function
- Drupal's module for the SQL Server
- Github MS drivers for PHP
Note that more advanced techniques are discussed in DDEV docs.
Contributed and maintained by @robertoperuzzo based on the original ddev-contrib recipe by drupal-daffie