Naveen Kumar
Naveen Kumar

Reputation: 632

What are the limitations using DACPAC in SQL Server deployment

I'm exploring the DACPAC feature on the SQL Server database deployments.

I'm using the EXTRACT action to get the DACPAC generated from the source and the PUBLISH action to deploy it to the target.

Extract

sqlpackage.exe /Action:Extract /SourceDatabaseName:%sourcedatabaseName% /SourceServerName:%sourceserverName% /TargetFile:%FilePath%

Publish

sqlpackage.exe /Action:Publish /SourceFile:%SourceFile% /TargetServerName:%serverName% /TargetDatabaseName:%databaseName%

Here, when I have new columns introduced in the source table when I do the DACPAC deployment, it works fine. The new columns are reflected in the target.

But, when I drop columns in the source and do the DACPAC deployment, the changes are not reflected. The column is not getting dropped in the target. Is it because I have data in that column?

In the other scenario, I have some test tables and test stored procedures in the source, when I generate DACPAC and do the deployment the same test tables and stored procedures are getting deployed in the target. Is there a way to restrict this?

So would like to understand what are all the limitations of using DACPAC?

Using SQL Server 2019.

Upvotes: 0

Views: 981

Answers (1)

Lukasz Szozda
Lukasz Szozda

Reputation: 175706

Column removal from non-empty table could lead to data loss.

It could be overriden with: /p:BlockOnPossibleDataLoss=false

DacDeployOptions.BlockOnPossibleDataLoss Property

Get or set boolean that specifies whether deployment should stop if the operation could cause data loss.

True to stop deployment if possible data loss if detected; otherwise, false. Default is true.

Upvotes: 1

Related Questions