DBMS
 

 

SQL-Programmer 2.0

By Ken Henderson
DBMS, March 1997 SQL-Programmer 2.0 is a development environment for back-end programming. It provides server developers with an intuitive user interface and extensive tool set for the development and maintenance of all programmable objects.

Sometimes when I work with a new tool for the first time, I find myself amazed at its ingenuity. On seeing a feature I really like, I've been known to exclaim, "That makes so much sense!" Fact is, I'm a bit of a tool-aholic -- I like to have plenty of them. I'm sort of a Swiss Army knife kind of guy, too -- I like single tools that do lots of things. It's just that I like having a bunch of them.

The initial euphoria of trying out a tool for the first time is usually followed by one of two emotions. Either the tool is truly exceptional and I continue to find features that both amaze and impress me, or I end up feeling a bit let down, a victim of the old bait-and-switch routine. My initial feeling after working with Sylvain Faust's SQL-Programmer 2.0 is somewhere between those extremes. The product does have a lot of promise -- I liked many of version 2.0's features. On the other hand, the product is about as bad as it is good. A number of poor design decisions, bugs, and other quirks make the product less than ideal and less functional than its competitors.

Installation

On installing SQL-Programmer 2.0, I immediately received an error message stating that the product had already been installed and that I had to be sure to enter the same user and company information as I'd entered before. But this was the first time I'd installed the package -- so I had no idea what to enter. As it turns out, keying in my name and current company name worked just fine. This error wasn't fatal, so I shrugged it off and continued the process. An installation program is like a handshake -- you get your first impression about the software from it. If the company can't get the installation process right, I have to wonder about the product itself.

Once I completed the first leg of the installation process, I then had to install a separate platform-specific driver. SQL-Programmer 2.0 supports three DBMS platforms: Sybase SQL Server (versions 4.2 through System 11), Oracle (version 7 and above), and Microsoft SQL Server (versions 4.2 through 6.5). Once the initial installation process was finished, I had to run a separate installation to install support for my particular DBMS platform. This second installation routine is unnecessary -- it should be combined with the first one. After all, SQL-Programmer's install routine was created with the WISE Installation System -- it couldn't have been that hard to set up.

Startup

Once the program was installed and I ran it for the first time, I was presented with a separate connection dialog. As with most similar tools, I entered a user name, password, and a database alias; then I clicked on a button. Curiously, clicking on the Connect button wasn't enough, however; I also had to click on the dialog's Done button. If you click on only the Done button instead of the Connect button, the connection dialog closes, but no connection is made. If you click on Connect rather than Done, the dialog waits for you to click on Done before proceeding. This is counterintuitive and unnecessary. Once a connection has been made, the connection dialog should close automatically.

Another problem is that the connection dialog doesn't list the currently available server aliases. Instead, I must type in the name of each alias the first time I connect to it. The combo box that lets me select a server alias should already list all available aliases.

A final thing that's missing from SQL-Programmer's connection dialog is a warning when you use the default passwords for DBA or SA accounts. On Oracle, CHANGE_ON_INSTALL is the default password for the SYS account, and MANAGER is the default for the SYSTEM account. When either of these passwords is used, SQL-Programmer should warn you that you're using a system-supplied default password and offer you the opportunity to change it. SQL-Programmer is not alone in this flaw -- neither Platinum Technology Inc.'s Desktop DBA nor Embarcadero Technologies Inc.'s DBArtisan guard against it, but they should.

Once inside SQL-Programmer itself, I was presented with a blank screen with a menu and toolbar at the top. Most users would begin by opening SQL-Programmer's database Explorer. SQL-Programmer 2.0's Explorer provides a Windows Explorer-like interface to your database server. In my case, it was an Oracle7.3 Workgroup Server I'd installed just for evaluating SQL-Programmer. It seems to me that the Explorer should be open by default. At the very least, the software should remember which windows were open when it was last closed down and reopen them when restarted. As it is, no windows are open by default, nor does the program remember what windows were open the last time you ran it.

The Program Itself

Once I finally got SQL-Programmer up and running, I liked most of what I saw. (See Figure 1.) The Explorer interface is quite functional. You can navigate down through the various objects on your server and right-click on them to display their properties, edit them, generate SQL scripts for them, and so on.

