SQL Deploy
A deployment script that contains only what actually changed — and that any SQL client can run.
Version 1.1.15, released 2 October 2026. All versions and checksums.
Most deployment tooling for stored procedures re-applies every file on every run. That works,
but it destroys information: every object's modify_date becomes the date of the last
deployment rather than the date it last changed, so the database can no longer tell you when
anything was really modified. It also makes the deployment log useless — a thousand identical
lines say nothing about what the release contained.
SQL Deploy compares first, and emits only what differs.
Version history
1.1.15
Current 2 Oct 202622c7cd30
A desktop application over the same engine as the command line: the plan as a tree with a diff per object, environments that say what may happen where, reference data deployed as the rows that differ, and a blank server taken to a deployed one in one press.
What changed in 1.1.15
1.1 · 2026-09-29
A desktop application over the same engine as the command line: the plan as a tree with a diff per object, environments that say what may happen where, reference data deployed as the rows that differ, and a blank server taken to a deployed one in one press.
A desktop application.
SqlDeployGuireads the same manifests and environment files, shows the plan as steps and objects with a diff of each change, writes and runs the same script, and shows the server's output as it arrives. Nothing it does is unavailable from the command line; what it adds is seeing the plan before running it, and watching it run.Environments say what may happen there.
allow: [upgrade, create, drop]andguiMode: ask | approved | disabledbelong to the environment file, so a production environment can be compared and its script copied, but never deployed by clicking. Everyone can have an environment of their own underlocal/, written from the repository's template and never committed.Create and deploy. A manifest declares the databases its environment consists of and how to create them; the application creates what is missing, compares against what it has just built, runs the
postCreatesteps and deploys — one press from a blank server.sqldeploy createdoes the same from the command line.Reference data as files. A
datastep holds rows as CSV or SQL and deploys the rows that differ, inseed,update,mergeorreplacemode, per table; a seed into a table the same run creates deploys with it.Choose what goes into a run. Every step and every object has a tick; an unticked object leaves the script, and the script's header says so. Ticks are remembered per manifest and per environment. A step follows the database it deploys to, and a step whose database is not part of the run is not compared at all.
Best effort and step through, chosen per deployment when it is confirmed: one object at a time, retried in passes, for a set of procedures whose order is wrong; or one step per transaction, pausing between them, for bringing a database up a step at a time. A step the schema model cannot hold entirely is deployed for what it can, and the rest is reported.
Steps are compared in parallel and the plan fills in as they finish; the environment can be changed, and a comparison stopped, while one is running. A server that does not answer never traps the window.
A deployment never lands in whatever database the login opens. A step names its database or inherits the target's, and one with neither fails by name. An explicitly empty password is accepted; an unset one is not.
The script says more while it runs. Messages are delivered as they happen rather than at the end of the batch; a running batch can be cancelled at once and its transaction rolled back; a table rebuild's own
DROP TABLEno longer counts as data loss.Source files are read in the encoding they were saved in, and a manifest can name the root its paths resolve against, so a manifest in
deploy/reads the repository's layout.
| Platform | Format | Size | SHA-256 | |
|---|---|---|---|---|
| Linux x64 | tar.gz | 24.6 MB | a8cfa3ac4fa088ad991021bcb0e0134ee5e540cd57f9beb4e0a9d5e98c5e1e8a |
Download |
| Windows x64 | zip | 27.2 MB | c5fd3af3727920ec1dd75516c29d1dfc14fe18a2cb4060920ab7bf833d587c40 |
Download |