<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>I want some Moore</title>
        <link>http://weblogs.sqlteam.com/mladenp/Default.aspx</link>
        <description>Blog about stuff and things and stuff... mostly about SQL server and .Net</description>
        <language>en-US</language>
        <copyright>Mladen Prajdić</copyright>
        <managingEditor>spirit1_fe@yahoo.com</managingEditor>
        <generator>Subtext Version 1.9.4.0</generator>
        <image>
            <title>I want some Moore</title>
            <url>http://weblogs.sqlteam.com/images/RSS2Image.gif</url>
            <link>http://weblogs.sqlteam.com/mladenp/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/mladenp" type="application/rss+xml" /><feedburner:emailServiceId>671615</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item>
            <title>SSMS Tools PACK 1.1 - now with SQL Server Management Studio 2008 support</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/412623590/SSMS-Tools-PACK-1.1---now-with-SQL-Server-Management.aspx</link>
            <description>&lt;p&gt;With this new version you can use it for SQL Server Management Studio 2008 and SQL Server Management Studio 2008 Express.&lt;/p&gt; &lt;p&gt;I've added a new feature to Search through the Database data. There are times when you'd like to find some value but can't remember in which table it is. &lt;/p&gt; &lt;p&gt;Also the SQL Query History Log Viewer has been remodeled. I'm open to suggestions on how to improve it further.&lt;/p&gt; &lt;p&gt;You can also have the SSMS Tools Pack installed for both SSMS 2005 and SSMS 2008 on the same machine, however they don't share the same settings.&lt;/p&gt; &lt;p&gt;  &lt;/p&gt;&lt;p&gt;I would also like to turn to you dear reader to help me find a good logo for your favorite tool right here. &lt;/p&gt; &lt;p&gt;Since this is a completely free product I'm not in a position to pay anything but I would be more than glad to splash your name with praise all over the front page. :) Thank you for any and all input.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;In &lt;a href="http://www.ssmstoolspack.com/"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;SSMS Tools Pack 1.1&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;  you can find these features&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#SSC"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Query Execution History (Soft Source Control) and Current Window History&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;:  &lt;/p&gt; &lt;p&gt;           Save all executed queries to file or database and easily find them. &lt;/p&gt; &lt;p&gt;           Current window history is a dockable window that show queries executed in a currently active window. There is also a search box at the top that filters results as you type&lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#SDD" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Search Database Data&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;:&lt;/p&gt; &lt;p&gt;          Search for a value in all non-binary columns in all tables in the database&lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#FKW"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Uppercase/Lowercase keywords&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;          Set all keywords to uppercase or lowercase letters. Custom keywords can be added. Doesn't check comments, text and quoted text anymore. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#RMS"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Run one script on multiple databases&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;          Run selected or full window text on selected databases on the currently connected server. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#CEP"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Copy execution plan bitmaps to clipboard&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;          Copy selected or all execution plans to a bitmap that is saved on the clipboard. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#SRE"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Search Results in Grid Mode and Execution Plans&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;          Find all occurrences of your search string in the execution plans or in the results in datagrid mode. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#GIS"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Generate Insert statements for a single table, the whole database or current resultsets in grids&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;          Generate insert statement from your data. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#RDS"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Text document Regions and Debug sections&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;:  &lt;/p&gt; &lt;p&gt;           Add Regions and Debug section in your scripts to ease development experience. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#RCS"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Running custom scripts from Object explorer's Context menu&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;:  &lt;/p&gt; &lt;p&gt;           Speedy execution of custom scripts from Object Explorer's context menus. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#CRUD"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;CRUD (Create, Read, Update, Delete) stored procedure generation&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;           Generate Customizable CRUD stored procedures for all tables in your database. &lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.ssmstoolspack.com/Features.aspx#NQT"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;New query template&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;           Create a template that is shown when creating a new query window. &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt;Currently supported SQL Server Management Studio versions are: &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;SQL Server Management Studio 2008 and &lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;SQL Server Management Studio 2008 Express&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;SQL Server Management Studio 2005&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;SQL Server Management Studio 2005 Express&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;  &lt;/p&gt; &lt;p&gt;Hope you enjoy it! &lt;/p&gt; &lt;p&gt;And if you're feeling extra generous there's always &lt;a href="http://www.ssmstoolspack.com/Download.aspx"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;PayPal&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;. :) &lt;/p&gt; &lt;p&gt; &lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f10%2f06%2fSSMS-Tools-PACK-1.1---now-with-SQL-Server-Management.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f10%2f06%2fSSMS-Tools-PACK-1.1---now-with-SQL-Server-Management.aspx" border="0" /&gt;&lt;/a&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/60722.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mladen Prajdić</dc:creator>
            <guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2008/10/06/SSMS-Tools-PACK-1.1---now-with-SQL-Server-Management.aspx</guid>
            <pubDate>Mon, 06 Oct 2008 08:59:07 GMT</pubDate>
            <wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/60722.aspx</wfw:comment>
            <comments>http://weblogs.sqlteam.com/mladenp/archive/2008/10/06/SSMS-Tools-PACK-1.1---now-with-SQL-Server-Management.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/60722.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/60722.aspx</trackback:ping>
        <feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2008/10/06/SSMS-Tools-PACK-1.1---now-with-SQL-Server-Management.aspx</feedburner:origLink></item>
        <item>
            <title>Normalization for databases is like Dependency Injection for code</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/395004936/Normalization-for-databases-is-like-Dependency-Injection-for-code.aspx</link>
            <description>&lt;p&gt;Let us start with a simple question:&lt;/p&gt; &lt;p&gt;What is the goal of software development, be it database or .Net (or any other language)?&lt;/p&gt; &lt;p&gt;The first answer would be: Customer satisfaction!&lt;/p&gt; &lt;p&gt;And you'd be right. However there's more to customer satisfaction then the immediate product delivery effect. We have to think about future change requests, maintenance periods, etc...&lt;/p&gt; &lt;p&gt;Almost every business application out there consists of 2 basic parts: database back end and some kind of front end that consumes the data. In our case the front end is anything with access to the database. &lt;/p&gt; &lt;p&gt;In regard to future code changes and addition of new features what is the best way to construct this code? I would say the best way is using &lt;a href="http://weblogs.sqlteam.com/mladenp/archive/2007/12/18/How-to-solve-problems-and-why-is-that-perceived-as.aspx" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;modular or black box design&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; which states that solutions to big problems are built from solutions to smaller problems. This means that we have small independent modules that are black boxes to the outside world and they perform some operation based on input parameters and optionally provide output for other modules to consume. So how does this apply to our back and front end systems?&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;h2&gt;Front end - object oriented code&lt;/h2&gt; &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Dependency_injection" target="_blank"&gt;&lt;font color="#004080"&gt;&lt;strong&gt;Dependency injection&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt; (a form of &lt;a href="http://en.wikipedia.org/wiki/Inversion_of_control" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Inversion of Control&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;) is the leading principle that enables our goal of keeping code in modules that have no outer dependencies. The input (constructor) arguments are usually interfaces that provide knowledge about the other modules that our module (class) uses. With this setup we can easily test each module by itself using &lt;a href="http://en.wikipedia.org/wiki/Unit_testing" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;automated unit tests&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;. Also changing a module does not break other modules unless we change it's interface. And this is what we want. &lt;/p&gt; &lt;p&gt;This also enables us to keep our code separated and non repeatable. The worst thing we can do is have code that does the same thing in more than once place. Think maintenance nightmare!  &lt;/p&gt; &lt;p&gt;A new feature request came in? No problem! Build it, test it, use interfaces of existing modules to access their functionality if needed. Change of an existing feature? Again, no problem. Change the module holding the feature and write new tests to validate its working correctly.  And we're done.&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;A module in object oriented code is a class that exposes its functionality through an interface.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;A simple example just to demonstrate the Dependency injection (DI) using Star Trek theme for all the geeks out there :)&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DI_Test_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="605" alt="DI_Test" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DI_Test_thumb.jpg" width="619" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Move method implementations:&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:7cb87764-956f-45c6-bcf4-0617d8f0f9b2" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ENTERPRISE                                                 &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; BORG CUBE                             &lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Move(Speed speed)                                 &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Move(Speed speed)            
{                                                             {                                        
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (speed &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; Speed.Impulse)                                   &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (speed &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; Speed.Impulse)          
        _IImpulseEngine.GoSlow();                                     _IImpulseEngine.GoSlow();        
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (speed &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; Speed.Warp)                                 &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (speed &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; Speed.Warp)        
        _IWarpEngine.GoFast();                                        _IWarpEngine.GoFast();           
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;                                                          &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;                                 
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;throw&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Exception(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Can't go faster than warp!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);            _ITransWarpEngine.GoReallyFast();
}                                                             }                                        &lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;Method implementations are irrelevant, since the point here is that our ships are built from modules. They know only about the modules interface and that's why the module itself can be changed with no problem. We could completely change the internals of ImpulseEngine without having to change a single thing in our ship as long as the drives interface stayed the same. And yes, we could refactor this simple example further on.&lt;/p&gt;
&lt;p&gt;If you ask me Dependency Injection is every developers dream. Unfortunately that dream usually comes to a screeching halt when we start dealing with databases.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;h2&gt;Back end - databases&lt;/h2&gt;
&lt;p&gt;The concept of DI is meant for object oriented logic which is excellent for code but totally fails when dealing with databases. A module in code is a class that implements an interface which exposes it's functionality.  There is no such concept in databases.&lt;/p&gt;
&lt;p&gt;So what is a module in a database? Table, row, stored procedure? Wrong. &lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;A module in the database is DATA. &lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;u&gt;&lt;strong&gt;Remember: Data is the core of the business application. Bad data, lousy business. Doesn't matter if you have the most amazing application known to mankind.&lt;/strong&gt;&lt;/u&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Denormalized design&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;This is a classic example of a denormalized schema. The problem lies in the ShippingAddress column. Since it is in the Orders table it could contain duplicates if we're shipping different orders to the same address. Because of this we can and always will get data inconsistency. And that is bad for a number of reasons. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:3067e588-f5e0-49d4-b28b-c7199bb11219" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Order&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
(
    Id &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    OrderName &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;), 
    ShippingAddress &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
)&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DbNormalizedSimple1_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="101" alt="DbNormalizedSimple1" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DbNormalizedSimple1_thumb.jpg" width="251" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This below result set is the common problem with denormalized design. If we edit and save the address for order 4, we can change it independently of order 1 despite both orders having the same address. Now we have duplicated data and we don't know which one is correct. In a normalized design this isn't possible.&lt;/p&gt;
&lt;p&gt; &lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DbNormalizedSimple1a_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="97" alt="DbNormalizedSimple1a" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DbNormalizedSimple1a_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Normalized design&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;This is the upper table normalized into 2 tables: Order and Address. This way our data is only in one place and thus it can't get corrupted by bad input. Note that AddressValue column should be split further, but for shortness sake lets make it simple.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:42c4099d-8c8c-4aef-9388-786e0c94309c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Order&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
(
    Id &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    OrderName &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;), 
    AddressId &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;
)

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Address&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
(
    Id &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
    AddressValue &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
)&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DbNormalizedSimple2_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="102" alt="DbNormalizedSimple2" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/Normalizationdependencyinjection_149F7/DbNormalizedSimple2_thumb.jpg" width="373" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Data normalization is not just a whim of every developers arch nemesis - the DBA ;). It's a simple concept that is used to guarantee data consistency and validity. So when the time comes to change or extend our schema we don't have to change it in different places in our database. Just like Dependency Injection enables simple and testable change in code by modularizing objects so does Database Normalization by applying the same goal for data.&lt;/p&gt;
&lt;p&gt;So don't fear normalization. Embrace it and make your life easier in the long run.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Denormalizing on purpose&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;The most heard and quite valid argument is that fully normalized database schema is slow. This is true since querying 4 normalized joined tables is slower than querying 1 denormalized table. &lt;/p&gt;
&lt;p&gt;However this argument is usually used in the wrong context. People tend to just leave their data denormalized. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Always first normalize data and then denormalize it if the need arises.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With SQL Server this problem can easily be solved with &lt;a href="http://www.microsoft.com/technet/prodtechnol/sql/2005/impprfiv.mspx" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;indexed views&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;. With them we can query the denormalized data but update the normalized data. And thus we can achieve the performance we need without having duplicated data. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Dependency Injection and Database Normalization are two entirely different concepts that strive to achieve the same thing. Ability to make quick and stable changes.&lt;/p&gt;
&lt;p&gt;Keeping the area of change small enough helps us make any kind of change fast be it small or large. In the long run this is what we want. Let's face it, how many times did an important business application that supports some business process have a lifetime of six months or less without the slightest change? Almost never. And because of that it pays to design our business software properly. It really isn't that hard.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f09%2f17%2fNormalization-for-databases-is-like-Dependency-Injection-for-code.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f09%2f17%2fNormalization-for-databases-is-like-Dependency-Injection-for-code.aspx" border="0" /&gt;&lt;/a&gt; 
&lt;table width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align="left"&gt;  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td align="left"&gt;
&lt;p&gt;&lt;img id="imgAdd" alt="" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/225/r_OneWhitePixel.bmp" onload="javascript: try { SwitchToAdd(); } catch(e) {}" name="imgAdd" /&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/60711.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mladen Prajdić</dc:creator>
            <guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2008/09/17/Normalization-for-databases-is-like-Dependency-Injection-for-code.aspx</guid>
            <pubDate>Wed, 17 Sep 2008 08:38:52 GMT</pubDate>
            <wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/60711.aspx</wfw:comment>
            <comments>http://weblogs.sqlteam.com/mladenp/archive/2008/09/17/Normalization-for-databases-is-like-Dependency-Injection-for-code.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/60711.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/60711.aspx</trackback:ping>
        <feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2008/09/17/Normalization-for-databases-is-like-Dependency-Injection-for-code.aspx</feedburner:origLink></item>
        <item>
            <title>SQL Server 2005 Express Job Scheduling - Part 1</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/377174971/SQL-Server-2005-Express-Job-Scheduling---Part-1.aspx</link>
            <description>&lt;p&gt;I've written an article here on &lt;a href="http://www.sqlteam.com"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;SQL Team&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; on how to schedule jobs in SQL Server 2005 Express  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Intro&lt;/strong&gt;  &lt;/p&gt;&lt;p&gt;&lt;/p&gt;As we all know SQL Server 2005 Express is a very powerful free edition of SQL Server 2005. However it does not contain SQL Server Agent service. Because of this scheduling jobs is not possible. So if we want to do this we have to install a free or commercial 3rd party product. This usually isn't allowed due to the security policies of many hosting companies and thus presents a problem. Maybe we want to schedule daily backups, database reindexing, statistics updating, etc... This is why I wanted to have a solution based only on SQL Server 2005 Express and not dependant on the hosting company. And of course there is one based on our old friend the Service Broker.  &lt;p&gt;Part 1 - &lt;a href="http://www.sqlteam.com/article/scheduling-jobs-in-sql-server-express" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Scheduling Jobs in SQL Server Express&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;Part 2 will be out in couple of weeks&lt;/p&gt; &lt;p&gt; &lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f08%2f28%2fSQL-Server-2005-Express-Job-Scheduling---Part-1.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f08%2f28%2fSQL-Server-2005-Express-Job-Scheduling---Part-1.aspx" border="0" /&gt;&lt;/a&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/60702.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mladen Prajdić</dc:creator>
            <guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2008/08/28/SQL-Server-2005-Express-Job-Scheduling---Part-1.aspx</guid>
            <pubDate>Thu, 28 Aug 2008 14:32:17 GMT</pubDate>
            <wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/60702.aspx</wfw:comment>
            <comments>http://weblogs.sqlteam.com/mladenp/archive/2008/08/28/SQL-Server-2005-Express-Job-Scheduling---Part-1.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/60702.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/60702.aspx</trackback:ping>
        <feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2008/08/28/SQL-Server-2005-Express-Job-Scheduling---Part-1.aspx</feedburner:origLink></item>
        <item>
            <title>SQL Server 2005 temporary tables bug, feature or expected behavior?</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/371018910/SQL-Server-2005-temporary-tables-bug-feature-or-expected-behavior.aspx</link>
            <description>&lt;p&gt;In my opinion these 2 batches should behave the same but they don't. the first fails and the second runs ok.&lt;/p&gt; &lt;p&gt;I've searched through Books Online for any clue but i haven't really found anything useful. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Does anyone have any clue about this?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Permissions and transaction isolation levels are not an issue here.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:b285133f-b874-47dc-84c1-94f91be52845" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; just to make sure it doesn't already exist&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;tempdb..#tempTable&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;NOT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;DROP Temporary table&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tempTable
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;normalTable&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;NOT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;DROP Normal table&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; normalTable
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt; 

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; THIS FAILS WITH ERROR MESSAGE: Msg 2714, Level 16, State 1, Line 7 There is already an object named '#tempTable' in the database.&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Temporary table&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tempTable &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;master&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;..spt_values
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tempTable
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tempTable

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tempTable &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;master&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;..spt_values
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tempTable
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tempTable

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; THIS RUNS OK&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Normal table&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; normalTable &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;master&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;..spt_values
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; normalTable
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; normalTable

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; normalTable &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;master&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;..spt_values
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; normalTable
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; normalTable

