Note: Development and Testing purposes only. Not supported in production environments.
Link to other containerization articles
AF Server 2018 has been released on 27 Jun 2018! Let's take a look at some of the new features that are available. The following list is not exhaustive.
- AF Server Connection information is now available for administrative users.
- A new UOM Class, Computer Storage, is provided. The canonical UOM is byte (b) and multiples of 1000 and 1024.
- AFElementSearch and AFEventFrameSearch now support searching for elements and event frames by attribute values without having to specify a template.
- The AFDiag utility has been enhanced to allow for bulk deletes of event frames by database and/or template and within a specified time range
Here are also some articles that talk about other new features in AF 2018.
To take advantage of these new features, we will need to upgrade to the AF Server 2018 container. Let me demonstrate how we can do that.
Create 2017R2 container and inject data
The steps for creating the container can be found in Spin up AF Server container (SQL Server included). I will use af17 as the name in this example.
docker run -di --hostname af17 --name af17 elee3/afserver:17R2
Now, we can create some elements, attributes and event frames.
We will also list the version to confirm it is 2017R2 (18.104.22.16868).
Pull 2018 image
We can use the following command to pull down the 2018 image.
docker pull elee3/afserver:18
The credentials required are the same as the 2017R2 image. Check the digest to make sure the image is correct.
18: digest: sha256:99e091dc846d2afbc8ac3c1ec4dcf847c7d3e6bb0e3945718f00e3f4deffe073
Upgrade from 2017R2 to 2018
Create an empty folder, open up a Powershell, navigate to that folder and run the following commands.
Invoke-WebRequest "https://raw.githubusercontent.com/elee3/AF-Server-container-build/master/afbackup.bat" -UseBasicParsing -OutFile afbackup.bat Invoke-WebRequest "https://raw.githubusercontent.com/elee3/AF-Server-container-build/master/upgradeto18.bat" -UseBasicParsing -OutFile upgradeto18.bat .\upgradeto18.bat af17 af18
Wait a short moment for your AF Server 2018 container to be ready. In this example, I will give it the name af18.
Now we can check that the element, attribute and event frame that we created earlier in the 2017R2 container is persisted to the 2018 container. First, let's connect to af18 with PSE. Upon successful connection, notice that the name and ID of the AF Server 2017R2 is retained.
Our element, attribute and event frame are all persisted.
Finally, we can see that the version has been upgraded to 2018 (22.214.171.12428).
Congratulations. You have successfully upgraded to the AF Server 2018 container and retained your data.
If you want to rollback to the AF Server 2017R2 container, you will need to use the backup that was automatically generated and stored in the folder
C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup
docker rm -f af17 docker exec af18 cmd /c "copy /b "C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup\PIAFSqlBackup*.bak" c:\db\PIFD.bak" docker run -d -h af17 --name af17 --volumes-from af18 elee3/afserver:17R2
Once a PIFD database is upgraded, it is impossible to downgrade it as seen here stating "a downgrade of the PIFD database will not be possible". This means that it won't be possible to persist data entered after the upgrade during the rollback.
Explore new features
Computer Storage UOM
AF Server Connections history
Bulk deletes of event frames by database and/or template and within a specified time range
Now that the AF Server container has at least two versions available (2017R2 and 2018), you can really start to appreciate its usage for testing the compatibility of your applications with two different versions of the server. In the past, you would need to create two large VMs in order to host two AF Server. Those days are over. You can realize immediate savings in storage space and memory. We will look into bringing these containers into some cloud offerings for future articles.