Features
What SQL Simulator actually does, end to end — including how it runs your migration or schema-change script against the sandbox before you ever run it for real.
Upload the SQL scripts you're testing against a data source, and SQL Simulator unions every table they reference, walks the foreign-key graph from that whole set once, and pulls in anything that touches those tables — automatically, no manual table list to maintain. On Standard and Multi, it also fully resolves any trigger, stored procedure, view, or function those scripts call, no matter how many steps away the call chain goes; Free resolves only the direct (single-hop) case. See Technical Overview for the full pipeline.
Preview Image builds schema and scoped data only, with no script execution — useful for just inspecting the shape of the data. Postview Image does the same, then also runs your uploaded migration or schema-change script's actual statements against the sandbox and leaves it standing, so you can poke around afterward. Dry Run does what Postview Image does, then immediately tears the sandbox back down — nothing persists, so you can test as many times as you want with zero cleanup. Full step-by-step detail is on Technical Overview.
SQL Server, PostgreSQL, MySQL, and Oracle are all supported, each launched via its own Docker Compose profile — see Supported Databases.
Connect more than one data source and build a test database from each at the same time, every one kept in its own isolated sandbox rather than sharing one.
Schemas without real FOREIGN KEY constraints
don't have to skip dependency resolution entirely — upload a small JSON file declaring the
parent/child table relations by hand (a .odfk
file), or use the built-in relation builder to compose and validate them against a live data source
without hand-writing JSON at all. On-demand relations supplement automatic constraint discovery;
they don't replace it.
SQL Simulator doesn't dump entire tables. A table your uploaded scripts actually reference is copied
scoped to whatever WHERE clause that script
already uses, or in full if the script has no WHERE
clause at all — a real signal you meant to pull everything. A table pulled in only by the
foreign-key walk, with nothing in your scripts referencing it directly, still gets real data: it's
scoped down to just the rows actually related — by foreign key column, not a guess — to
an already-copied table's rows, the same way the rest of a script's own scoping works, not a
full-table copy either.
Set a username and password once per sandbox container, and every run against it reuses the same login from then on — point your own tooling at it once and leave it alone, rather than re-pasting a new login after every run. A container you haven't set a credential for still works; one is generated automatically the first time it's needed, and stays fixed after that.
The Get Started docker-compose.yml pulls a ready-built image straight from Docker Hub — no source clone, no local build step. A free Personal license key (just an email, no credit card) is required. See Get started.