Long before TerminalNexus, I sold a Windows app called Universal Explorer. The last big version shipped in 2013, and the first one goes back to 2003. Written in C++ with MFC, talking to databases over plain ODBC, and doing four jobs in one window: replicate data between databases, compare table schemas across vendors, browse Oracle without the official tools, and manage machines on the network.
I built it because my days were split across Oracle, SQL Server and MS Access, and the tooling situation was grim. Every vendor had its own console, every console assumed you were the DBA, and moving or checking data between two of them meant exports, linked tables, and prayer. I wanted one window that spoke to all of them the same way. ODBC was the common language, so that's what I built on.
The Replicator
The replication module copied table data between any two ODBC databases, per table, with a grid showing exactly what would happen before you committed to anything. Tables missing from the destination got flagged with a red cross and skipped automatically.
The design decisions in it still hold up. It refused to replicate any table without a primary key. It never created tables in the destination, because a data copier that silently invents schema is a data copier you stop trusting. And by default it cleaned the destination table before copying, but that was a per-table checkbox, so you could append where appending made sense. The app would rather skip your table than guess.
Smart Compare
The comparison module is the part I'm still proud of. Connect two databases, and it diffs table schemas between them: columns, data types, sizes, primary keys, indexes, foreign keys both directions.
The interesting problem was comparing across vendors. Diff an Oracle table against its SQL Server twin naively and everything is a difference: INT versus NUMBER(10,0), VARCHAR versus VARCHAR2. The report becomes noise. So the default mode, Smart Compare, reduced every type to a common denominator before comparing. VARCHAR in SQL Server, VARCHAR2 in Oracle and TEXT in Access were treated as the same thing, and the report only flagged differences that actually mattered. Two stricter modes were there when you wanted the pedantic view, down to length, scale, radix and nullability.
Results came out as a color-coded HTML report in your browser, split into extra columns, real differences, and tables that existed on only one side. In 2013, HTML was the one report format everybody could open, print and archive. Some things don't change.
Oracle Explorer
This one was born from a simple annoyance: Oracle's own tools assumed privileges I didn't always have. Universal Explorer would log you in without DBA rights and give you a clean tree of everything you could see: tables, views, procedures, functions, packages with their bodies, triggers, constraints, privileges. A data grid with paging kept network traffic sane on big tables, and a SQL window with built-in statement templates covered the daily queries.
Reading other people's packages in that tree is how a good chunk of Oracle actually got into my head. You learn a lot faster when browsing the schema doesn't feel like an expedition.
Network Explorer
The fourth module dates the app better than any copyright notice. It showed you who was connected to any PC on the LAN, let you create shares, start and stop Windows services on remote machines with their dependencies, and remotely reboot a box, with a warning message on the target's screen and a countdown so you weren't pulling the rug out from under a colleague. Checking who was on a machine before bouncing it was the polite version of remote administration, 2003 style. No more walking across the building to restart a database service.
The part that was the actual work
The feature list reads simple. The work was underneath: one C++ codebase treating Oracle 7.3 through 11g, SQL Server 6.5 through 2008 and Access 97 through 2007 as the same database. Every ODBC driver had opinions, every vendor bent the rules somewhere, and the type unification table behind Smart Compare was earned one driver quirk at a time.
Yes, the UI is skinned. It was the early 2000s, everything was skinned:) And all of it was built the old way: MSDN in one window, Visual Studio in the other, and patience. There was nobody to ask but the documentation.
Universal Explorer lived under Safe Software Solutions, the same company TerminalNexus lives under today, and the thread between them is straight: one fast local window, nothing between you and your work.
Worth reviving?
Here's the thought I keep circling. Schema drift between environments is still a daily problem, and most of what's out there for comparing databases is heavy, vendor-locked, or both. A small, fast, local tool that diffs two databases across vendors would still earn its desk space. I've been wondering about reviving that module, alone or as part of something bigger.
If a cross-vendor schema diff is something you'd use, or you remember Universal Explorer from back in the day, send me a line in the comments. Thanks for reading!
TerminalNexus
Comments