<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Home of the Data Dude : PowerTools</title><link>http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx</link><description>Tags: PowerTools</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Power Tools Installation Problem (error code 2738)</title><link>http://blogs.msdn.com/gertd/archive/2008/07/12/power-tools-installation-problem-error-code-2738.aspx</link><pubDate>Sat, 12 Jul 2008 20:06:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8724550</guid><dc:creator>gertd</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/gertd/comments/8724550.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=8724550</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=8724550</wfw:comment><description>&lt;p&gt;Some users have been reporting problems installing the VSDB Power Tools on Vista or Windows Server 2008 (applies to both 32 and 64 bit versions). &lt;/p&gt;  &lt;p&gt;When they run the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en" target="_blank"&gt;Power Tools installer&lt;/a&gt; they are confronted with the following mysterious error message:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/POwerToolsInstallationProblemErrorcode27_8989/err2738_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="187" alt="err2738" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/POwerToolsInstallationProblemErrorcode27_8989/err2738_thumb.png" width="396" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Error code 2738 implies that the VBScript engine is not enabled. On some Vista and Windows Server 2008 installations the VBScript engine is disabled. The workaround is to enable the VBScript engine and run the setup again. After that you can disable the VBScript engine again if desired.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to enable the VBScript engine:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start an elevated command prompt.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Run the following command :      &lt;br /&gt;      &lt;ol&gt;       &lt;li&gt;On a 32-bit OS run:          &lt;br /&gt;regsvr32 %windir%\System32\vbscript.dll           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;On a 64-bit OS run:          &lt;br /&gt;regsvr32 %windir%\SysWOW64\vbscript.dll           &lt;br /&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now run the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en" target="_blank"&gt;Power Tool installer&lt;/a&gt; from an &lt;strong&gt;elevated&lt;/strong&gt; process.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to disable the VBScript engine:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start an elevated command prompt.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Run the following command :      &lt;br /&gt;      &lt;br /&gt;      &lt;ol&gt;       &lt;li&gt;On a 32-bit OS run:          &lt;br /&gt;          &lt;br /&gt;regsvr32 %windir%\System32\vbscript.dll /U           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;On a 64-bit OS run:          &lt;br /&gt;regsvr32 %windir%\SysWOW64\vbscript.dll /U &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I hope this helps, the next version of the Power Tools installer will no longer rely on VBScript. &lt;/p&gt;  &lt;p&gt;-GertD &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8724550" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category><category domain="http://blogs.msdn.com/gertd/archive/tags/VSTS-DB/default.aspx">VSTS-DB</category></item><item><title>Command line SQL Static Code Analysis</title><link>http://blogs.msdn.com/gertd/archive/2008/02/18/command-line-sql-static-code-analysis.aspx</link><pubDate>Tue, 19 Feb 2008 01:06:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7781250</guid><dc:creator>gertd</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/gertd/comments/7781250.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=7781250</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=7781250</wfw:comment><description>&lt;p&gt;We have had a lot of requests from users asking us to make T-SQL Static Code Analysis available at build time and from the command line. The latest &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio Team System 2008 Database Edition Power Tool&lt;/a&gt; release, adds this ability to the product through a new MSBuild task. In this blog post I will go through the step that you need to follow to enable and use T-SQL Static Code Analysis from the command line.&lt;/p&gt; &lt;h1&gt;&lt;strong&gt;Step 0: Install the Power Tools&lt;/strong&gt;&lt;/h1&gt; &lt;p&gt;You first need to install the latest &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en" target="_blank"&gt;Power Tools for Visual Studio Team System 2008 Database Edition&lt;/a&gt;.&lt;/p&gt; &lt;h1&gt;&lt;strong&gt;Step 1: Create a new database project or open an existing one&lt;/strong&gt;&lt;/h1&gt; &lt;p&gt;We need a database project, either use an existing one, or simple create a test project, from example using the pubs database. That is what I will use for this example.&lt;/p&gt; &lt;h1&gt;Step 2: Unload the project&lt;/h1&gt; &lt;p&gt;We will need to add a entry to the project file to import the MSBuild .targets file for Power Tools. In order to do this you have to unload the project so that you can edit project file using the XML editor. Right click on the project node inside the Solution Explorer and choose "Unload Project".&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="303" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_thumb.png" width="177" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;h1&gt;Step 3: Import the Microsoft.VisualStudio.TeamSystem.Data.PowerTools.Tasks.targets file&lt;/h1&gt; &lt;p&gt;The next step is to modify the project file to add an import statement to include the Microsoft.VisualStudio.TeamSystem.Data.PowerTools.Tasks.targets file which contains the MSBuild task for T-SQL Static Code Analysis. Right click on the unloaded project in Solution Explorer and choose "Edit &amp;lt;project name.dbproj&amp;gt;".&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="197" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_thumb_1.png" width="157" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This will open the .dbproj file inside the Visual Studio XML editor. Now we need to add an import statement to load the .target file. If you search for "&amp;lt;Import" inside the project file you will find the regular import which loads the normal MSBuild tasks for the database project like the SqlBuildTask and the SqlDeployTask.&lt;/p&gt; &lt;div&gt; &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--Import the settings--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\TeamData\Microsoft.VisualStudio.TeamSystem.Data.Tasks.targets"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We need to add a reference to the Power Tools targets file.&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--Import the settings--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\TeamData\Microsoft.VisualStudio.TeamSystem.Data.Tasks.targets"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\TeamData\Microsoft.VisualStudio.TeamSystem.Data.PowerTools.Tasks.targets"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Step 4: Reload the project&lt;/h1&gt;
&lt;p&gt;After you made the project change, including the new targets file, it is time to reload the project. Right click on the unloaded project node inside Solution Explorer and choose "Reload Project". This will reload the project.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="197" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_thumb_2.png" width="157" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE: Make sure you have no errors when loading the project, because this will be an indication that your edits were not correct.&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;Step 5: Start a "Visual Studio 2008 Command Prompt"&lt;/h1&gt;
&lt;p&gt;The next step is to run T-SQL Static Code Analysis from the command line, in order to do so we need a command prompt that has the PATH set correctly so we can call MSBuild.exe. Visual Studio creates a shortcut in the menu structure that will launch a command prompt with the correct settings.&lt;/p&gt;
&lt;p&gt;When you started the command prompt navigate to the directory where you project file is located that you changed in the previous step.&lt;/p&gt;
&lt;h1&gt;Step 6: Run T-SQL Static Code Analysis from the command-line&lt;/h1&gt;
&lt;p&gt;From the command prompt run: msbuild pubs.dbproj /t:SqlAnalysis&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="334" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/CommandlineSQLStaticCodeAnalysis_1390C/image_thumb_4.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE: The results file is created in the output directory, which by default is the SQL directory&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;Step 7: Look at the results&lt;/h1&gt;
&lt;p&gt;When executing the project using the SqlAnalysis target, an XML file is created that contains the results, named StaticCodeAnalysis.Results.xml. This file contains the information that is normally displayed in the Visual Studio "Error List".&lt;/p&gt;
&lt;p&gt;When you open the file in VS it will look like this:&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1.0"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="utf-16"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;standalone&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="no"&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problems&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Design#SR0010&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You should avoid using the following join syntaxes, which have been deprecated: Table1.Id = Table2.Id, Table1.Id *= Table2.Id, Table1.Id =* Table2.Id. You should use the newer syntax, which uses the JOIN keyword.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Stored Procedures\dbo.reptq2.proc.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;4&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;14&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Design#SR0010&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You should avoid using the following join syntaxes, which have been deprecated: Table1.Id = Table2.Id, Table1.Id *= Table2.Id, Table1.Id =* Table2.Id. You should use the newer syntax, which uses the JOIN keyword.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Stored Procedures\dbo.reptq2.proc.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;4&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;23&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Design#SR0010&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You should avoid using the following join syntaxes, which have been deprecated: Table1.Id = Table2.Id, Table1.Id *= Table2.Id, Table1.Id =* Table2.Id. You should use the newer syntax, which uses the JOIN keyword.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Views\dbo.titleview.view.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;4&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;15&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Design#SR0010&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  29:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You should avoid using the following join syntaxes, which have been deprecated: Table1.Id = Table2.Id, Table1.Id *= Table2.Id, Table1.Id =* Table2.Id. You should use the newer syntax, which uses the JOIN keyword.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  30:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Views\dbo.titleview.view.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  31:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;4&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  32:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;23&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  33:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  34:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  35:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  36:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Performance#SR0005&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  37:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You might cause a table scan when you use an expression that starts with "%" in the LIKE predicate. &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  38:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Stored Procedures\dbo.reptq3.proc.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  39:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;6&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  40:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;73&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  41:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  42:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  43:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  44:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Performance#SR0007&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  45:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You have specified a nullable column that is not wrapped with the ISNULL function. This practice can cause the final result to be evaluted as NULL for the predicate.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  46:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Stored Procedures\dbo.byroyalty.proc.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  47:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;4&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  48:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;7&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  49:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  50:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  51:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  52:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Performance#SR0007&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  53:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You have specified a nullable column that is not wrapped with the ISNULL function. This practice can cause the final result to be evaluted as NULL for the predicate.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  54:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Stored Procedures\dbo.reptq3.proc.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  55:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;6&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  56:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;7&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  57:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  58:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  59:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  60:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Microsoft.Performance#SR0007&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  61:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;You have specified a nullable column that is not wrapped with the ISNULL function. This practice can cause the final result to be evaluted as NULL for the predicate.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProblemDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  62:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\work\pubs\Schema Objects\Stored Procedures\dbo.reptq3.proc.sql&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SourceFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  63:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;6&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Line&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  64:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;27&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Column&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  65:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Severity&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  66:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  67:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Problems&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Step 8: Clean up the results&lt;/h1&gt;
&lt;p&gt;If you want to clean up the resulting file produced by the static code analysis run, simply run:&lt;/p&gt;
&lt;p&gt;msbuild pubs.dbproj /t:ScaClean&lt;/p&gt;
&lt;p&gt;This will remove the results file.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Conclusion:&lt;/h1&gt;
&lt;p&gt;Following the steps outlined before enable you to run T-SQL Static Code Analysis from the command line, you can use the same step to integrate this in to your Team Build environment, but you have to make sure that you install the Power Tools on the build server before you can use this.&lt;/p&gt;
&lt;p&gt;-GertD&lt;br&gt;"DataDude" Group Engineering Manager&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7781250" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category><category domain="http://blogs.msdn.com/gertd/archive/tags/VSDB/default.aspx">VSDB</category><category domain="http://blogs.msdn.com/gertd/archive/tags/SQLStaticCodeAnalysis/default.aspx">SQLStaticCodeAnalysis</category></item><item><title>File Bound Generator</title><link>http://blogs.msdn.com/gertd/archive/2008/02/16/file-bound-generator.aspx</link><pubDate>Sun, 17 Feb 2008 06:31:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7745790</guid><dc:creator>gertd</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/gertd/comments/7745790.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=7745790</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=7745790</wfw:comment><description>&lt;p&gt;An other new addition to the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en"&gt;Visual Studio Team System 2008 Database Edition - Power Tools&lt;/a&gt; release is the File Bound Generator. This data generator grovels through files inside a directory or optionally through its subdirectories, based on some search filter you provide and loads the content of the file in to a column value. The file content is either represented as text or as binary data. The generator is shared-instancing enabled, which means that the same file can be bound to multiple columns inside the same row while having to load it only once. &lt;/p&gt; &lt;p&gt;Let walk through an example which leverages the file bound generator to load data in to a table.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;&lt;strong&gt;Step 0: Install the Power Tools&lt;/strong&gt;&lt;/h1&gt; &lt;p&gt;You first need to install the latest &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en" target="_blank"&gt;Power Tools for Visual Studio Team System 2008 Database Edition&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Step 1: Create a new project and add a table&lt;/h1&gt; &lt;p&gt;The first step is to create a new database project, in this example I am using a SQL Server 2005 project named "testdb", since I want to leverage the NVARCHAR(MAX) and VARBINARY(MAX) data types, otherwise use NTEXT and IMAGE instead.&lt;/p&gt; &lt;p&gt;After having created the project add a new table which we will name [dbo].[files] with the following shape:&lt;/p&gt; &lt;div&gt; &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt; [dbo].[files]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; (&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     [file_id]    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; &lt;span style="color: #0000ff"&gt;identity&lt;/span&gt; &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     [file_name]&amp;nbsp; nvarchar(256) &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     [file_text]&amp;nbsp; nvarchar(&lt;span style="color: #0000ff"&gt;max&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     [file_bin]   varbinary(&lt;span style="color: #0000ff"&gt;max&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; );&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;After you created the project and the table, make sure that you build and deploy project.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Step 2: Create a new Data Generation Plan&lt;/h1&gt;
&lt;p&gt;Next add a new Data Generation Plan, by right clicking on the Data Generation Plan folder in Solution Explorer and choose: "Add... New Item... Data Generation Plan"&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb.png" width="179" border="0"&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_1.png" width="185" border="0"&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_2.png" width="403" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This will add a new Data Generation Plan to your project and automatically bind the columns of the tables inside your project to the default data generator.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Step 3: Create some test input&lt;/h1&gt;
&lt;p&gt;In order to create some test files we can load and also demonstrate how shared-instancing works I am using the following batch file:&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;@rem&lt;/span&gt; CreateFiles.cmd&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;@echo&lt;/span&gt; off&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; /L %%I &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; (1, 1, 1000) &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; call :CREATE %%I&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; END&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; :CREATE&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;@echo&lt;/span&gt; filename%1.txt &amp;gt; filename%1.txt&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; :END&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Create a folder, for example C:\TEST, create or copy the CreateFiles.cmd file in to the directory you just created and run the batch file. This will create a 1000 files with sequential names and the content of the file being the file name so we can use it for correlation purposes.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Step 4: Configure the File Bound Generator&lt;/h1&gt;
&lt;p&gt;The default configuration of the plan will look like this:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="182" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_3.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The next step is to assign file bound generator to the file_name, file_text and file_bin columns.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_14.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="182" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_6.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;After you assigned the generator you need to set the Generator Output, by default the generator binds to the coercion type, so the file_name and file_text will bind to String Result since they are NVARCHAR columns, the file_bin column will by default bind to the Binary Result since its type is of VARBINARY.&lt;/p&gt;
&lt;p&gt;We want the file_name column to bind to the name of the file we are importing, which means you need to change the Generator Output to File Name, the other columns are bound to the output that we need.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Bind the generator output to the columns, bind file_name to File Name, file_text to String Result and file_bin to Binary Result&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="182" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_7.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The end result should look like this:&lt;br&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="182" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_4.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Next step is to configure generators for the 3 columns that we assigned to the file bound generator. If you want shared-instancing to work you need to make sure that the generator configuration of all 3 columns assigned to the file bound generator is identical.&lt;/p&gt;
&lt;p&gt;Configuring the columns:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="268" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_5.png" width="364" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h1&gt;Step 5: Execute the Data Generation Plan&lt;/h1&gt;
&lt;p&gt;Now that we have configured the generators for all columns in the files table, we can generate some data, by executing the Data Generation Plan. Before we do this change the numbers of rows to be generated for the files table from 50 to 1000, to match the number of files we generated. Then hit F5, to execute the plan.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Step 6: Display the results&lt;/h1&gt;
&lt;p&gt;Once the executing is finished, open up the T-SQL editor and execute the following query.&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;   *&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt;     [dbo].[files]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;ORDER&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;BY&lt;/span&gt; [file_id]&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The results:&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_18.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="221" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_8.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;If you click on the first binary entry for file_id = 1 you will find that the filename in the binary content matches the file_name and file_text.&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_20.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="69" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/FileBoundGenerator_7724/image_thumb_9.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;The File Bound Generator allows you to load the content of files in to your database and the shared-instancing functionality makes sure that you can pull the absolute file path in to an other column in the same row when generating test data.&lt;/p&gt;
&lt;p&gt;-GertD&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7745790" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category><category domain="http://blogs.msdn.com/gertd/archive/tags/VSDB/default.aspx">VSDB</category><category domain="http://blogs.msdn.com/gertd/archive/tags/DataGeneration/default.aspx">DataGeneration</category></item><item><title>Data Generation Wizard</title><link>http://blogs.msdn.com/gertd/archive/2008/02/14/data-generation-wizard.aspx</link><pubDate>Fri, 15 Feb 2008 10:34:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7710006</guid><dc:creator>gertd</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/gertd/comments/7710006.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=7710006</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=7710006</wfw:comment><description>&lt;p&gt;One of the new features in the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio Team System 2008 Database Edition - Power Tools&lt;/a&gt; release is the addition of the Data Generation Wizard. The Data Generation Wizard is an item template wizard that allows you to create and configure a data generation plan by pointing it at an existing database, which has the same schema as the underlying database project, and configure each column inside each table with a sequential data bound generator. When finished you have a configured data generation plan that pulls all rows from the existing database in to your target database.&lt;/p&gt; &lt;p&gt;Lets step through the process.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Step 1: Add a new Data Generation plan using the Data Generation Wizard.&lt;/h1&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="388" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb.png" width="644" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Inside an existing database project, select Add... New Item... and select the "Data Generation Wizard" option. In this example I am using the good old trusted pubs database as my sample database.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Step 2: Launch the Data Generation Wizard&lt;/h1&gt; &lt;p&gt;Once you selected the Data Generation Wizard, you will get the main page of the wizard. Above you see the default state of the wizard.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Step 3: Select your source database&lt;/h1&gt; &lt;p&gt;The next step is to select the database that you want to pull the data from, in this example I am pulling from the pubs sample database. If you have not configured a connection to the specific target database, you can create one using the New Connection... option or you can change existing connection definitions using the Edit Connection... option.&lt;/p&gt; &lt;p&gt;Once you select the database there are a couple of options you can select or set, lets walk through these:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Set the number of rows to generate...&lt;br&gt;This option will configure the "Rows to Insert" value of data generation plan, to exactly the number of rows that are inside the source database.&lt;br&gt;&lt;/li&gt; &lt;li&gt;Replace the foreign key generator with values form the target database...&lt;br&gt;If you check this option the wizard will pull the foreign key values from the source database, instead of leveraging the foreign key data generator&lt;br&gt;&lt;/li&gt; &lt;li&gt;Number of failed rows...&lt;br&gt;This option configures the error threshold for the number of failures to be allowed before terminating the population of a table&lt;br&gt;&lt;/li&gt; &lt;li&gt;Number of failed tables...&lt;br&gt;This option configures the error threshold for the number of failures to be allowed before the terminating execution of the data generation plan&lt;br&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="497" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_2.png" width="644" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Step 4: Run the wizard&lt;/h1&gt; &lt;p&gt;When you hit OK, you will see a Status window which will display the progress information of the creation and configuration of the data generation plan.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="425" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_3.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Below you see the status information from creating the data generation plan for the pubs database.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" width="400" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="400"&gt; &lt;p&gt;Retrieving data from pubs.&lt;br&gt;Data retrieval complete.&lt;br&gt;Starting merge of data generation plan with database schema.&lt;br&gt;Completed.&lt;br&gt;Resetting all target row counts to match target database&lt;br&gt;Setting table [dbo].[authors] to 23 rows&lt;br&gt;Setting table [dbo].[discounts] to 3 rows&lt;br&gt;Setting table [dbo].[employee] to 43 rows&lt;br&gt;Setting table [dbo].[jobs] to 14 rows&lt;br&gt;Setting table [dbo].[pub_info] to 8 rows&lt;br&gt;Setting table [dbo].[publishers] to 8 rows&lt;br&gt;Setting table [dbo].[roysched] to 86 rows&lt;br&gt;Setting table [dbo].[sales] to 21 rows&lt;br&gt;Setting table [dbo].[stores] to 6 rows&lt;br&gt;Setting table [dbo].[titleauthor] to 25 rows&lt;br&gt;Setting table [dbo].[titles] to 18 rows&lt;br&gt;Populating columns with Sequential databound generator&lt;br&gt;Configuring table dbo.authors to be databound&lt;br&gt;Configuring table dbo.discounts to be databound&lt;br&gt;Configuring table dbo.employee to be databound&lt;br&gt;Configuring table dbo.jobs to be databound&lt;br&gt;Configuring table dbo.pub_info to be databound&lt;br&gt;Configuring table dbo.publishers to be databound&lt;br&gt;Configuring table dbo.roysched to be databound&lt;br&gt;Configuring table dbo.sales to be databound&lt;br&gt;Configuring table dbo.stores to be databound&lt;br&gt;Configuring table dbo.titleauthor to be databound&lt;br&gt;Configuring table dbo.titles to be databound&lt;br&gt;Saving to file 'c:\work\pubs\Data Generation Plans\DataTransformPlan1.dgen'&lt;br&gt;Completed&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;As you can conclude from the status output the wizard configures the data generation plan in two phases. First it configures the row counts and secondly in configures the generators for each column inside each table. If you did not select the option to propagate row counts the first phase will be skipped.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Step 5: The resulting data generation plan&lt;/h1&gt; &lt;p&gt;Now that the wizard is finished, lets look at the results. First we will look at the data generation plan. We will see that the row counts are configured for each respective table. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="356" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_4.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h1&gt;Step 6: The resulting column configuration&lt;/h1&gt; &lt;p&gt;If we look at the column configurations we see that in our example the foreign keys are generated using the foreign key generator and the other values are pulled from the database. Note that we are using the sequential databound generator, which support multi-instancing. This means that columns values are matched per row, the regular databound generator does not have this ability to correlate column values within a single row!&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="229" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_5.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h1&gt;Step 7: Running the generation plan&lt;/h1&gt; &lt;p&gt;Now that we have a data generation plan, lets runs it. We created a clean database from our project named pubs2 and we are going to generate straight in to this. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_14.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="325" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_6.png" width="644" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you are using the real pubs database you will find that this will fail. For a good reason, because the employee_insupd trigger inside the schema that will cause a rollback if the job id does not have a certain value. If you are using the default setting, the plan for the employee table will look like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_18.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="236" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_8.png" width="644" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;The job id foreign key generator is not configured correctly to satisfy the employee_insupd trigger. &lt;/p&gt; &lt;p&gt;If you selected the option "Replace the foreign key generator with values form the target database..." you plan for the employee table looks like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_20.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="236" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_9.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Note that the job_id column is also pulled from the database, so when you used that option you will satisfy the trigger and the plan will just work!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Step 8: Showing the results&lt;/h1&gt; &lt;p&gt;Now that we executed the plan, lets check the results, by opening up the T-SQL Editor and fire off a simple query "SELECT * FROM sales" to see if the content made it over.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="497" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/DataGenerationWizard_13D11/image_thumb_7.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h1&gt;Conclusion:&lt;/h1&gt; &lt;p&gt;The Data Generation Wizard allows you to quickly configure a data generation plan that pulls all rows from an existing SQL Server database. The wizard will only allow you to pull information from an SQL Server database, because the schema of the objects inside the database has to match the table inside the database project.&lt;/p&gt; &lt;p&gt;We hope this new feature saves you time!&lt;/p&gt; &lt;p&gt;-GertD&lt;br&gt;"DataDude" Group Engineering Manager &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7710006" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category><category domain="http://blogs.msdn.com/gertd/archive/tags/VSDB/default.aspx">VSDB</category></item><item><title>Visual Studio Team System 2008 Database Edition Power Tools</title><link>http://blogs.msdn.com/gertd/archive/2008/02/14/visual-studio-team-system-2008-database-edition-power-tools.aspx</link><pubDate>Fri, 15 Feb 2008 08:59:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7708596</guid><dc:creator>gertd</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/gertd/comments/7708596.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=7708596</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=7708596</wfw:comment><description>&lt;p&gt;The “DataDude” team is happy to announce the availability of the Power Tools for Visual Studio Team System 2008 Database Edition.  &lt;p&gt;The Power Tools for 2008 contains all the functionality we shipped in 2005 plus:  &lt;ul&gt; &lt;li&gt;Command line SQL Static Code Analysis execution through MSBuild, this was the biggest customer request, which is why I was holding the release. This enables SQL Static Code Analysis to be an integrated part of Team Build!  &lt;li&gt;Data Generation Wizard; this is another customer request where we allow users to create a new data generation plan by pointing at an existing database, the plan will be fully configured by the wizard to pull all data from the database using the Sequential Databound Generator. This way users can use an existing data set and only override columns which impose risks because of for example privacy concerns and save about half a day or more of configuring a data generation plan from scratch, one column at the time.  &lt;li&gt;File based data generator; this allows you to insert the content of files in to the database (works for string and binary, not for XML yet).  &lt;li&gt;XML based data generator; this allows you to generate XML based on an XSD (the XSD has to be provided as file right now, and cannot be selected from database or inherited from the data type).  &lt;li&gt;Unique Regular Expression generator; this adds the ability to generator unique values using the RegEx String generator. &lt;li&gt;Refactoring Command Generator has been made available as a MSBuild task for better project build integration so it can be made part of the pre-build and pre-deployment stages in the project. This allows users to automated the results of refactoring to some degree in to the project.  &lt;li&gt;We added two new test conditions for Database Unit Tests  &lt;ul&gt; &lt;li&gt;ChecksumCondition – Which you can use to verify that the checksum of the data set returned by a database unit test matches the checksum of an expected data set.  &lt;li&gt;ExpectedSchemaTestCondition – Which you use to verify that the column names and data types of the returned data set match expected values.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Download page:&lt;br&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&amp;amp;displaylang=en&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Installer download:&lt;br&gt;&lt;a href="http://download.microsoft.com/download/f/b/8/fb8d1c0d-c0c4-4004-ab86-12396b2a3ee3/VSTSDB2008PT.msi"&gt;http://download.microsoft.com/download/f/b/8/fb8d1c0d-c0c4-4004-ab86-12396b2a3ee3/VSTSDB2008PT.msi&lt;/a&gt;  &lt;p&gt;Documentation download:&lt;br&gt;&lt;a href="http://download.microsoft.com/download/f/b/8/fb8d1c0d-c0c4-4004-ab86-12396b2a3ee3/Power Tools 2008.doc"&gt;http://download.microsoft.com/download/f/b/8/fb8d1c0d-c0c4-4004-ab86-12396b2a3ee3/Power Tools 2008.doc&lt;/a&gt;  &lt;p&gt;&lt;b&gt;Happy Valentine’s day!&lt;/b&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;p&gt;&lt;b&gt;-GertD&lt;/b&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7708596" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category><category domain="http://blogs.msdn.com/gertd/archive/tags/VSDB/default.aspx">VSDB</category></item><item><title>Data Bound Generator vs. Sequential Data Bound Generator</title><link>http://blogs.msdn.com/gertd/archive/2007/09/04/data-bound-generator-vs-sequential-data-bound-generator.aspx</link><pubDate>Wed, 05 Sep 2007 08:48:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4756247</guid><dc:creator>gertd</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/gertd/comments/4756247.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=4756247</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=4756247</wfw:comment><description>&lt;p&gt;The Power Tools v1.0 release adds a new data generator, named the "Sequential Data Bound Generator". Since there already exists a data generator named the "Data Bound Generator" this yields the question what the difference is between the two is and when to use either one of them.&lt;/p&gt; &lt;h2&gt;Data Bound Generator&lt;/h2&gt; &lt;p&gt;The Data Bound Generator, takes the query you specified and uses it to fill a local dictionary. After query is execute, the results are used to fill a dictionary, the generator disconnects from the data source specified and randomly selects values from the dictionary and contributes the values to the column you bound the generator to. &lt;/p&gt; &lt;p&gt;This implies a couple of things:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The complete result set from the query has to fit in memory and is held in memory for the duration of the generation. (If this is not the case the data generator will fail with an out of memory error.)&lt;/li&gt; &lt;li&gt;The connection is only used to execute the query and fetch the results in to the dictionary, after that the connection is no longer used.&lt;/li&gt; &lt;li&gt;You cannot assign a distribution to the Data Bound Generator; the only pattern used to select from the dictionary is random. (This will get addressed in a later release, so you can specify a distribution to select from the dictionary using a statistical distribution pattern.)&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;Sequential Data Bound Generator&lt;/h2&gt; &lt;p&gt;The Sequential Data Bound Generator, takes the query you specified, executes the query and fetches &lt;strong&gt;one row at the time&lt;/strong&gt; and returns the value to the column bound to the generator. &lt;/p&gt; &lt;p&gt;This implies that:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Only a single row of the query is in memory at all times.&lt;/li&gt; &lt;li&gt;The connections used to execute the query and fetch the results is in use for the duration of the generation plan execution&lt;/li&gt; &lt;li&gt;The order in which values are returned are determined by the query statement, assuming you provides an ORDER BY clause in the query.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Both providers can connect to the same providers and are based on the same query execution code, only the way results are handled is different between the two.&lt;/p&gt; &lt;p&gt;I hope this explains the differences between the two providers and makes it easier to determine when to use which data generator.&lt;/p&gt; &lt;p&gt;-GertD&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4756247" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/VSDBPro/default.aspx">VSDBPro</category><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category></item><item><title>Channel 9 video Covering Power Tools &amp;amp; Service Release 1 Functionality</title><link>http://blogs.msdn.com/gertd/archive/2007/08/16/channel-9-video-covering-power-tools-and-service-release-1-functionality.aspx</link><pubDate>Fri, 17 Aug 2007 07:40:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4425410</guid><dc:creator>gertd</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/gertd/comments/4425410.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=4425410</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=4425410</wfw:comment><description>&lt;p&gt;Before I left for vacation, I did a quick video recording for Channel 9 together with Brian Keller showing off the new functionality in the&amp;nbsp;Visual Studio Team Edition for Database Professionals &lt;a href="http://go.microsoft.com/fwlink/?LinkId=88852 " target="_blank"&gt;Power Tools&lt;/a&gt; and &lt;a href="http://go.microsoft.com/fwlink/?LinkId=88853 " target="_blank"&gt;Service Release 1.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can find the video at this location &lt;a href="http://channel9.msdn.com/showpost.aspx?postid=334261"&gt;http://channel9.msdn.com/showpost.aspx?postid=334261&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Brian also released a video he did with Sachin Rekhi on "Offline Database Development", which you can find here &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=334518"&gt;http://channel9.msdn.com/Showpost.aspx?postid=334518&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Have fun,&lt;/p&gt; &lt;p&gt;-GertD&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4425410" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category></item><item><title>Power Tools Download Link</title><link>http://blogs.msdn.com/gertd/archive/2007/08/11/power-tools-download-link.aspx</link><pubDate>Sat, 11 Aug 2007 17:21:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4336312</guid><dc:creator>gertd</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/gertd/comments/4336312.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=4336312</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=4336312</wfw:comment><description>&lt;p&gt;They are here!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Dependency Viewer  &lt;li&gt;Refactoring  &lt;ul&gt; &lt;li&gt;Move Schema  &lt;li&gt;Expand Wildcard  &lt;li&gt;Fully Quality Name  &lt;li&gt;Refactor in to strongly typed DataSet&amp;nbsp;definitions  &lt;li&gt;Refactor Command Generator&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Data Generation  &lt;ul&gt; &lt;li&gt;Sequential Data Bound Generator  &lt;li&gt;Editors for the&amp;nbsp;Data Bound Generator, Sequential Data Bound Generator and RegEx String Generator to make configuration easier  &lt;li&gt;The RegEx editor also tries to interpret your CHECK CONSTRAINTs and create a matching RegEx expression that you can use to generate data values that match the constraint definition  &lt;li&gt;The RegEx editor can also be used for interactively defining and testing RegEx expressions and evaluate the output visually, which makes it a lot easier to create the right RegEx expression for your&amp;nbsp;value domain.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;MSBuild Tasks  &lt;ul&gt; &lt;li&gt;SqlSchemaCompareTask; allows you to compare schemas between two database from the command line using MSBuild.  &lt;li&gt;SqlDataCompareTask; allows you to compare the content of tables within two databases from the command line using MSBuild.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;T-SQL Static Code Analysis  &lt;li&gt;&amp;nbsp;Miscellaneous tools  &lt;ul&gt; &lt;li&gt;SQL script pre-processor command-line utility, which will expand all SQLCMD includes and variable definitions (sqlspp.exe)&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Schema Manager API&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;See &lt;a href="http://blogs.msdn.com/gertd/archive/2007/08/07/it-is-august-6th.aspx"&gt;http://blogs.msdn.com/gertd/archive/2007/08/07/it-is-august-6th.aspx&lt;/a&gt; for a more detailed explanation. &lt;p&gt;The Visual Studio Team Edition for Database Professionals first Power Tools release can be downloaded from the following location:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Power Tools download: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=88852"&gt;http://go.microsoft.com/fwlink/?LinkId=88852&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The Power Tools require that you have Service Release 1 installed, which you can download from the following location:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Service Release 1 download: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=88853"&gt;http://go.microsoft.com/fwlink/?LinkId=88853&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I will be offline for 3 weeks and I will pick up the blogging pace with lots of new posts when I am back after Labor day.&lt;/p&gt; &lt;p&gt;Later,&lt;br&gt;-GertD&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4336312" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/VSDBPro/default.aspx">VSDBPro</category><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category></item><item><title>What is in the Power Tools v1.0 release?</title><link>http://blogs.msdn.com/gertd/archive/2007/08/07/it-is-august-6th.aspx</link><pubDate>Tue, 07 Aug 2007 10:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4274283</guid><dc:creator>gertd</dc:creator><slash:comments>29</slash:comments><comments>http://blogs.msdn.com/gertd/comments/4274283.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gertd/commentrss.aspx?PostID=4274283</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gertd/rsscomments.aspx?PostID=4274283</wfw:comment><description>&lt;p&gt;For those of you who have been paying close attention, you know that August 6th is the date I promised the first Power Tools to be released. So where are they?&lt;/p&gt; &lt;p&gt;We are not there yet, we released the first release candidate today, I need to finish two more threat models and then we are ready to rock&amp;nbsp;&amp;amp; roll, so it will be this week, better be because I am going on vacation for 3 weeks and I promised my boss it will be done before I leave. So please be patient a little bit longer, it will not be long before you can enjoy these great new tools.&lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Which Tools?&lt;/h1&gt; &lt;p&gt;So here is a list of the new features and functionality we are adding,&amp;nbsp;most of these you have been asking us for, so here it is, no need to wait for a completely new release.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Dependency Viewer  &lt;li&gt;Refactoring  &lt;ul&gt; &lt;li&gt;Move Schema  &lt;li&gt;Expand Wildcard  &lt;li&gt;Fully Quality Name  &lt;li&gt;Refactor in to strongly typed DataSet&amp;nbsp;definitions  &lt;li&gt;Refactor Command Generator&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Data Generation  &lt;ul&gt; &lt;li&gt;Sequential Data Bound Generator  &lt;li&gt;Editors for the&amp;nbsp;Data Bound Generator, Sequential Data Bound Generator and RegEx String Generator to make configuration easier  &lt;li&gt;The RegEx editor also tries to interpret your CHECK CONSTRAINTs and create a matching RegEx expression that you can use to generate data values that match the constraint definition  &lt;li&gt;The RegEx editor can also be used for interactively defining and testing RegEx expressions and evaluate the output visually, which makes it a lot easier to create the right RegEx expression for your&amp;nbsp;value domain.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;MSBuild Tasks  &lt;ul&gt; &lt;li&gt;SqlSchemaCompareTask; allows you to compare schemas between two database from the command line using MSBuild.  &lt;li&gt;SqlDataCompareTask; allows you to compare the content of tables within two databases from the command line using MSBuild.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;T-SQL Static Code Analysis  &lt;li&gt;&amp;nbsp;Miscellaneous tools  &lt;ul&gt; &lt;li&gt;SQL script pre-processor command-line utility, which will expand all SQLCMD includes and variable definitions (sqlspp.exe)&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Schema Manager API&lt;/li&gt;&lt;/ul&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;A More Detailed Look&lt;/h1&gt; &lt;h2&gt;Dependency Viewer&lt;/h2&gt; &lt;p&gt;The Dependency Viewer is a new tool window that can be accesses by right clicking on a node inside Schema View and choosing the "View Dependencies" option. This will bring up the Dependency Viewer tool window. The dependency viewer shows the internal graph/dependency chain maintained internally, which is build up when we load the project and parse all the schema objects inside the project. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="140" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb.png"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The viewer shows which objects are "Referenced By" and "References" the object you selected. You can also drag objects in to the viewer, or continue to right click "View Dependencies" on objects, the viewer remembers which objects you selected. Right clicking on an object in the viewer will bring up an context menu that allows you to select the object inside "Solution Explorer", "Schema View" or open the object inside the T-SQL editor by using the "Open" command. The "Remove" command&amp;nbsp;will remove the object selected from the viewer (this will not remove it from the project), "Remove All" will remove all objects from the viewer. Refresh re-queries the internal schema manager for any updates.&lt;/p&gt; &lt;h2&gt;Refactoring&lt;/h2&gt; &lt;p&gt;Refactoring is a huge feature of VSDBPro! It really shows the abilities of the product and the power gained by understanding the relationships between all schema objects and the definitions of each schema object. When we shipped we purposely limited ourselves to rename refactoring, instead of adding more we added an extensibility mechanism&amp;nbsp;that allows&amp;nbsp;us to add new refactoring types and targets out-of-band, through Power Tools or other means. &lt;/p&gt; &lt;p&gt;So here is the first set of additions to refactoring:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_1.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_1.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_1.png" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_1.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h3&gt;New refactoring types&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Move Schema; this allows you to move an object between existing schemas  &lt;li&gt;Wildcard Expansion; this will take any SELECT * and convert it in to a properly defined column list, if the table or view is referenced through an alias we will use the alias the properly expand the column list otherwise we propend the fully qualified table or view name  &lt;li&gt;Fully Qualify Name; this will fully qualify each object reference,&amp;nbsp;this&amp;nbsp;disambiguates the your query statements completely&amp;nbsp;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;A new refactoring target&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;We are adding a new refactoring target, namely strongly type DataSet definitions. If you have a solution (.SLN) which contains a database project (.DBPROJ) and a VB.NET or C# project which itself contains a strongly type DataSet definition (which is an XSD at the end of the day), we will refactor in to the strongly type DataSet definition if the refactoring touches an object used in the DataSet.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_2.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_2.png" width="163" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_2.png"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In this example we have a solution with a C# project that references the Customers table, however the Last Name column contains a space which is inconsistent so we will use rename refactoring to remove the space.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_4.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_4.png" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_4.png"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If the&amp;nbsp;DataSet designer is open, refactoring will cause the following dialog to appear, notifying you we are going to evaluate the content of the&amp;nbsp;XSD.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_5.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_5.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="79" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_5.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_5.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The refactoring preview windows will show you the following results&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_6.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_6.png" width="237" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_6.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Note that the DataSet is not by default included as a refactoring target, you need to opt-in to propagate the changes in to the DataSet. When you select the DataSet we will only update the XSD, not your C# or VB.NET code, so your application will recompile and work, but for example text labels inside your code might be mismatched. Anyhow this is a great preview of where we are going with the product and our desire to bridge the gaps between the application and data tier developers.&lt;/p&gt; &lt;h3&gt;Refactoring Command Generator &lt;/h3&gt; &lt;p&gt;You might know that every time you perform a refactoring operation we create a log file, which describes the type of operation that you performed, on which object, what the exact change was and which other objects were affected. The log files live in the "Refactoring Logs" directory in your project directory, if you select "Show All Files" in "Solution Explore" you will see them as well.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_7.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_7.png" width="163" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_7.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;We added a tool to use these log files and extract useful information out of them. For example of you renamed an object the build system will not create a rename operation, since in time it can not distinct a DROP/ADD column of the same type from a renamed object. Using the refactoring logs we preserved the intend of the user. The Refactoring Command Generator tool will take these logs and create deployment statement that reflect the operation of the user. So a rename of a table or column will be reflect through sp_rename, a move schema will be reflected through a ALTER SCHEMA TRANFER.&lt;/p&gt; &lt;p&gt;The Refactor Command Generator is available through the standard refactoring context menu and through the Data-&amp;gt;Refactoring menu. There is also a command line version named RefactorCmdGen.exe which lives in the %ProgramFiles%\Microsoft Visual Studio 8\DBPro directory.&lt;/p&gt; &lt;h2&gt;Data Generation&lt;/h2&gt; &lt;p&gt;We added a new generator named the "Sequential Data Bound Generator", the big difference with the Data Bound Generator is that, this one only has a single row in memory at a given time and rows are dispatched in the order they are retrieved from the query results. The Data Bound Generator uses the query to fill a dictionary, holds this in memory for the duration of the generation and randomly select values from the dictionary.&lt;/p&gt; &lt;p&gt;To make configuration of the hardest generators a bit easier we added editors for the&amp;nbsp;Data Bound, Sequential Data Bound and RegEx String generators. The editor manifest themselves by adding ... at the end of the row in the Column Details window.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_8.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="73" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_8.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_8.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The data bound generator share the same editor, which allows you to select the connection and enter the query (sorry no query builder yet).&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_9.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_9.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="140" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_9.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_9.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The RegEx editor is more advanced.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_10.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="223" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_10.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_10.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;It shows the expression and creates sample output, so you can validate the results. You can also select from a set of predefined expressions and add your own. The editor is also capable of interpreting CHECK CONSTAINTS and propose a matching expression that meets the value domain definition defined by the constraint. &lt;/p&gt; &lt;h2&gt;MSBuild Tasks&lt;/h2&gt; &lt;p&gt;We added two MSBuild tasks to perform schema and data comparisons from the command line. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;SqlSchemaCompareTask; allows you to compare schemas between two databases.  &lt;li&gt;SqlDataCompareTask; allows you to compare the content of tables and views within two databases .&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;T-SQL Static Code Analysis&lt;/h2&gt; &lt;p&gt;One of the biggest features we are adding is T-SQL Static Code Analysis, like refactoring it build on top of our ability that we fully understand all object definitions and relationships, which allows us to perform cross cutting analysis over your schema. For example we can detect that a column is defined as an INT, a variable of a stored procedure as REAL and that you are assigning the column value to the variable, therefore incurring the cost of an implicit conversion. Rule: "SR0014: Maintain data type compatibility" will warn you for these kind of occurrences. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_11.png" mce_href="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_11.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="121" alt="image" src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_11.png" width="240" border="0" mce_src="http://blogs.msdn.com/blogfiles/gertd/WindowsLiveWriter/ItisAugust6th_14A69/image_thumb_11.png"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can configure the rules used in the new&amp;nbsp;project property page named "Static Analysis", you can determine which rules to include and if you want to threat them as warnings or errors. You can suppress warnings/errors by right clicking on the line in the Error List, and choosing Suppress Message(s), this will add the objects in to an XML file named StaticCodeAnalysis.SuppressMessages.xml which is added to your project when you add the first suppression. In order to run the static code analysis, you choose Data-&amp;gt;Static Code Analysis-&amp;gt;Run. This will run each rule selected and report the results in the Error List.&lt;/p&gt; &lt;p&gt;In the current implementation we do not allow you to write your&amp;nbsp;own rules, in the Rosario release&amp;nbsp;this will&amp;nbsp;be enabled, for now send me email through the link in this blog to make your desired rules known. We will update them frequently, right now we have about 82 rules defined, you find the first 15 in this release, we have about 15 more to come to you shortly.&amp;nbsp;An other limitation is that you can only run static code analysis from the IDE, there is no command line or MSBuild equivalent, this will also be solved in the Rosario release.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Miscellaneous tools&lt;/h2&gt; &lt;p&gt;In order to use build scripts generated with VSDBPro with tools that do not understand SQLCMD variables and or include file, we added a simple command line tool that pre-processes SQL scripts and expand all includes (:r) and SQLCMD variable references. (sqlspp.exe)&lt;/p&gt; &lt;h2&gt;Schema Manager API&lt;/h2&gt; &lt;p&gt;&amp;nbsp;The last part of the Power Tools is a small but very powerful API that provides access to the internals of the system, called the Schema Manager. This API can be used to add, update, delete schema objects to the system, to enumerate schema objects and files. This API is used by Computer Associates (CA) to integrate ERWin 7.2 with VSDBPro so you can make changes in ERWin and store them schema definition inside a database project. See &lt;a title="http://ca.com/us/content/campaign.aspx?cid=144449" href="http://ca.com/us/content/campaign.aspx?cid=144449" mce_href="http://ca.com/us/content/campaign.aspx?cid=144449"&gt;http://ca.com/us/content/campaign.aspx?cid=144449&lt;/a&gt;&amp;nbsp;for more details on the ERWin integration.&lt;/p&gt; &lt;p&gt;That is it! &lt;br&gt;&lt;br&gt;I hope there is something in here you like, please continue to send me your feedback, good or bad.&lt;/p&gt; &lt;p&gt;Thanks,&lt;br&gt;-GertD&lt;br&gt;"DataDude" Software Architect&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4274283" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gertd/archive/tags/VSDBPro/default.aspx">VSDBPro</category><category domain="http://blogs.msdn.com/gertd/archive/tags/PowerTools/default.aspx">PowerTools</category><category domain="http://blogs.msdn.com/gertd/archive/tags/tsbt-db/default.aspx">tsbt-db</category></item></channel></rss>