&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I've also tried this on SQL Server 2000 and it behaves the same. Haven't tried it on SQL Server 2008 though.&lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f08%2f21%2fSQL-Server-2005-temporary-tables-bug-feature-or-expected-behavior.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f08%2f21%2fSQL-Server-2005-temporary-tables-bug-feature-or-expected-behavior.aspx" border="0" /&gt;&lt;/a&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/60694.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mladen Prajdić</dc:creator>
            <guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2008/08/21/SQL-Server-2005-temporary-tables-bug-feature-or-expected-behavior.aspx</guid>
            <pubDate>Thu, 21 Aug 2008 14:56:43 GMT</pubDate>
            <wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/60694.aspx</wfw:comment>
            <comments>http://weblogs.sqlteam.com/mladenp/archive/2008/08/21/SQL-Server-2005-temporary-tables-bug-feature-or-expected-behavior.aspx#feedback</comments>
            <slash:comments>21</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/60694.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/60694.aspx</trackback:ping>
        <feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2008/08/21/SQL-Server-2005-temporary-tables-bug-feature-or-expected-behavior.aspx</feedburner:origLink></item>
        <item>
            <title>Software Development Cycle truism</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/363035860/Software-Development-Cycle-truism.aspx</link>
            <description>&lt;p&gt;For all enthusiasts out there this is how software development cycle works no matter what the project is:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Programmer produces code he believes is bug-free. &lt;/li&gt;
    &lt;li&gt;Product is tested. 20 bugs are found. &lt;/li&gt;
    &lt;li&gt;Programmer fixes 10 of the bugs and explains to the testing department that the other 10 aren't really bugs. &lt;/li&gt;
    &lt;li&gt;Testing department finds that five of the fixes didn't work and discovers 15 new bugs. &lt;/li&gt;
    &lt;li&gt;Repeat three times steps 3 and 4. &lt;/li&gt;
    &lt;li&gt;Due to marketing pressure and an extremely premature product announcement based on overly-optimistic programming schedule, the product is released. &lt;/li&gt;
    &lt;li&gt;Users find 137 new bugs. &lt;/li&gt;
    &lt;li&gt;Original programmer, having cashed his royalty check, is nowhere to be found. &lt;/li&gt;
    &lt;li&gt;Newly-assembled programming team fixes almost all of the 137 bugs, but introduce 456 new ones. &lt;/li&gt;
    &lt;li&gt;Original programmer sends underpaid testing department a postcard from Fiji. Entire testing department quits. &lt;/li&gt;
    &lt;li&gt;Company is bought in a hostile takeover by competitor using profits from their latest release, which had 783 bugs. &lt;/li&gt;
    &lt;li&gt;New CEO is brought in by board of directors. He hires a programmer to redo program from scratch. &lt;/li&gt;
    &lt;li&gt;Programmer produces code he believes is bug-free... &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;More truisms like the one above can be found &lt;a target="_blank" href="http://www.visitor-tracking.com/pm-jokes.php"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;here&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/60679.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mladen Prajdić</dc:creator>
            <guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2008/08/12/Software-Development-Cycle-truism.aspx</guid>
            <pubDate>Tue, 12 Aug 2008 15:53:53 GMT</pubDate>
            <wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/60679.aspx</wfw:comment>
            <comments>http://weblogs.sqlteam.com/mladenp/archive/2008/08/12/Software-Development-Cycle-truism.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/60679.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/60679.aspx</trackback:ping>
        <feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2008/08/12/Software-Development-Cycle-truism.aspx</feedburner:origLink></item>
        <item>
            <title>Number one advice to recruiters from an IT guy</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/344800815/Number-one-advice-to-recruiters-from-an-IT-guy.aspx</link>
            <description>&lt;p&gt;I can't stress this enough:&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;Never ever call me on my work phone as a form of the first contact!&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Unless I know you and have given you permission to call me, don't. Send me an email instead.&lt;/p&gt;
