Search code examples
sql-serverdockerdacpacsqlpackage

Error: The reference to external elements from the source named 'master.dacpac' could not be resolved


I am building a database dacpac using sqlpackage on a windows machine. The project contains a reference to master.dacpac

I take the move the dacpac to a linux machine (mssql-server-linux docker image) and restore the database.

deploy-database.sh

# publish dacpac using sqlpackage
./sqlpackage/sqlpackage /Action:Publish /sf:"/MyDb.dacpac" /tu:sa /tp:Password1 /tdn:MyDb /tsn:localhost

Error:

No file was supplied for reference master.dacpac; deployment might fail. When package was created, the original referenced file was located C:$(windows machine path)\MASTER.DACPAC. Initializing deployment (Failed) An error occurred during deployment plan generation. Deployment cannot continue. Error SQL0: The reference to external elements from the source named 'master.dacpac' could not be resolved, because no such source is loaded. Warning SQL72025: No file was supplied for reference master.dacpac; deployment might fail. When package was created, the original referenced file was located C:$(windows machine path)\MASTER.DACPAC.

An error occurred while adding references. Deployment cannot continue. The command '/bin/sh -c sh /deploy-database.sh' returned a non-zero code: 1

I have tried adding master.dacpac to the project directly and also copying it to the docker image but the same error occurs.

How can I restore a dapac in a linux environment that has a reference to master.dacpac?


Solution

  • I had a similar issue, my solution was to rename the dacpac files UPPERCASE, (ex: MASTER.DACPAC) which worked for me, as well as making the directory with the dacpac files the working directory.