Sql Server Data Tools ~repack~ May 2026
One Friday afternoon, a junior developer was tasked with a seemingly simple change: add a new NOT NULL column to a fact table called FactTransactions . Following standard practice, she opened the SSDT project, added the column to the table definition, and hit “Publish.” SSDT helpfully generated the deployment script, showing a standard ALTER TABLE ADD command. She deployed to the development environment—no issues. Then to QA—fine.
Here’s an interesting, true story about SQL Server Data Tools (SSDT) that captures both its power and its occasional “surprise factor.” sql server data tools
The story became a legend in their team: “Always review the actual generated deployment script before publishing—never trust the visual diff.” And they added a mandatory step to their CI/CD pipeline: generate the script, inspect it for hidden table rebuilds, then deploy. One Friday afternoon, a junior developer was tasked
The fix? They learned that for large tables with a NOT NULL column and a default, SSDT’s “smart” offline deployment strategy (which avoids online ALTER operations that could lock the table for hours) backfires. They had to change the deployment settings: disable the “allow offline deployments” or explicitly tell SSDT to use an online ALTER TABLE ADD WITH VALUES command. Then to QA—fine
But when she deployed to a pre-production staging environment that mirrored production data, disaster struck. The deployment failed with a bizarre error: “Cannot insert NULL into column ‘NewColumn’.” But the column definition had a DEFAULT value of GETDATE() ! How could it try to insert NULL?