One problem the software had, both within the Explorer and elsewhere, was an inability to handle large fonts. About a quarter of the programs I use have a problem with large fonts, and SQL-Programmer is the first DBA tool I've used that exhibits this problem. I had to switch to small fonts in order to see the entirety of some of SQL-Programmer's dialogs.

All told, I found the Explorer interface easy to use and, for the most part, intuitive. I'd appreciate the ability to drill down into Oracle tablespaces to access their objects. It's not uncommon for Oracle DBAs to set up a number of tablespaces residing on separate physical drives in order to maximize performance. When tables and indexes are organized in this way, it's helpful to be able to access the objects that live on a particular tablespace.

Source Code Management

On the positive side, I really like SQL-Programmer 2.0's support for version-control software. The product supports two version-control systems: Microsoft's SourceSafe and Intersolv's PVCS. Such support is critical in large shops with oodles of server objects. Tools such as SQL-Programmer are enabling SQL development tools to make the same jump to the enterprise level that traditional development tools made several years ago. Finally, a company has realized the need to have complete management over all aspects of an application's source code, even its SQL support code.

Free SQL!

No, I'm not having a SQL fire sale. Free SQL! is SQL-Programmer's SQL editing environment. I have to admit, I was a bit underwhelmed by this one. I expected a full-blown SQL editor, complete with source code highlighting and SQL syntax help (à la DB Artisan). What I got was a multipage Notepad-like editor that's nothing to write home about. In fact, if you're a Microsoft SQL Server user, I'd say that you're better off sticking with SQL Enterprise Manager's built-in SQL editor.

Free SQL! also exhibits a number of quirks that make it more difficult to use than it should be. Don't bother including the semicolon (";") statement terminator in Oracle SQL statements you write; Free SQL! doesn't know how to handle it. If you try to execute an Oracle SQL statement that's terminated with a semicolon, you'll get an error message from your server. SQL-Programmer passes the semicolon directly to the server instead of recognizing it as a statement terminator and removing it -- an annoying flaw.

Free SQL! is missing a few features that I think a full-blown SQL editor should have: SQL syntax highlighting, vendor-specific SQL help, and support for regular expressions in searches. Until these features are added, SQL-Programmer doesn't really offer anything to lure you in this area.

Batch Objects

One of SQL Programmer 2.0's more innovative ideas is its Batch Objects facility. Basically, a Batch Object is a SQL script that lives on your database server. Instead of managing hordes of unruly SQL script files, I can store my SQL source in special objects on my SQL server. Now, I'm not referring to stored procedures. SQL-Programmer's Batch Objects store your SQL source code in tables on your server. This can be any SQL source: table creation scripts, rule and default binding scripts, tablespace alterations, and, yes, even stored procedure source. You can store any SQL source that would normally reside in an external script as a Batch Object. The advantages to this capability are numerous: Backing up the database also backs up the SQL source; because I'm on a database server, I have inherent multiuser support; and storing my source on my database server creates a central location for all SQL-related source members, giving me a virtual SQL repository that is easier to manage than loads of SQL scripts. The one disadvantage, however, is that if I move my SQL source code to Batch Objects, I'm locked into using SQL-Programmer to edit my SQL code, because other tools will know nothing of them.

SQL-Programmer pulls off the magic of Batch Objects by supplying its own extensions to SQL to work with them. Specifically, it adds the CREATE BATCH, DROP BATCH, and EXECUTE BATCH statements to the language. These commands are intercepted by SQL-Programmer when you attempt to execute them via Free SQL! and processed internally by the program. As long as you use SQL-Programmer to perform your SQL editing, these new commands will seem like a part of SQL itself.

I found SQL-Programmer's Batch Object support one of its more intriguing features. Storing SQL source entirely on database servers is an interesting idea. We'll see if it catches on.

Database Searches

SQL-Programmer's Database Search facility is another handy feature. It lets users search across the objects in a database for a particular string. Users can search through the source that makes up triggers, procedures, rules, defaults, tables, and even SQL-Programmer's Batch Objects. I've written stored procedures and utilities in the past to perform this very task, and I know that it's no small feat. I can imagine this feature alone saving SQL developers many hours spelunking through SQL scripts.