&lt;p&gt;I don't have anything against recruiters, I think their jobs are very important in the greater scheme of things.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I also never give my work phone number away, and if I have to I give my mobile phone number to people. &lt;/p&gt;
&lt;p&gt;So it's beyond me how do recruiters think it's actually OK to call me at work. It shows disrespect to me and to the company I work for. &lt;/p&gt;
&lt;p&gt;And that is &lt;strong&gt;NOT OK&lt;/strong&gt;. Not even if you're offering me the most amazing job in the universe.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;But for a minute lets say it's OK and I have no problem with the call. There are a number of things that can go wrong here:&lt;/p&gt;
&lt;p&gt;- I'm in a really lousy mood for whatever reason&lt;/p&gt;
&lt;p&gt;- my boss answers the phone (now I don't know about others but my current boss is very cool and has no problem with it but others may not be so lucky)&lt;/p&gt;
&lt;p&gt;- you disrupt my coding zone. And I get REALY annoyed if I have to break out of my zone.&lt;/p&gt;
&lt;p&gt;- I'm in a meeting or something similar&lt;/p&gt;
&lt;p&gt;- other stuff I haven't thought of ...&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If any of the above happens to be true you've just lost me as a potential candidate. &lt;/p&gt;
&lt;p&gt;And lets get something straight: You need me more than I need you. And that translates into lost revenue for you.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So you see an &lt;strong&gt;email is a much better way to make first contact&lt;/strong&gt;. Then we can talk about scheduling a call if it's needed.&lt;/p&gt;
&lt;p&gt;Come on, be smart about it!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f07%2f24%2fNumber-one-advice-to-recruiters-from-an-IT-guy.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" border="0" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f07%2f24%2fNumber-one-advice-to-recruiters-from-an-IT-guy.aspx" /&gt;&lt;/a&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/60658.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mladen Prajdić</dc:creator>
            <guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2008/07/24/Number-one-advice-to-recruiters-from-an-IT-guy.aspx</guid>
            <pubDate>Thu, 24 Jul 2008 17:07:44 GMT</pubDate>
            <wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/60658.aspx</wfw:comment>
            <comments>http://weblogs.sqlteam.com/mladenp/archive/2008/07/24/Number-one-advice-to-recruiters-from-an-IT-guy.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/60658.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/60658.aspx</trackback:ping>
        <feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2008/07/24/Number-one-advice-to-recruiters-from-an-IT-guy.aspx</feedburner:origLink></item>
        <item>
            <title>Immediate deadlock notifications without changing existing code</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/338846818/Immediate-deadlock-notifications-without-changing-existing-code.aspx</link>
            <description>&lt;p&gt;In my &lt;a href="http://weblogs.sqlteam.com/mladenp/archive/2008/05/21/SQL-Server-2005-Immediate-Deadlock-notifications.aspx" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;previous post&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; about immediate deadlock notifications in SQL Server 2005 I've shown a way to use a try catch block to get the deadlock error.&lt;/p&gt; &lt;p&gt;The con of this method, although it uses best practice for error handling in SQL Server 2005, is that you have to change existing code and &lt;/p&gt; &lt;p&gt;it doesn't work for non stored procedure code. And that IS a pretty BIG con! As is customary in this blog there is a solution to this. :)&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;SQL Server 2005 Event notifications&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182602.aspx" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Event notifications&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; are a special kind of database object that send information about server and database events to a Service Broker service. &lt;/p&gt; &lt;p&gt;They execute in response to a variety of Transact-SQL data definition language (DDL) statements and SQL Trace events by sending information &lt;/p&gt; &lt;p&gt;about these events to a Service Broker service. There are three scopes for event notifications: Server, Database and Queue.&lt;/p&gt; &lt;p&gt;We of course want a Server wide deadlock notification so that we can be notified of all deadlocks on the entire server&lt;/p&gt; &lt;p&gt;I have to point out that event notification are an awesome use of Service Broker functionality.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;For the purpose of this post I've used &lt;strong&gt;tempdb&lt;/strong&gt; to hold our deadlock event info. Of course this should go into an administrative database if you have one.&lt;/p&gt; &lt;p&gt;Also an email is sent to notify the DBA that the deadlock happened. Thus the Immediate part :)&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:2909ae17-0047-4b80-bf0b-38f884e4de08" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; tempdb
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; this procedure will write our event data into the table and send the notification email&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: #000000;"&gt; usp_ProcessNotification 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@msgBody&lt;/span&gt;&lt;span style="color: #000000;"&gt; XML    
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@dlgId&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;uniqueidentifier&lt;/span&gt;&lt;span style="color: #000000;"&gt;

    &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; you can change this to get all messages at once&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHILE&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TRANSACTION&lt;/span&gt;&lt;span style="color: #000000;"&gt;    
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; TRY        
            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; receive messages from the queue one by one            &lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            ;RECEIVE &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TOP&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) 
                    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@msgBody&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; message_body,
                    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@dlgId&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; conversation_handle
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;    dbo.DeadLockNotificationsQueue
            
            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; exit when the whole queue has been processed&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;@@ROWCOUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt;
                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;@@TRANCOUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;
                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
                    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ROLLBACK&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;  
                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BREAK&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt; 

            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; insert event data into our table &lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; TestEventNotification(eventMsg)
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@msgBody&lt;/span&gt;&lt;span style="color: #000000;"&gt;
            
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@MailBody&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;MAX&lt;/span&gt;&lt;span style="color: #000000;"&gt;)    
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@MailBody&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;CAST&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #008000;"&gt;@msgBody&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;MAX&lt;/span&gt;&lt;span style="color: #000000;"&gt;));

            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; send an email with the defined email profile. &lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; since this is async it doesn't halt execution&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; EXEC msdb.dbo.sp_send_dbmail&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;         @profile_name = 'your mail profile', -- your defined email profile &lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;         @recipients = 'dba@yourCompany.com', -- your email&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;         @subject = 'Deadlock occured notification',&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;         @body = @MailBody;&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;@@TRANCOUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt; TRY
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; CATCH
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;@@TRANCOUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ROLLBACK&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;
            &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; write any error in to the event log&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@errorNumber&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BIGINT&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;@errorMessage&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;nvarchar&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2048&lt;/span&gt;&lt;span style="color: #000000;"&gt;), &lt;/span&gt;&lt;span style="color: #008000;"&gt;@dbName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;nvarchar&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;128&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;@errorNumber&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ERROR_NUMBER(), &lt;/span&gt;&lt;span style="color: #008000;"&gt;@errorMessage&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ERROR_MESSAGE(), &lt;/span&gt;&lt;span style="color: #008000;"&gt;@dbName&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;DB_NAME&lt;/span&gt;&lt;span style="color: #000000;"&gt;()

            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;RAISERROR&lt;/span&gt;&lt;span style="color: #000000;"&gt; (N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Error WHILE receiving Service Broker message FROM queue DeadLockNotificationsQueue.
                        DATABASE Name: %s; Error number: %I64d; Error Message: %s&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
                        &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;16&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;@dbName&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;@errorNumber&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;@errorMessage&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;LOG&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt; CATCH;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;END&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; create the notification queue that will receive the event notification messages&lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt; add the activation stored procedure that will process the messages in the queue&lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt; as they arrive&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; QUEUE DeadLockNotificationsQueue
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt; STATUS &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
    ACTIVATION (
        PROCEDURE_NAME &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; usp_ProcessNotification,
        MAX_QUEUE_READERS &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;EXECUTE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; );
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; crete the notofication service for our queue with the pre-defined message type&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; SERVICE DeadLockNotificationsService
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; QUEUE DeadLockNotificationsQueue 
                (&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;http://schemas.microsoft.com/SQL/Notifications/PostEventNotification&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; create the route for the service&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ROUTE DeadLockNotificationsRoute
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt; SERVICE_NAME &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;DeadLockNotificationsService&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
    ADDRESS &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;LOCAL&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; create the event notification for the DEADLOCK_GRAPH event. &lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt; other lock events can be added &lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; EVENT NOTIFICATION DeadLockNotificationEvent
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; SERVER 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; DEADLOCK_GRAPH &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; , LOCK_DEADLOCK_CHAIN, LOCK_DEADLOCK, LOCK_ESCALATION -- ANY OF these can be SET&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TO&lt;/span&gt;&lt;span style="color: #000000;"&gt; SERVICE &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;DeadLockNotificationsService&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
           &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;current database&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; CASE sensitive string that specifies USE OF server broker IN CURRENT db&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; check to see if our event notification has been created ok&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; sys.server_event_notifications &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; name &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;DeadLockNotificationEvent&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; create the table that will hold our deadlock info&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; TestEventNotification(Id &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;), EventMsg xml, EventDate &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;datetime&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;GETDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt;()))
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; clean up&lt;/span&gt;&lt;span style="color: #008080;"&gt;
/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;
DROP TABLE TestEventNotification
DROP PROCEDURE usp_ProcessNotification
DROP EVENT NOTIFICATION DeadLockNotificationEvent ON SERVER 
DROP ROUTE DeadLockNotificationsRoute
DROP SERVICE DeadLockNotificationsService
DROP QUEUE DeadLockNotificationsQueue
&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For testing you'll need to open 2 windows in SQL Server Management Studio&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:4c55aee4-d30c-4bde-968c-29140172f24d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; tun this first to create the test table &lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; AdventureWorks
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IF&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;object_id&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;DeadlockTest&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IS&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;NOT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; DeadlockTest 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; DeadlockTest ( id &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; DeadlockTest
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt; run this in query window 1&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TRAN&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; DeadlockTest 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; wait 5 secs to set up deadlock condition in other window&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WAITFOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; DELAY &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;00:00:05&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; DeadlockTest 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;11&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt; run this in query window 2 a second or two &lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt; after you've run the script in query window 1&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BEGIN&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TRAN&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; DeadlockTest 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;11&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; wait 5 secs to set up deadlock condition in other window&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WAITFOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; DELAY &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;00:00:05&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UPDATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; DeadlockTest 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; id &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;COMMIT&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;
--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; run this after the test to see that we have our deadlock event notification saved&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; tempdb
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; TestEventNotification
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ORDER&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt; id&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;We can see that this setup works great. Because we have subscribed to the DEADLOCK_GRAPH event we can see the same information &lt;/p&gt;
&lt;p&gt;as if we had traced it with the SQL Profiler. Of course this kind of setup can be used for any kind of event that is supported.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f07%2f18%2fImmediate-deadlock-notifications-without-changing-existing-code.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.sqlteam.com%2fmladenp%2farchive%2f2008%2f07%2f18%2fImmediate-deadlock-notifications-without-changing-existing-code.aspx" border="0" /&gt;&lt;/a&gt; 
&lt;table width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align="left"&gt;  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td align="left"&gt;
&lt;p&gt;&lt;img id="imgAdd" alt="" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/225/r_OneWhitePixel.bmp" onload="javascript: try { SwitchToAdd(); } catch(e) {}" name="imgAdd" /&gt; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/60653.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mladen Prajdić</dc:creator>
            <guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2008/07/18/Immediate-deadlock-notifications-without-changing-existing-code.aspx</guid>
            <pubDate>Fri, 18 Jul 2008 09:00:04 GMT</pubDate>
            <wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/60653.aspx</wfw:comment>
            <comments>http://weblogs.sqlteam.com/mladenp/archive/2008/07/18/Immediate-deadlock-notifications-without-changing-existing-code.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/60653.aspx</wfw:commentRss>
            <trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/60653.aspx</trackback:ping>
        <feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2008/07/18/Immediate-deadlock-notifications-without-changing-existing-code.aspx</feedburner:origLink></item>
        <item>
            <title>SQL Server 2005 bug when using LIKE searches</title>
            <link>http://feeds.feedburner.com/~r/mladenp/~3/334959754/SQL-Server-2005-bug-when-using-LIKE-searches.aspx</link>
            <description>&lt;p&gt;Here's a demo of a nice little bug in SQL Server 2005 when using LIKE comparisons for searching. &lt;/p&gt; &lt;p&gt;What is so "nice" about it is that it only manifests itself if your search ends in number 9 followed by a wildcard when &lt;/p&gt; &lt;p&gt;selecting only columns covered by a nonclustered index.&lt;/p&gt; &lt;p&gt;I've been able to reproduce the error on different collations and servers. They were all SQL Server 2005 SP2+. SQL Server 2000 isn't affected by this.&lt;/p&gt; &lt;p&gt;You can find the connect issue posted by my coworker &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=355368" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;here&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/craigfr" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Craig Freedman&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; pointed me to &lt;a href="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=206543" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;this&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; connect issue that is similar and probably originates from the same bug.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:7d79ffaa-8a7b-488e-92fd-96d690f19fd1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; tempdb
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; ANSI_NULLS &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; QUOTED_IDENTIFIER &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; ANSI_PADDING &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Projects&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;(
    &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;INT&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #808080;"&gt;NOT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
    &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ProjectNumber&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
 &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CONSTRAINT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;PK_Project_Id&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;KEY&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CLUSTERED&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
(
    &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ASC&lt;/span&gt;&lt;span style="color: #000000;"&gt;
)&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt; (PAD_INDEX  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, STATISTICS_NORECOMPUTE  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, IGNORE_DUP_KEY &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
ALLOW_ROW_LOCKS  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;, ALLOW_PAGE_LOCKS  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FILLFACTOR&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;90&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;
) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; ANSI_PADDING &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CREATE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;NONCLUSTERED&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INDEX&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;IX_Projects_ProjectNumber&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Projects&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
(
    &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ProjectNumber&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ASC&lt;/span&gt;&lt;span style="color: #000000;"&gt;
)&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt; (PAD_INDEX  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, STATISTICS_NORECOMPUTE  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
SORT_IN_TEMPDB &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, IGNORE_DUP_KEY &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, DROP_EXISTING &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
ONLINE &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;, ALLOW_ROW_LOCKS  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;, ALLOW_PAGE_LOCKS  &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; NOCOUNT &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; XACT_ABORT &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IDENTITY_INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Projects&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ON&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Projects&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ProjectNumber&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;6&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.781&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;5&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.794&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;4&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.795&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;2&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.796&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;3&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.798&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;1&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.799&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;7&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.871&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;8&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.872&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;9&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.873&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;10&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.874&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;11&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.875&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;12&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.876&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;13&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.877&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;14&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.878&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;15&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.879&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;16&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.891&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;17&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.892&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;18&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.893&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;19&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.894&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;UNION&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;ALL&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;20&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.895&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;IDENTITY_INSERT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Projects&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;OFF&lt;/span&gt;&lt;span style="color: #000000;"&gt;;


&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; NO ROWS should be 5&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; Projects
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProjectNumber &lt;/span&gt;&lt;span style="color: #808080;"&gt;LIKE&lt;/span&gt;&lt;span style="color: #000000;"&gt; N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.79%&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5 ROWS&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; Projects
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProjectNumber &lt;/span&gt;&lt;span style="color: #808080;"&gt;LIKE&lt;/span&gt;&lt;span style="color: #000000;"&gt; N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.79%&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; COLLATE Latin1_General_CI_AI

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; NO ROWS should be 5&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; Projects
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProjectNumber &lt;/span&gt;&lt;span style="color: #808080;"&gt;LIKE&lt;/span&gt;&lt;span style="color: #000000;"&gt; N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.89%&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5 ROWS&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; Projects
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProjectNumber &lt;/span&gt;&lt;span style="color: #808080;"&gt;LIKE&lt;/span&gt;&lt;span style="color: #000000;"&gt; N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.89%&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; COLLATE Latin1_General_CI_AI

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; 1 ROW&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; Projects
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProjectNumber &lt;/span&gt;&lt;span style="color: #808080;"&gt;LIKE&lt;/span&gt;&lt;span style="color: #000000;"&gt; N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.78%&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9 ROWS&lt;/span&gt;&lt;span style="color: #008080;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; Projects
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; ProjectNumber &lt;/span&gt;&lt;span style="color: #808080;"&gt;LIKE&lt;/span&gt;&lt;span style="color: #000000;"&gt; N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;P08.87%&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;GO&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;[&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Projects&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Execution plan for the &lt;strong&gt;LIKE 'P08.89%'&lt;/strong&gt; query:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/SQLServer2005bugwhenusingLIKE_10675/LikeBugPlan_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="230" alt="LikeBugPlan" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/mladenp/WindowsLiveWriter/SQLServer2005bugwhenusingLIKE_10675/LikeBugPlan_thumb.jpg" width="700" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And the same execution plan in text:&lt;/p&gt;&lt;pre&gt;&lt;strong&gt;|--Nested Loops(Inner Join, OUTER REFERENCES:([Expr1010], [Expr1011], [Expr1012]))
     |--Merge Interval
     |    |--Concatenation
     |         |--Compute Scalar(DEFINE:(([Expr1005],[Expr1006],[Expr1004])=GetRangeThroughConvert(N'P08.89',NULL,(22))))
     |         |    |--Constant Scan
     |         |--Compute Scalar(DEFINE:(([Expr1008],[Expr1009],[Expr1007])=GetRangeThroughConvert(NULL,N'P08.8?',(10))))
     |              |--Constant Scan
     |--Index Seek(OBJECT:([AdventureWorks].[dbo].[Projects].[IX_Projects_ProjectNumber]), 
     	  SEEK:([AdventureWorks].[dbo].[Projects].[ProjectNumber] &amp;gt; [Expr1010] AND 
     	        [AdventureWorks].[dbo].[Projects].[ProjectNumber] &amp;lt; [Expr1011]),  
          WHERE:(CONVERT_IMPLICIT(nvarchar(12),[AdventureWorks].[dbo].[Projects].[ProjectNumber],0) like N'P08.89%') 
          ORDERED FORWARD)&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;By looking at the query plan we can see that the internal GetRangeThroughConvert method is used to get the search range in the new range seek optimizations in SQL Server 2005. Of course I have no idea what this method does internally but my guess would be that it uses column statistics to plot the correct search range. You can read more about that in this &lt;a href="http://blogs.msdn.com/craigfr/archive/2008/06/05/implicit-conversions.aspx" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;this post&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; by &lt;a href="http://blogs.msdn.com/craigfr" target="_blank"&gt;&lt;strong&gt;&lt;font color="#004080"&gt;Craig Freedman&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; who was nice enough to help me confirm that this issue is actually a bug.&lt;/p&gt