Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
If you haven't read the first post about the NavContainerHelper, you should do so.
If you have a created a SQL Server container using one of the methods described any of the blog posts:
- Create a SQL Server container with the CRONUS database from a NAV container image
- Create a SQL Server container and restore a .bak file
Then you will have the variables $databaseServer, $databaseInstance, $databaseName and $databaseCredential pointing to a database you can use to start up a NAV container. These parameters can be given directly to New-NavContainer.
If you have created your external database through other means, please set these variables in PowerShell. Please try the following script to see whether a docker container can connect to your database:
$dbPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($databaseCredential.Password))
$databaseServerInstance = @{ $true = "$databaseServer\$databaseInstance"; $false = "$databaseServer"}["$databaseInstance" -ne ""]
docker run -it --name sqlconnectiontest microsoft/mssql-server-windows-developer powershell -command "Invoke-Sqlcmd -ServerInstance '$databaseServerInstance' -Username '$($databaseCredential.Username)' -Password '$dbPassword' -Database '$databaseName' -Query 'SELECT COUNT(*) FROM [dbo].[User]'"
If the above script fails, you will not succeed starting a NAV container with these credentials, before your connection test succeeds.
Please remove your connection test container using:
docker rm sqlconnectiontest -f
When you successfully have conducted the connection test above, you can start a NAV container using this script:
$navcredential = New-Object System.Management.Automation.PSCredential -argumentList "admin", (ConvertTo-SecureString -String "P@ssword1" -AsPlainText -Force)
New-NavContainer -accept_eula `
-containerName "test" `
-Auth NavUserPassword `
-imageName $imageName `
-Credential $navcredential `
-databaseServer $databaseServer `
-databaseInstance $databaseInstance `
-databaseName $databaseName `
-databaseCredential $databaseCredential
If your database doesn't have a license file, you can upload a license file using:
Import-NavContainerLicense -containerName test -licenseFile "https://www.dropbox.com/s/abcdefghijkl/my.flf?dl=1"
If you do not import a license file, you are likely to get errors like this when trying to access the NAV container.
The following SQL error was unexpected:
Invalid object name 'master.dbo.$ndo$srvproperty'.
You can add users to the database using:
New-NavContainerNavUser -containerName test -Credential $navcredential
Enjoy
Freddy Kristiansen
Technical Evangelist