Ready to receive up to a $350 benefit?

Plus: Exclusive content, tips and tools

What is SQL-Hero?

SQL-Hero is a tool suite that enhances productivity for developers and DBA's who use Microsoft SQL Server. It includes tool such as: an advanced SQL editor, code generator, compare tools (both schema and data), audit history (schema), unit testing, monitoring, tracing and data generation. It also includes xSkrape for SQL Server and xSkrape for SQL Server Integration Services.

How's that special? There's a lot of SQL tools on the market today...

There are a number of important differences that make SQL-Hero unique... and very powerful.

  • The code generator addresses many, many use cases that others can't. We're working on extensive on-line documentation to help you create your own templates to do amazing things!
  • xSkrape technology enables access to a nearly unlimited universe of data, right within SQL Server.
  • Archive millons of data points related to monitoring and performance and report against these using an Analysis Services model using any visualization tool of your choice or a number of canned reports.
  • Compare SQL-Hero with other technologies on our comparisons page: both from a technical and business perspective.
  • Expect new capabilities in up-coming releases, based on your real-world feedback.
You can consider SQL-Hero a "general solutions engine" for developers who do a lot of data-oriented work, just like the work we've done in real-world settings to build out feature after feature. Challenge us! Submit suggestions and descriptions of your own challenges to help us help you!

Watch a self-guided tour of SQL-Hero...    

(click image to enlarge)

One of the most powerful features of SQL-Hero is its "code generator." It has the ability to take a wide range of possible inputs (e.g. tables, views, stored procedures, etc.) and produce a wide range of possible outputs (e.g. SQL script, application code, data such as XML, etc.). As just one example, in this screen-shot we see a template that's packaged with SQL-Hero that takes a view as input and creates a stored procedure that can be used to merge the view's data into a target table. (Not only does this save possibly significant typing, it can easily adapt to a changing schema.) There are multiple ways you can actually invoke the transformation engine. Here we're invoking the template we previously saw against three views, directly from the SQL-Hero editor. A great thing about templates is you're free to create your own or customize existing ones. After invoking the template, we're presented with the resulting SQL script. Notice the correspondence of the script to the underlying view: the template was able to iterate over columns of the view to build SQL that will properly merge the underlying data. (We could tell a longer story about this particular template, but we'll cover that in a future blog post.) A key way to influence the output generated by the transformation engine is to use "user-defined properties." These are settings you can associate to SQL objects like tables, views, table or view columns, stored procedures (including parameters) - even stored procedure result set columns! Any template can define UDP's that it needs to function. As an example, the template we've been looking at defines the "natural key" used for merging by letting the user set the MergeFromViewNaturalKey property (strongly-typed as a boolean) to true on all view columns which are considered part of the natural key. UDP's are flexible enough to associate to specific databases or span all databases. Another way we can generate code is using the SQL-Hero project type, in Visual Studio. This kind of project can specify one or more templates, and running a "Build" in Visual Studio invokes them all. We can even invoke templates using a command-line tool that comes with SQL-Hero: SHCommand. This tool has been incorporated in many automation scenarios. The SQL editor offers a number of cool features that can be real time-savers. For example, you can take two result sets and compare them using color-coding to quickly identify differences. We can run health queries (either those provided with the product or any query of your own) and capture results for later analysis. Here's an example of having pulled back a history of everything that was concurrently executing in samples taken every 20 seconds, color coded based on sample time. Another tool lets us define rules - from simple to complex - that will generate test data for one or more tables. Here we see configuration that will let the tool create realistic names, handle lookups, and honor constraints. Based on the configuration set on the previous slide, we've generated this realistic-looking data. Back in the SQL editor, we can preview data in tables with a single keystroke - when we're done, just keep on typing and the preview goes away. Doing a search for text within objects is as simple as typing text in the "content search" box and hitting Enter. However, we're not limited to simple matching: we can use terms like NEAR, NOT, WW (whole word match), REGEX, and more. We can track every single change made to every single object, and that history is available in a number of ways. This context menu option lets us get the history on an object-by-object basis. ... and the history we do get includes plenty of detail, as shown here. And the process to get here is about as simple as it gets! These slides have only been a small sample of what SQL-Hero can do... we encourage you to download it, try it out, and provide feedback that we'll use to make the product even better!

Learn more...



Spotlight Feature:

Copy Column Names with One Keystroke

Imagine you're typing the following SQL manually:

SELECT *
FROM BusinessUnit b
  JOIN Location l
    ON b.LocationID = l.
It's not hard to imagine filling in "LocationID" following the last "." to complete the JOIN, matching foreign key to primary key. SQL-Hero lets you complete this SQL with a short-cut key: "Alt"+"." What's actually happening here is text on the current line that follows the first "." is copied to the current cursor location. Therefore, this would also work:
SELECT *
FROM BusinessUnit b
JOIN Location l
ON b.LocationID = @
Where pressing "Alt"+"." fills in the statement with "@LocationID" - a very plausible case where we've passed @LocationID in as a parameter. We've found this is a big time-saver, even beyond what normal "intellisense" would provide.