Database clones for traditionally installed SQL Servers

Windocks delivers database clones and attaches them automatically to traditionally installed SQL Servers. See the sample in windocks\samples\windocksCloneToSqlInstance

Prerequisities for the SQL Server instance you want the clone attached to:

  • Create a SQL account that has a sysadmin role and note down the user name and password
  • Allow remote connections
  • Mixed authentication enabled

Create the dockerfile as follows:

FROM mssql-2017


# This line specifies that the technology for cloning is Windocks, replace the machine name and windows account below, leae ahte rest of the line as is
RUN SourceClone_Windocks NetworkShareName|$ContainerId$ContainerImageName NetworkSharePath|C:\Windocks\data\$ContainerId\$ContainerImageName NetworkShareUsers|YOURMACHINENAME\YourWindowsAccount

# This line specifies that the target where the clone is attached is a SQL Instance
RUN TargetAttach_SqlWindows InstanceName|$SqlInstanceName SqlUserName|$SqlInstanceUserName SqlPassword|$SqlInstancePassword

# This line sets up the image to deliver clones of the customer database to each container
SETUPCLONING FULL customers C:\windocks\dbbackups\customerdatafull.bak

Build the image from the above dockerfile. This will create an image and apply the script maskingScript.sql to it

In a command line on the Windocks server:
docker build -t yourimagename path\to\directory\containing\dockerfile

Alternatively, use the web application and click on Build in the top menu and click Browse. Select all the files in the directory (dockerfile, any script files) and then Open. Then click Build.

You may also use the REST API to build the image

Create a container from the image. This can be done using a command line below (only on the Windocks machine), or the web application (enter the SQL user name and password for the SQL instance) or from the REST API

In a command line on the Windocks server:
docker create --name SqlInstance_uniquename -e $SqlInstanceName="YourMachineNameRunningSqlInstance\YourSqlInstanceName" –e $SqlInstanceUserName="YourSqlUserName" –e $SqlInstancePassword="YourSqlPassword" YourImageName

Make sure the name starts with SqlInstance_

The Sql user name and password should be for an Sql acccount that is a sysadmin on the target Sql Server instance

The Sql server port on the machine running the SQL instance should be open in the firewall on that machine

This will deliver a container with a writeable database clone of the customers database and the script scriptToRunAtContainerCreateTime.sql applied to the database

You may also create containers with the clones from the web application at ServerIp:/index.html or the file windocks\ui\index.html in Chrome or Firefox

You may also create containers with the REST API here

View logs of the scripts in the web application by clicking log next to your container / clone.