Reports

Probably the single most important feature that SQL-Programmer 2.0 offers --which is missing from most of its competition -- is its reporting facility. I could quickly generate informative reports on almost anything related to my server or its databases. I could list information about specific database objects and preview the reports I generated before I printed them. This facility could prove invaluable to DBAs who are too busy (or too smart) to build these types of reports by hand. Again, this feature alone may justify your purchase of the product.

Script Generation

If there was one thing that I expected SQL-Programmer to excel at, it was SQL script generation. Unfortunately, I was sorely disappointed.

I got the distinct impression that the tool was designed primarily to work with Sybase's SQL Server -- and that Oracle support was an afterthought. In fact, version 1.x of SQL-Programmer supported Sybase and Microsoft SQL Server, but not Oracle -- that happened in version 2.0. At this point, the support for Oracle still seems half-baked. For example, when generating the DDL for an Oracle table with a comment associated with it, SQL-Programmer generated Oracle PL/SQL with embedded SQL Server ISQL go commands! Needless to say, the generated SQL script wouldn't execute properly in Oracle's SQL*Plus tool. The same thing happened again when I generated the DDL for several objects at once. SQL-Programmer delimited each SQL create statement with SQL Server gos. This made the generated scripts very difficult to use with other Oracle tools -- a real shame considering some of the product's other bright spots.

Another problem with the SQL generation facility reared its ugly head when I reverse-engineered an Oracle tablespace. The facility didn't recognize that the structure had been created with the AUTOEXTEND option turned on; hence it didn't generate the correct SQL. Running the SQL it generated would have resulted in a tablespace definition that differed from the original.

A final problem I had with the scripting facility was with its ineptness when generating whole schema SQL scripts. I selected several schemas in the Script Engine facility and chose the ScriptNow menu option. I expected to get a single SQL script file containing all of the SQL necessary to completely recreate each schema. Instead, I got a script file containing a set of CREATE statements that simply recreated the user accounts associated with the schemas. If you intended to save off your database's structure before making some sort of radical change to it, you'd be out of luck if you relied on SQL-Programmer's scripting facility to reconstruct it. Despite several attempts, I could find no easy way to build an all-encompassing CREATE script for even a single schema, let alone an entire server.

The Help System

The SQL-Programmer help system has a number of minor glitches. I ran into several broken links and nonsensical index entries. Whoever wrote the help text itself also seemed to lack a good command of English; several sentences were nearly unintelligible.

A feature completely missing from the SQL-Programmer help system is vendor-specific SQL help. Having the vendor's core SQL syntax in the help system can save you a trip through server manuals or your vendor's online documentation. I'd find SQL-Programmer much more useful if it included essentials such as these.

The Bottom Line

All in all, I'd say the decision of whether or not to buy SQL-Programmer 2.0 is a toss-up. For my own use, I don't think I could justify the purchase. You may find, however, that some of SQL-Programmer's innovative features are worth a closer look. There is a lot to like about SQL-Programmer 2.0; there is also a lot to dislike. People tend to be fairly religious about such tools. Find one that works for you and is intuitive yet powerful enough to get your work done.


Figure 1.


--The SQL-Programmer 2.0 database Explorer facility.


Ken Henderson is a database architect, administrator, and client/server expert. He is the author of Database Developer's Guide with Delphi 2.0 (1996) and coauthor of Teach Yourself IntraBuilder in 21 Days (1996) and Teach Yourself Borland C++Builder in 21 Days (1996), all published by SAMS. You can email Ken at khen@compuserve.com.
Subscribe to DBMS and Internet Systems -- It's free for qualified readers in the United States
March 1997 Table of Contents | Other Contents | Article Index | Search | Site Index | Home

DBMS and Internet Systems (http://www.dbmsmag.com)
Copyright © 1997 Miller Freeman, Inc. ALL RIGHTS RESERVED
Redistribution without permission is prohibited.
Please send questions or comments to dbms@mfi.com
Updated Tuesday, February 11, 1997.