Archive for the ‘Tips & Tutorials’ Category

Automate Query Execution Plan Analysis with SQL Enlight

Thursday, September 2nd, 2010

Version of SQL Enlight is already released and available for download.

Here is what’s new in this release:

  • Extended query execution plan analysis support
  • A new analysis rule for query execution plan analysis – EX0018
  • A new external template parameter support in the command line tool and MSBuild tasks
  • Small improvements and fixes

The new parameter is added to provide a way to set external analysis template which to be used during analysis instead of the default one. Check the SQL Enlight documentation for the command line tool and MSBuild tasks parameters.

As the Execution Plan Analysis is the most important feature update in this release, here we have prepared a separate post for it.

We will be happy to help you if you have any questions or comments.

Thank you!

Query Execution Plan Analysis Overview

Thursday, September 2nd, 2010

The extended Execution Plan Analysis support is the most significant improvement in latest SQL Enlight release It allows execution plans analysis to be automated and applied not only on separate statements or batches, but on all stored procedures and views in a given database.

The execution plan analysis is implemented in the new analysis rule ‘EX0018: Analyze execution plan and check for high cost operations’. The rule uses the XSLT extension method execute-query-plan which now extended with the support for generating XML execution plans for CREATE PROCEDURE and CREATE VIEW statements for which SQL Server otherwise does not produce execution plans.

The XML Execution Plan is generated using the execute-show-plan XSLT extension method which generates the execution plan XML by executing the provided T-SQL script with SHOWPLAN_XML ON option set. Internally, if necessary the method does some additional work in order to rewrite the CREATE PROCEDURE and CREATE VIEW statements in a way that it to be possible for an execution plan XML to be generated. The rewriting basically extracts the statement body (e.g. the SELECT statement from CREATE VIEW or the stored procedure body from CREATE PROCEDURE) and uses it to get the XML plan.

For example, the procedure statement on the left cannot generate execution plan XML, but after being rewritten by SQL Enlight, the resulting an expanded script (the one on the right) will be able to have an execution plan generated.

After having execution plan XML, the analysis rule EX0018 checks for several operations that could have in some cases a negative impact over query performance.

The rule checks the XML plan and returns information for missing indexes that have high impact on the analyzed query, and also checks several operations for having higher than allowed(set in the rule parameters) estimated operator cost. The currently supported operators are: Bookmark Lookups(Key Lookup, RID Lookup), Table Scan,Index Scan, Sort and Hash Match.

The analysis results are output in the SQL Enlight Error List allow navigation to the statement that produces the given rule violation.

See Also

Creating analysis rules with SQL Enlight – Overview

Monday, July 19th, 2010

One of the most exciting features in SQL Enlight is the ability to create your own static analysis rules. This is very powerful feature which can be of great use and unleash almost unlimited number of possibilities for the ones who consider trying it.

The current post is the first of a series of blog posts which to guide you through the creation of custom static code analysis rules with SQL Enlight. Each of the subsequent articles will cover the implementation of several interesting analysis rule and will point some unfortunately not so obvious features and abilities of SQL Enlight static code analysis engine.


How to import Analysis Template

Sunday, June 27th, 2010

The SQL Enlight analysis templates are XML files that contain analysis rules and analysis groups definitions. The templates can be imported in SQL Enlight and this way can update or add new rules to the currently supported set of rules. (more…)

SQML changes in SQL Enlight 1.7 BETA

Wednesday, February 3rd, 2010

Obsolete SQML elements replaced in

During the optimization of SQL Enlight, we did small changes in the SQML schema. These changes will affect only the users who have created their own custom analysis rules.

The SQML elements: pu:optional, pu:essential and pu:binding are no longer generated and are replaced by pu:semicolon and pu:dot. (more…)