<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.sqlteam.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>SQL Server Blogs - SQLTeam.com</title><link>http://weblogs.sqlteam.com/mainfeed2.aspx</link><description /><generator>Subtext Version 2.5.1.0</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.sqlteam.com/SqlteamcomWeblogs" /><feedburner:info uri="sqlteamcomweblogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Why to avoid SELECT * from tables in your Views</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/X6Z2qVnSMfQ/why-to-avoid-select-from-tables-in-your-views.aspx</link><pubDate>Fri, 11 May 2012 14:10:51 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/jeffs/archive/2012/05/11/why-to-avoid-select-from-tables-in-your-views.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/jeffs/comments/61412.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/jeffs/comments/commentRss/61412.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/jeffs/archive/2012/05/11/why-to-avoid-select-from-tables-in-your-views.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/jeffs/services/trackbacks/61412.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/jeffs/rss.aspx">Why to avoid SELECT * from tables in your Views</source><description>&lt;font face="Courier New"&gt;
&lt;p&gt; -- clean up any messes left over from before:&lt;br /&gt;
if OBJECT_ID('AllTeams') is not null&lt;br /&gt;
 drop view AllTeams&lt;br /&gt;
go&lt;/p&gt;
&lt;p&gt;if OBJECT_ID('Teams') is not null&lt;br /&gt;
 drop table Teams&lt;br /&gt;
go&lt;/p&gt;
&lt;p&gt;-- sample table:&lt;br /&gt;
create table Teams&lt;br /&gt;
(&lt;br /&gt;
 id int primary key,&lt;br /&gt;
 City varchar(20),&lt;br /&gt;
 TeamName varchar(20)&lt;br /&gt;
)&lt;/p&gt;
&lt;p&gt;go&lt;/p&gt;
&lt;p&gt;-- sample data:&lt;br /&gt;
insert into Teams (id, City, TeamName )&lt;br /&gt;
select 1,'Boston','Red Sox' union all&lt;br /&gt;
select 2,'New York','Yankees'&lt;/p&gt;
&lt;p&gt;go&lt;/p&gt;
&lt;p&gt;create view AllTeams&lt;br /&gt;
as&lt;br /&gt;
 select * from Teams&lt;/p&gt;
&lt;p&gt;go&lt;/p&gt;
&lt;p&gt;select * from AllTeams &lt;/p&gt;
&lt;p&gt;--Results:&lt;br /&gt;
--&lt;br /&gt;
--id          City                 TeamName&lt;br /&gt;
------------- -------------------- --------------------&lt;br /&gt;
--1           Boston               Red Sox&lt;br /&gt;
--2           New York             Yankees&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
-- Now, add a new column to the Teams table:&lt;/p&gt;
&lt;p&gt;alter table Teams&lt;br /&gt;
add League varchar(10)&lt;br /&gt;
go&lt;/p&gt;
&lt;p&gt;-- put some data in there:&lt;br /&gt;
update Teams&lt;br /&gt;
set League='AL'&lt;/p&gt;
&lt;p&gt;-- run it again&lt;/p&gt;
&lt;p&gt;select * from AllTeams &lt;/p&gt;
&lt;p&gt;--Results:&lt;br /&gt;
--&lt;br /&gt;
--id          City                 TeamName&lt;br /&gt;
------------- -------------------- --------------------&lt;br /&gt;
--1           Boston               Red Sox&lt;br /&gt;
--2           New York             Yankees&lt;/p&gt;
&lt;p&gt;-- Notice that League is not displayed!&lt;/p&gt;
&lt;p&gt;-- Here's an even worse scenario, when the table gets altered in ways beyond adding columns:&lt;br /&gt;
drop table Teams &lt;br /&gt;
go&lt;/p&gt;
&lt;p&gt;-- recreate table putting the League column before the City:&lt;br /&gt;
-- (i.e., simulate re-ordering and/or inserting a column)&lt;br /&gt;
create table Teams&lt;br /&gt;
(&lt;br /&gt;
 id int primary key,&lt;br /&gt;
 League varchar(10),&lt;br /&gt;
 City varchar(20),&lt;br /&gt;
 TeamName varchar(20)&lt;br /&gt;
)&lt;br /&gt;
go&lt;/p&gt;
&lt;p&gt;-- put in some data:&lt;br /&gt;
insert into Teams (id,League,City,TeamName)&lt;br /&gt;
select 1,'AL','Boston','Red Sox' union all&lt;br /&gt;
select 2,'AL','New York','Yankees'&lt;/p&gt;
&lt;p&gt;-- Now, Select again for our view:&lt;br /&gt;
select * from AllTeams &lt;/p&gt;
&lt;p&gt;--Results:&lt;br /&gt;
--&lt;br /&gt;
--id          City       TeamName&lt;br /&gt;
------------- ---------- --------------------&lt;br /&gt;
--1           AL         Boston&lt;br /&gt;
--2           AL         New York&lt;/p&gt;
&lt;p&gt;-- The column labeled "City" in the View is actually the League, and the column labelled TeamName is actually the City!&lt;/p&gt;
&lt;p&gt;go&lt;br /&gt;
-- clean up:&lt;br /&gt;
drop view AllTeams&lt;br /&gt;
drop table Teams &lt;br /&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;img src="http://weblogs.sqlteam.com/jeffs/aggbug/61412.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X6Z2qVnSMfQ:P6Rtf_uMCBE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X6Z2qVnSMfQ:P6Rtf_uMCBE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X6Z2qVnSMfQ:P6Rtf_uMCBE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=X6Z2qVnSMfQ:P6Rtf_uMCBE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X6Z2qVnSMfQ:P6Rtf_uMCBE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=X6Z2qVnSMfQ:P6Rtf_uMCBE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X6Z2qVnSMfQ:P6Rtf_uMCBE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X6Z2qVnSMfQ:P6Rtf_uMCBE:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X6Z2qVnSMfQ:P6Rtf_uMCBE:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/X6Z2qVnSMfQ" height="1" width="1"/&gt;</description><dc:creator>Jeff Smith</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/jeffs/archive/2012/05/11/why-to-avoid-select-from-tables-in-your-views.aspx</feedburner:origLink></item><item><title>ClearTrace Performance on 170GB of Trace Files</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/gET_nz7_UNU/cleartrace-performance-on-170gb-of-trace-files.aspx</link><pubDate>Thu, 26 Apr 2012 12:22:29 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/billg/archive/2012/04/26/cleartrace-performance-on-170gb-of-trace-files.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/billg/comments/61411.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/billg/comments/commentRss/61411.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/billg/archive/2012/04/26/cleartrace-performance-on-170gb-of-trace-files.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/billg/services/trackbacks/61411.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/billg/rss.aspx">ClearTrace Performance on 170GB of Trace Files</source><description>&lt;p&gt;I’ve always worked to make ClearTrace perform well.  That’s probably because I spend so much time watching it work.  I’m often going through two or three gigabytes of trace files but I rarely get the chance to run it on a really large set of files.&lt;/p&gt;  &lt;p&gt;One of my clients wanted to run a full trace for a week and then analyze the results.  At the end of that week we had 847 200MB trace files for a total of nearly 170GB.&lt;/p&gt;  &lt;p&gt;I regularly use 200MB trace files when I monitor production systems.  I usually get around 300,000 statements in a file that size if it’s mostly stored procedures.  So those 847 trace files contained roughly 250 million statements.  (That’s 730 bytes per statement if you’re keeping track.  Newer trace files have some compression in them but I’m not exactly sure what they’re doing.)  On a system running 1,000 statements per second I get a new file every five minutes or so.&lt;/p&gt;  &lt;p&gt;It took 27 hours to process these files on an older development box.  That works out to 1.77MB/second.  That means ClearTrace processed about 2,654 statements per second. You can query the data while you’re loading it but I’ve found it works better to use a second instance of ClearTrace to do this.  I’m not sure why yet but I think there’s still some dependency between the two processes. &lt;/p&gt;  &lt;p&gt;ClearTrace is almost always CPU bound.  It’s really just a huge, ugly collection of regular expressions.  It only writes a summary to its database at the end of each trace file so that usually isn’t a bottleneck.  At the end of this process, the executable was using roughly 435MB of RAM.  Certainly more than when it started but I think that’s acceptable.&lt;/p&gt;  &lt;p&gt;The database where all this is stored started out at 100MB.  After processing 170GB of trace files the database had grown to 203MB.  The space savings are due to the “datawarehouse-ish” design and only storing a summary of each trace file.&lt;/p&gt;  &lt;p&gt;You can download &lt;a href="http://www.scalesql.com/cleartrace/"&gt;ClearTrace&lt;/a&gt; for SQL Server 2008 or test out the &lt;a href="http://www.scalesql.com/cleartrace/ClearTrace.2012.40.beta.zip"&gt;beta version for SQL Server 2012&lt;/a&gt;.  Happy Tuning!&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/billg/aggbug/61411.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=gET_nz7_UNU:1f76L4kp4vc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=gET_nz7_UNU:1f76L4kp4vc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=gET_nz7_UNU:1f76L4kp4vc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=gET_nz7_UNU:1f76L4kp4vc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=gET_nz7_UNU:1f76L4kp4vc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=gET_nz7_UNU:1f76L4kp4vc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=gET_nz7_UNU:1f76L4kp4vc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=gET_nz7_UNU:1f76L4kp4vc:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=gET_nz7_UNU:1f76L4kp4vc:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/gET_nz7_UNU" height="1" width="1"/&gt;</description><dc:creator>Bill Graziano</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/billg/archive/2012/04/26/cleartrace-performance-on-170gb-of-trace-files.aspx</feedburner:origLink></item><item><title>ClearTrace Beta for SQL Server 2012</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/-i9jwPSH8Gw/cleartrace-beta-for-sql-server-2012.aspx</link><pubDate>Wed, 25 Apr 2012 13:10:40 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/billg/archive/2012/04/25/cleartrace-beta-for-sql-server-2012.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/billg/comments/61410.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/billg/comments/commentRss/61410.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/billg/archive/2012/04/25/cleartrace-beta-for-sql-server-2012.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/billg/services/trackbacks/61410.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/billg/rss.aspx">ClearTrace Beta for SQL Server 2012</source><description>&lt;p&gt;I have a beta version of ClearTrace that supports 2012.  You can download it at &lt;a href="http://www.scalesql.com/cleartrace/ClearTrace.2012.40.beta.zip"&gt;http://www.scalesql.com/cleartrace/ClearTrace.2012.40.beta.zip&lt;/a&gt;.  Please let me know if you find any issues.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/billg/aggbug/61410.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-i9jwPSH8Gw:kk04w--ojLs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-i9jwPSH8Gw:kk04w--ojLs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-i9jwPSH8Gw:kk04w--ojLs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=-i9jwPSH8Gw:kk04w--ojLs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-i9jwPSH8Gw:kk04w--ojLs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=-i9jwPSH8Gw:kk04w--ojLs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-i9jwPSH8Gw:kk04w--ojLs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-i9jwPSH8Gw:kk04w--ojLs:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-i9jwPSH8Gw:kk04w--ojLs:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/-i9jwPSH8Gw" height="1" width="1"/&gt;</description><dc:creator>Bill Graziano</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/billg/archive/2012/04/25/cleartrace-beta-for-sql-server-2012.aspx</feedburner:origLink></item><item><title>The 5 stages reviewing bad TSQL</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/LW9Reyw2TSM/the-5-stages-reviewing-bad-tsql-again.aspx</link><pubDate>Mon, 16 Apr 2012 19:56:10 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/mikef/archive/2012/04/16/the-5-stages-reviewing-bad-tsql-again.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/mikef/comments/61409.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/mikef/comments/commentRss/61409.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/mikef/archive/2012/04/16/the-5-stages-reviewing-bad-tsql-again.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/mikef/services/trackbacks/61409.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/mikef/rss.aspx">The 5 stages reviewing bad TSQL</source><description>&lt;strong&gt;&lt;p&gt;&lt;strong&gt;&lt;h4&gt;I'm working with an app team that is light on TSQL expertise this week and couldn't help but draw a parallel to the 5 stages of grieving. &lt;/h4&gt; &lt;/strong&gt;&lt;/p&gt;&lt;/strong&gt; &lt;ol&gt;   &lt;li&gt;Denial: There’s nothing wrong with the code SQL Server has a bug in it. There is a network problem.&lt;/li&gt;    &lt;li&gt;Anger: You’re doing what in your code?! Why on earth are you doing that? That’s crazy.&lt;/li&gt;    &lt;li&gt;Bargaining: Fine you can keep your cursor but let’s speed things up a bit.&lt;/li&gt;    &lt;li&gt;Depression: Ugh, this is so horrible I’m never going to be able to fix all of it.&lt;/li&gt;    &lt;li&gt;Acceptance: Ok, we’re screwed and we know we’re screwed. This is going to hurt…&lt;/li&gt; &lt;/ol&gt;&lt;img src="http://weblogs.sqlteam.com/mikef/aggbug/61409.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=LW9Reyw2TSM:cT0U4pAjUqc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=LW9Reyw2TSM:cT0U4pAjUqc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=LW9Reyw2TSM:cT0U4pAjUqc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=LW9Reyw2TSM:cT0U4pAjUqc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=LW9Reyw2TSM:cT0U4pAjUqc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=LW9Reyw2TSM:cT0U4pAjUqc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=LW9Reyw2TSM:cT0U4pAjUqc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=LW9Reyw2TSM:cT0U4pAjUqc:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=LW9Reyw2TSM:cT0U4pAjUqc:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/LW9Reyw2TSM" height="1" width="1"/&gt;</description><dc:creator>Mike Femenella</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/mikef/archive/2012/04/16/the-5-stages-reviewing-bad-tsql-again.aspx</feedburner:origLink></item><item><title>Unhelpful Help</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/fx3xG5zN2BU/unhelpful-help.aspx</link><pubDate>Tue, 03 Apr 2012 17:42:22 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/geoffh/archive/2012/04/03/unhelpful-help.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/geoffh/comments/61407.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/geoffh/comments/commentRss/61407.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/geoffh/archive/2012/04/03/unhelpful-help.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/geoffh/services/trackbacks/61407.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/geoffh/rss.aspx">Unhelpful Help</source><description>&lt;p&gt;Up until SQL 2012, I recommended installing Books On-Line (BOL) anywhere you installed SQL Server.  It made looking up reference information simpler, especially when you were on a server that didn’t have direct Internet access.  That all changed today.  I started the new Help Viewer with a local copy of BOL.  I actually found what I was looking for and closed the app.  Or so I thought.  Then I noticed something.  A little parasite had attached itself to my system.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/Unhelpful-Help_BE5B/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/Unhelpful-Help_BE5B/image_thumb_1.png" width="125" height="76" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Yep, the “Help” system left an “agent” behind.  Now I shouldn’t have to tell you that running application helper agents on server platforms is a bad idea.  And it gets worse.  There is no way to configure the app so that it does NOT start the &lt;strike&gt;parasite&lt;/strike&gt; agent each time you restart help.  So the solution becomes do not install help on production server platforms.  Which is pretty unhelpful.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/geoffh/aggbug/61407.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=fx3xG5zN2BU:1jpU1edUjPE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=fx3xG5zN2BU:1jpU1edUjPE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=fx3xG5zN2BU:1jpU1edUjPE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=fx3xG5zN2BU:1jpU1edUjPE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=fx3xG5zN2BU:1jpU1edUjPE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=fx3xG5zN2BU:1jpU1edUjPE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=fx3xG5zN2BU:1jpU1edUjPE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=fx3xG5zN2BU:1jpU1edUjPE:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=fx3xG5zN2BU:1jpU1edUjPE:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/fx3xG5zN2BU" height="1" width="1"/&gt;</description><dc:creator>Geoff N. Hiten</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/geoffh/archive/2012/04/03/unhelpful-help.aspx</feedburner:origLink></item><item><title>BIDS Helper 1.6 Beta released!</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/hgG-F5rYIsA/bids-helper-1-6-beta-released.aspx</link><pubDate>Mon, 02 Apr 2012 12:42:00 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/lucaz/archive/2012/04/02/bids-helper-1-6-beta-released.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/lucaz/comments/61406.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/lucaz/comments/commentRss/61406.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/lucaz/archive/2012/04/02/bids-helper-1-6-beta-released.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/lucaz/services/trackbacks/61406.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/lucaz/rss.aspx">BIDS Helper 1.6 Beta released!</source><description>&lt;p&gt;A new version of this fantastic tool, used by Microsoft BI Stack developers, is out. Now it’s compatible with SQL Server 2012.&lt;/p&gt;  &lt;p&gt;In this &lt;a href="http://prologika.com/CS/blogs/blog/archive/2012/03/20/bids-helper-1-6-beta-released.aspx" target="_blank"&gt;post&lt;/a&gt;, Teo Lachev gives us more details.&lt;/p&gt;  &lt;p&gt;This is the project’s &lt;a href="http://bidshelper.codeplex.com/" target="_blank"&gt;Home&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/lucaz/aggbug/61406.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=hgG-F5rYIsA:Kbv6Tvhctp8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=hgG-F5rYIsA:Kbv6Tvhctp8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=hgG-F5rYIsA:Kbv6Tvhctp8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=hgG-F5rYIsA:Kbv6Tvhctp8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=hgG-F5rYIsA:Kbv6Tvhctp8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=hgG-F5rYIsA:Kbv6Tvhctp8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=hgG-F5rYIsA:Kbv6Tvhctp8:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=hgG-F5rYIsA:Kbv6Tvhctp8:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=hgG-F5rYIsA:Kbv6Tvhctp8:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/hgG-F5rYIsA" height="1" width="1"/&gt;</description><dc:creator>Luca Zavarella</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/lucaz/archive/2012/04/02/bids-helper-1-6-beta-released.aspx</feedburner:origLink></item><item><title>SQLBits - Unicode Porn</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/X1m_i_g51Rk/sqlbits-unicode-porn.aspx</link><pubDate>Sat, 31 Mar 2012 16:25:28 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/robv/archive/2012/03/31/sqlbits-unicode-porn.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/robv/comments/61404.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61404.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/robv/archive/2012/03/31/sqlbits-unicode-porn.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61404.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/robv/rss.aspx">SQLBits - Unicode Porn</source><description>We've just finished up a fantastic event at &lt;a href="javascript:void(0);/*1333211061666*/"&gt;SQLBits X&lt;/a&gt; in London!  If you've never been to SQLBits and you can make it to the UK, I highly recommend it.  If you didn't attend, &lt;a href="javascript:void(0);/*1333211089713*/"&gt;here's what you missed&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Meanwhile, for those who attended the Lightning Talk sessions and were disappointed that I ran out of time, here's the last part that you would have seen:&lt;br /&gt;
&lt;br /&gt;
/*    How to Lose Friends and Irritate People...With Unicode!&lt;br /&gt;
    Rob Volk&lt;br /&gt;
    SQLBits X - London - March 31, 2012&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
-- some sexy SQL&lt;br /&gt;
DECLARE @oohbaby TABLE(i INT NOT NULL UNIQUE,&lt;br /&gt;
uni_char AS NCHAR(i),&lt;br /&gt;
hex AS CAST(i AS BINARY(2)))&lt;br /&gt;
INSERT @oohbaby VALUES(664),(1022),(1023),(1120),(1150),(8857),(11609),(42420),(42427)&lt;br /&gt;
&lt;br /&gt;
-- change results font to larger size, some only work in grid font&lt;br /&gt;
SELECT * FROM @oohbaby&lt;br /&gt;
&lt;br /&gt;
SELECT NCHAR(1022) + NCHAR(1023) AS Page3Girl&lt;br /&gt;
&lt;br /&gt;
It's probably better that you run this yourself, in the privacy of your own home/office, you know *wink* *wink* *nudge* *nudge* *say no more*&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61404.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X1m_i_g51Rk:REIfidRrpno:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X1m_i_g51Rk:REIfidRrpno:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X1m_i_g51Rk:REIfidRrpno:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=X1m_i_g51Rk:REIfidRrpno:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X1m_i_g51Rk:REIfidRrpno:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=X1m_i_g51Rk:REIfidRrpno:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X1m_i_g51Rk:REIfidRrpno:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X1m_i_g51Rk:REIfidRrpno:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X1m_i_g51Rk:REIfidRrpno:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/X1m_i_g51Rk" height="1" width="1"/&gt;</description><dc:creator>Most Valuable Yak (Rob Volk)</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/robv/archive/2012/03/31/sqlbits-unicode-porn.aspx</feedburner:origLink></item><item><title>Update to SQL Server Configuration Scripting Utility</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/Qm2wXA1rjdE/update-to-sql-server-configuration-scripting-utility.aspx</link><pubDate>Mon, 12 Mar 2012 00:49:20 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/billg/archive/2012/03/11/update-to-sql-server-configuration-scripting-utility.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/billg/comments/61403.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/billg/comments/commentRss/61403.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/billg/archive/2012/03/11/update-to-sql-server-configuration-scripting-utility.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://weblogs.sqlteam.com/billg/services/trackbacks/61403.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/billg/rss.aspx">Update to SQL Server Configuration Scripting Utility</source><description>&lt;p&gt;Last spring I released a utility to &lt;a href="http://scriptsqlconfig.codeplex.com/"&gt;script SQL Server configuration&lt;/a&gt; information on CodePlex.  I’ve been making small changes in this application as my needs have changed.  The application is a .NET 2.0 console application.  &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/billg/Windows-Live-Writer/Update-to-SQL-Server-Configuration-Scrip_112AE/script-output_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 12px 12px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="script-output" border="0" alt="script-output" align="right" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/billg/Windows-Live-Writer/Update-to-SQL-Server-Configuration-Scrip_112AE/script-output_thumb.png" width="409" height="164" /&gt;&lt;/a&gt;This utility serves two needs for me.  First it helps with disaster recovery.  All server level objects (logins, jobs, linked servers, audits) are scripted to a single file per object type.  This enables the scripts to be easily run against a DR server.  If these are checked into source control you can view the history of the script and find out what changed and when.&lt;/p&gt;  &lt;p&gt;The second goal is to capture what changed inside a database.  Objects inside a database (tables, stored procedures, views, etc.) are each scripted to their own file.  This makes it easier to track the changes to an object over time.  This does include permissions and role membership so you can capture security changes.  My assumption is that a database backup is the primary method of disaster recovery for databases so this utility is designed to capture changes to objects.  &lt;/p&gt;  &lt;p&gt;You can find the full list of changes from the original on the &lt;a href="http://scriptsqlconfig.codeplex.com/releases/view/84033"&gt;Downloads&lt;/a&gt; page on CodePlex.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/billg/aggbug/61403.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=Qm2wXA1rjdE:LIfeKDAz24I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=Qm2wXA1rjdE:LIfeKDAz24I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=Qm2wXA1rjdE:LIfeKDAz24I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=Qm2wXA1rjdE:LIfeKDAz24I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=Qm2wXA1rjdE:LIfeKDAz24I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=Qm2wXA1rjdE:LIfeKDAz24I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=Qm2wXA1rjdE:LIfeKDAz24I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=Qm2wXA1rjdE:LIfeKDAz24I:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=Qm2wXA1rjdE:LIfeKDAz24I:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/Qm2wXA1rjdE" height="1" width="1"/&gt;</description><dc:creator>Bill Graziano</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/billg/archive/2012/03/11/update-to-sql-server-configuration-scripting-utility.aspx</feedburner:origLink></item><item><title>How to Manage Technical Employees</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/XMhZetHQjnE/how-to-manage-technical-employees.aspx</link><pubDate>Fri, 02 Mar 2012 06:28:45 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/markc/archive/2012/03/01/how-to-manage-technical-employees.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/markc/comments/61402.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/markc/comments/commentRss/61402.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/markc/archive/2012/03/01/how-to-manage-technical-employees.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/markc/services/trackbacks/61402.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/markc/rss.aspx">How to Manage Technical Employees</source><description>&lt;p&gt;In my current position as Software Engineering Manager I have been through a lot of ups and downs with staffing, ranging from laying-off everyone who was on my team as we went through the great economic downturn in 2007-2008, to numerous rounds of interviewing and hiring contractors, full-time employees, and converting some contractors to employee status.  I have not yet blogged much about my experiences, but I plan to do that more in the next few months.  But before I do that, let me point you to a great article that somebody else wrote on &lt;a href="http://www.computerworld.com/s/article/print/9137708/Opinion_The_unspoken_truth_about_managing_geeks" target="_blank"&gt;The Unspoken Truth About Managing Geeks&lt;/a&gt; that really hits the target.  If you are a non-technical person who manages technical employees, you definitely have to read that article.  And if you are a technical person who has been promoted into management, this article can really help you do your job and communicate up the line of command about your team.  When you move into management with all the new and different demands put on you, it is easy to forget how things work in the tech subculture, and to lose touch with your team.  This article will help you remember what’s going on behind the scenes and perhaps explain why people who used to get along great no longer are, or why things seem to have changed since your promotion.&lt;/p&gt;  &lt;p&gt;I have to give credit to Andy Leonard (&lt;a href="http://sqlblog.com/blogs/andy_leonard/default.aspx" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/andyleonard" target="_blank"&gt;twitter&lt;/a&gt;) for helping me find that article.  I have been reading his &lt;a href="http://sqlblog.com/blogs/andy_leonard/archive/2011/04/06/managing-technical-teams-series-landing-page.aspx" target="_blank"&gt;series of ramble-rants on managing tech teams&lt;/a&gt;, and the above article is linked in the first rant in the series, entitled &lt;a href="http://sqlblog.com/blogs/andy_leonard/archive/2009/12/30/goodwill-negative-and-positive.aspx" target="_blank"&gt;Goodwill, Negative and Positive&lt;/a&gt;.  I have read a handful of his entries in this series and so far I pretty much agree with everything he has said, so of course I would encourage you to read through that series, too.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/markc/aggbug/61402.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XMhZetHQjnE:HKJg3QCPnEQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XMhZetHQjnE:HKJg3QCPnEQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XMhZetHQjnE:HKJg3QCPnEQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=XMhZetHQjnE:HKJg3QCPnEQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XMhZetHQjnE:HKJg3QCPnEQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=XMhZetHQjnE:HKJg3QCPnEQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XMhZetHQjnE:HKJg3QCPnEQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XMhZetHQjnE:HKJg3QCPnEQ:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XMhZetHQjnE:HKJg3QCPnEQ:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/XMhZetHQjnE" height="1" width="1"/&gt;</description><dc:creator>Ajarn Mark Caldwell</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/markc/archive/2012/03/01/how-to-manage-technical-employees.aspx</feedburner:origLink></item><item><title>New release of &amp;quot;OLAP PivotTable Extensions&amp;quot;</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/30PcTd9rMsg/new-release-of-quotolap-pivottable-extensionsquot.aspx</link><pubDate>Mon, 06 Feb 2012 11:20:16 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/lucaz/archive/2012/02/06/new-release-of-quotolap-pivottable-extensionsquot.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/lucaz/comments/61400.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/lucaz/comments/commentRss/61400.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/lucaz/archive/2012/02/06/new-release-of-quotolap-pivottable-extensionsquot.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/lucaz/services/trackbacks/61400.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/lucaz/rss.aspx">New release of &amp;quot;OLAP PivotTable Extensions&amp;quot;</source><description>&lt;p&gt;For those who are not familiar with this add-in, the &lt;em&gt;OLAP PivotTable Extensions &lt;/em&gt;add features of interest to Excel 2007 or 2010 PivotTables pointing to an OLAP cube in Analysis Services. One of these features I like very much, is to know the MDX query code associated with the pivot used at that time in Excel:&lt;/p&gt;  &lt;p&gt;&lt;img alt="AvgTaxMDX2.png" src="http://i3.codeplex.com/Download?ProjectName=OlapPivotTableExtend&amp;amp;DownloadId=287708" /&gt;&lt;/p&gt;  &lt;p&gt;You can find all the details here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://olappivottableextend.codeplex.com/"&gt;http://olappivottableextend.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It was recently released a new version of the add-in (version 0.7.4), which does not introduce any new features, but fixes a significant bug:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Release 0.7.4 now properly handles languages but introduces no new features. International users who run a different Windows language than their Excel UI language may be receiving an error message when they double click a cell and perform drillthrough which reads: "&lt;/em&gt;&lt;a href="http://olappivottableextend.codeplex.com/workitem/22100"&gt;&lt;em&gt;XML for Analysis parser: The LocaleIdentifier property is not overwritable and cannot be assigned a new value&lt;/em&gt;&lt;/a&gt;&lt;em&gt;". This error was caused by OLAP PivotTable Extensions in some situations, but release 0.7.4 fixes this problem.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Enjoy! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/lucaz/Windows-Live-Writer/52fd7f98b01c_A4A4/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/lucaz/aggbug/61400.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=30PcTd9rMsg:kzaYLmGlhw0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=30PcTd9rMsg:kzaYLmGlhw0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=30PcTd9rMsg:kzaYLmGlhw0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=30PcTd9rMsg:kzaYLmGlhw0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=30PcTd9rMsg:kzaYLmGlhw0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=30PcTd9rMsg:kzaYLmGlhw0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=30PcTd9rMsg:kzaYLmGlhw0:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=30PcTd9rMsg:kzaYLmGlhw0:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=30PcTd9rMsg:kzaYLmGlhw0:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/30PcTd9rMsg" height="1" width="1"/&gt;</description><dc:creator>Luca Zavarella</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/lucaz/archive/2012/02/06/new-release-of-quotolap-pivottable-extensionsquot.aspx</feedburner:origLink></item><item><title>How to import in BIDS more than one SSIS package in one shot!</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/QpIJaz-uCJ8/how-to-import-in-bids-more-than-one-ssis-package.aspx</link><pubDate>Thu, 02 Feb 2012 20:27:14 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/lucaz/archive/2012/02/02/how-to-import-in-bids-more-than-one-ssis-package.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/lucaz/comments/61399.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/lucaz/comments/commentRss/61399.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/lucaz/archive/2012/02/02/how-to-import-in-bids-more-than-one-ssis-package.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://weblogs.sqlteam.com/lucaz/services/trackbacks/61399.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/lucaz/rss.aspx">How to import in BIDS more than one SSIS package in one shot!</source><description>&lt;p&gt;Have you ever wanted to add more than one Integration Services existing package (e.g. 20 packages) in a SSIS project? Well, you may suppose that an Open Dialog supports multiple files selection to import more than one file at a time ...&lt;/p&gt;  &lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-HMFgzKOGxAE/TyavDLPAKhI/AAAAAAAAAYw/fxGGgQd5-xw/s640/AddSSISPackages_01.png" /&gt;&lt;/p&gt;  &lt;p&gt;BIDS Open Dialog doesn’t allow this, you can just select a single file! Hence the loss of valuable time spent to import the packages one at a time.&lt;/p&gt;  &lt;p&gt;Few days ago I learned a trick that solves the problem, thanks to &lt;a href="http://www.mattmasson.com/index.php/2012/01/ssis-quick-tip-copy-paste-packages-into-a-visual-studio-project/?utm_source=rss&amp;amp;utm_medium=rss&amp;amp;utm_campaign=ssis-quick-tip-copy-paste-packages-into-a-visual-studio-project" target="_blank"&gt;this post&lt;/a&gt; by &lt;strong&gt;Matt Masson&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Just copy all the packages to import from Windows Explorer (Ctrl + C):&lt;/p&gt;  &lt;p&gt;&lt;img style="margin: 0px 5px" src="https://lh4.googleusercontent.com/-zp3p_UGYHnI/TyavvOJNezI/AAAAAAAAAY8/n5mw-d8_Cs0/s837/AddSSISPackages_02.png" width="538" height="271" /&gt;&lt;/p&gt;  &lt;p&gt;Then just right click on the &lt;em&gt;SSIS Packages &lt;/em&gt;folder of the Integration Services project and make a simple &lt;em&gt;Past&lt;/em&gt; (CTRL + V):&lt;/p&gt;  &lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-WPXNDXCpf8E/Tya0UDwANqI/AAAAAAAAAZo/JPFQcd-xsTE/s341/AddSSISPackages_03.png" /&gt;&lt;/p&gt;  &lt;p&gt;So “auto-magically” you’ll have all those packages imported in your Integration Services project!!&lt;/p&gt;  &lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-NklM9wqE2Bo/Tya0UFY_chI/AAAAAAAAAZs/qcRZpWnl4do/s702/AddSSISPackages_04.png" /&gt;&lt;/p&gt;  &lt;p&gt;What can I say... this feature was well hidden! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/lucaz/Windows-Live-Writer/ba1d7af04778_CFA3/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/lucaz/aggbug/61399.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=QpIJaz-uCJ8:gmxRhiySzts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=QpIJaz-uCJ8:gmxRhiySzts:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=QpIJaz-uCJ8:gmxRhiySzts:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=QpIJaz-uCJ8:gmxRhiySzts:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=QpIJaz-uCJ8:gmxRhiySzts:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=QpIJaz-uCJ8:gmxRhiySzts:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=QpIJaz-uCJ8:gmxRhiySzts:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=QpIJaz-uCJ8:gmxRhiySzts:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=QpIJaz-uCJ8:gmxRhiySzts:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/QpIJaz-uCJ8" height="1" width="1"/&gt;</description><dc:creator>Luca Zavarella</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/lucaz/archive/2012/02/02/how-to-import-in-bids-more-than-one-ssis-package.aspx</feedburner:origLink></item><item><title>How to calculate the covariance in T-SQL</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/BGsUih5RdAQ/how-to-calculate-the-covariance-in-t-sql.aspx</link><pubDate>Wed, 18 Jan 2012 12:01:46 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/peterl/archive/2012/01/18/how-to-calculate-the-covariance-in-t-sql.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/peterl/comments/61396.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/peterl/comments/commentRss/61396.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/peterl/archive/2012/01/18/how-to-calculate-the-covariance-in-t-sql.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/peterl/services/trackbacks/61396.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/peterl/rss.aspx">How to calculate the covariance in T-SQL</source><description>&lt;div style="line-height: normal;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;DECLARE &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;@Sample &lt;span style="color: blue;"&gt;TABLE&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;            x &lt;span style="color: blue;"&gt;INT&lt;/span&gt; &lt;span style="color: gray;"&gt;NOT&lt;/span&gt; &lt;span style="color: gray;"&gt;NULL,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;            y &lt;span style="color: blue;"&gt;INT&lt;/span&gt; &lt;span style="color: gray;"&gt;NOT&lt;/span&gt; &lt;span style="color: gray;"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="line-height: normal;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;span style="color: gray;"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;INSERT&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;  @Sample&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;VALUES  &lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;3&lt;span style="color: gray;"&gt;,&lt;/span&gt; 9&lt;span style="color: gray;"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;2&lt;span style="color: gray;"&gt;,&lt;/span&gt; 7&lt;span style="color: gray;"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;4&lt;span style="color: gray;"&gt;,&lt;/span&gt; 12&lt;span style="color: gray;"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;5&lt;span style="color: gray;"&gt;,&lt;/span&gt; 15&lt;span style="color: gray;"&gt;),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;6&lt;span style="color: gray;"&gt;,&lt;/span&gt; 17&lt;span style="color: gray;"&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;WITH&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; cteSource&lt;span style="color: gray;"&gt;(&lt;/span&gt;x&lt;span style="color: gray;"&gt;,&lt;/span&gt; xAvg&lt;span style="color: gray;"&gt;,&lt;/span&gt; y&lt;span style="color: gray;"&gt;,&lt;/span&gt; yAvg&lt;span style="color: gray;"&gt;,&lt;/span&gt; n&lt;span style="color: gray;"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;AS &lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;span style="color: blue;"&gt;SELECT&lt;/span&gt;  1E &lt;span style="color: gray;"&gt;*&lt;/span&gt; x&lt;span style="color: gray;"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;                &lt;span style="color: fuchsia;"&gt;AVG&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;1E &lt;span style="color: gray;"&gt;*&lt;/span&gt; x&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;OVER &lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;PARTITION&lt;/span&gt; &lt;span style="color: blue;"&gt;BY &lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;SELECT&lt;/span&gt; &lt;span style="color: gray;"&gt;NULL)),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;                1E &lt;span style="color: gray;"&gt;*&lt;/span&gt; y&lt;span style="color: gray;"&gt;,&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;                &lt;span style="color: fuchsia;"&gt;AVG&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;1E &lt;span style="color: gray;"&gt;*&lt;/span&gt; y&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;OVER &lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;PARTITION&lt;/span&gt; &lt;span style="color: blue;"&gt;BY &lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;SELECT&lt;/span&gt; &lt;span style="color: gray;"&gt;NULL)),&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;                &lt;span style="color: fuchsia;"&gt;COUNT&lt;/span&gt;&lt;span style="color: gray;"&gt;(*)&lt;/span&gt; &lt;span style="color: blue;"&gt;OVER &lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;PARTITION&lt;/span&gt; &lt;span style="color: blue;"&gt;BY &lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;SELECT&lt;/span&gt; &lt;span style="color: gray;"&gt;NULL))&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;        &lt;span style="color: blue;"&gt;FROM&lt;/span&gt;    @Sample&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: gray; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;)&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;  &lt;span style="color: fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color: gray;"&gt;((&lt;/span&gt;x &lt;span style="color: gray;"&gt;-&lt;/span&gt; xAvg&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: gray;"&gt;*&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;y &lt;span style="color: gray;"&gt;-&lt;/span&gt; yAvg&lt;span style="color: gray;"&gt;))&lt;/span&gt; &lt;span style="color: gray;"&gt;/&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;MAX&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;n&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;AS&lt;/span&gt; [COVAR(x,y)]&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: blue; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;FROM&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;    cteSource&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;img src="http://weblogs.sqlteam.com/peterl/aggbug/61396.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=BGsUih5RdAQ:xFb3t8HRuHs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=BGsUih5RdAQ:xFb3t8HRuHs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=BGsUih5RdAQ:xFb3t8HRuHs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=BGsUih5RdAQ:xFb3t8HRuHs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=BGsUih5RdAQ:xFb3t8HRuHs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=BGsUih5RdAQ:xFb3t8HRuHs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=BGsUih5RdAQ:xFb3t8HRuHs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=BGsUih5RdAQ:xFb3t8HRuHs:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=BGsUih5RdAQ:xFb3t8HRuHs:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/BGsUih5RdAQ" height="1" width="1"/&gt;</description><dc:creator>Peter Larsson</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/peterl/archive/2012/01/18/how-to-calculate-the-covariance-in-t-sql.aspx</feedburner:origLink></item><item><title>So long and thanks for the fish&amp;hellip;</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/P1etc1B_jlg/so-long-and-thanks-for-the-fishhellip.aspx</link><pubDate>Wed, 28 Dec 2011 21:03:53 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/geoffh/archive/2011/12/28/so-long-and-thanks-for-the-fishhellip.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/geoffh/comments/61395.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/geoffh/comments/commentRss/61395.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/geoffh/archive/2011/12/28/so-long-and-thanks-for-the-fishhellip.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/geoffh/services/trackbacks/61395.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/geoffh/rss.aspx">So long and thanks for the fish&amp;hellip;</source><description>&lt;p&gt;This marks my last post as a SQLPASS Board member.  I learned a lot during my year of service and I thank everyone involved for this opportunity.  I would especially like to thank the Chapter leaders and Regional Mentors for Virtual Chapters who (mostly) patiently taught me about Virtual Chapters.   I hope the changes I put in place will help strengthen and grow VCs and PASS going forward.  I would also like to thank every one who encouraged me to reach beyond my comfort zone and accept a leadership position within the PASS organization.  &lt;/p&gt;
&lt;p&gt;My overall principle was to be a good steward of the PASS community.  Could I have done more?  Always. Did I do enough?  I hope so.  But PASS is a volunteer organization and my time, like yours, is limited.  I have other obligations in life that supersede PASS.  Now I have more time for some of those.  I won’t be going away or leaving the SQL Community.  I will still contribute to the community and support PASS, just in a different role.  Time to let somebody else enjoy the hot seat for a while.&lt;/p&gt;
&lt;p&gt;Finally, everyone who voted (not just for me) deserves a thanks.  More voters and more engaged voters, strong candidates, and a vigorous debate were all I wanted out of declaring as a candidate last year. This year the SQL community got exactly that. &lt;/p&gt;
&lt;p&gt;Thank you.. &lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/geoffh/aggbug/61395.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=P1etc1B_jlg:2G5bcmys9os:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=P1etc1B_jlg:2G5bcmys9os:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=P1etc1B_jlg:2G5bcmys9os:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=P1etc1B_jlg:2G5bcmys9os:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=P1etc1B_jlg:2G5bcmys9os:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=P1etc1B_jlg:2G5bcmys9os:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=P1etc1B_jlg:2G5bcmys9os:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=P1etc1B_jlg:2G5bcmys9os:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=P1etc1B_jlg:2G5bcmys9os:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/P1etc1B_jlg" height="1" width="1"/&gt;</description><dc:creator>Geoff N. Hiten</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/geoffh/archive/2011/12/28/so-long-and-thanks-for-the-fishhellip.aspx</feedburner:origLink></item><item><title>Broken Views</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/B4cFEZa1Zh8/broken-views.aspx</link><pubDate>Tue, 27 Dec 2011 07:16:30 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/markc/archive/2011/12/26/broken-views.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/markc/comments/61394.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/markc/comments/commentRss/61394.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/markc/archive/2011/12/26/broken-views.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://weblogs.sqlteam.com/markc/services/trackbacks/61394.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/markc/rss.aspx">Broken Views</source><description>&lt;p&gt;“SELECT *” isn’t just hazardous to performance, it can actually return blatantly wrong information.&lt;/p&gt;  &lt;p&gt;There are a number of blog posts and articles out there that actively discourage the use of the &lt;em&gt;SELECT * FROM …&lt;/em&gt;syntax.  The two most common explanations that I have seen are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt;:  The &lt;em&gt;SELECT *&lt;/em&gt; syntax will return every column in the table, but frequently you really only need a few of the columns, and so by using &lt;em&gt;SELECT *&lt;/em&gt; your are retrieving large volumes of data that you don’t need, but the system has to process, marshal across tiers, and so on.  It would be much more efficient to only select the specific columns that you need. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Future-proof&lt;/strong&gt;:  If you are taking other shortcuts in your code, along with using &lt;em&gt;SELECT *&lt;/em&gt;, you are setting yourself up for trouble down the road when enhancements are made to the system.  For example, if you use &lt;em&gt;SELECT *&lt;/em&gt; to return results from a table into a DataTable in .NET, and then reference columns positionally (e.g. myDataRow[5]) you could end up with bad data if someone happens to add a column into position 3 and skewing all the remaining columns’ ordinal position.  Or if you use &lt;em&gt;INSERT…SELECT *&lt;/em&gt; then you will likely run into errors when a new column is added to the source table in any position. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;And if you use &lt;em&gt;SELECT *&lt;/em&gt; in the definition of a view, you will run into a variation of the future-proof problem mentioned above.  One of the guys on my team, Mike Byther, ran across this in a project we were doing, but fortunately he caught it while we were still in development.  I asked him to put together a test to prove that this was related to the use of &lt;em&gt;SELECT *&lt;/em&gt; and not some other anomaly.  I’ll walk you through the test script so you can see for yourself what happens.&lt;/p&gt;  &lt;p&gt;We are going to create a table and two views that are based on that table, one of them uses &lt;em&gt;SELECT *&lt;/em&gt; and the other explicitly lists the column names.  The script to create these objects is listed below.&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; OBJECT_ID(&lt;span style="color: #006080"&gt;'testtab'&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;IS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt; testtab&lt;br /&gt;&lt;span style="color: #0000ff"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; OBJECT_ID(&lt;span style="color: #006080"&gt;'testtab_vw'&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;IS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff"&gt;VIEW&lt;/span&gt; testtab_vw&lt;br /&gt;&lt;span style="color: #0000ff"&gt;go&lt;/span&gt;   &lt;br /&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; OBJECT_ID(&lt;span style="color: #006080"&gt;'testtab_vw_named'&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;IS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #0000ff"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff"&gt;VIEW&lt;/span&gt; testtab_vw_named&lt;br /&gt;&lt;span style="color: #0000ff"&gt;go&lt;/span&gt;   &lt;br /&gt;&lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt; testtab (col1 NVARCHAR(5) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, col2 NVARCHAR(5) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;INSERT &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; testtab(col1, col2)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;VALUES&lt;/span&gt; (&lt;span style="color: #006080"&gt;'A'&lt;/span&gt;,&lt;span style="color: #006080"&gt;'B'&lt;/span&gt;), (&lt;span style="color: #006080"&gt;'A'&lt;/span&gt;,&lt;span style="color: #006080"&gt;'B'&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;VIEW&lt;/span&gt; testtab_vw &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; testtab&lt;br /&gt;&lt;span style="color: #0000ff"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;VIEW&lt;/span&gt; testtab_vw_named &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; col1, col2 &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; testtab&lt;br /&gt;&lt;span style="color: #0000ff"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Now, to prove that the two views currently return equivalent results, select from them.&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;span style="color: #006080"&gt;'star'&lt;/span&gt;, col1, col2 &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; testtab_vw&lt;br /&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;span style="color: #006080"&gt;'named'&lt;/span&gt;, col1, col2 &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; testtab_vw_named&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;OK, so far, so good.  Now, what happens if someone makes a change to the definition of the underlying table, and that change results in a new column being inserted between the two existing columns?  (Side note, I normally prefer to append new columns to the end of the table definition, but some people like to keep their columns alphabetized, and for clarity for later people reviewing the schema, it may make sense to group certain columns together.  Whatever the reason, it sometimes happens, and you need to protect yourself and your code from the repercussions.)&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt; testtab&lt;br /&gt;&lt;span style="color: #0000ff"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt; testtab (col1 NVARCHAR(5) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, col3 NVARCHAR(5) &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;, col2 NVARCHAR(5) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;INSERT &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; testtab(col1, col3, col2)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;VALUES&lt;/span&gt; (&lt;span style="color: #006080"&gt;'A'&lt;/span&gt;,&lt;span style="color: #006080"&gt;'C'&lt;/span&gt;,&lt;span style="color: #006080"&gt;'B'&lt;/span&gt;), (&lt;span style="color: #006080"&gt;'A'&lt;/span&gt;,&lt;span style="color: #006080"&gt;'C'&lt;/span&gt;,&lt;span style="color: #006080"&gt;'B'&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #0000ff"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;span style="color: #006080"&gt;'star'&lt;/span&gt;, col1, col2 &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; testtab_vw&lt;br /&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; &lt;span style="color: #006080"&gt;'named'&lt;/span&gt;, col1, col2 &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; testtab_vw_named&lt;br /&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;I would have expected that the view using &lt;em&gt;SELECT *&lt;/em&gt; in its definition would essentially pass-through the column name and still retrieve the correct data, but that is not what happens.  When you run our two select statements again, you see that the View that is based on &lt;em&gt;SELECT *&lt;/em&gt; actually retrieves the data based on the ordinal position of the columns &lt;strong&gt;at the time that the view was created&lt;/strong&gt;.  Sure, one work-around is to recreate the View, but you can’t really count on other developers to know the dependencies you have built-in, and they won’t necessarily recreate the view when they refactor the table.&lt;/p&gt;

&lt;p&gt;I am sure that there are reasons and justifications for why Views behave this way, but I find it particularly disturbing that you can have code asking for col2, but actually be receiving data from col3.  By the way, for the record, this entire scenario and accompanying test script apply to SQL Server 2008 R2 with Service Pack 1.&lt;/p&gt;

&lt;p&gt;So, let the developer beware…know what assumptions are in effect around your code, and keep on discouraging people from using SELECT * syntax in anything but the simplest of ad-hoc queries.&lt;/p&gt;

&lt;p&gt;And of course, let’s clean up after ourselves.  To eliminate the database objects created during this test, run the following commands.&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt; testtab&lt;br /&gt;&lt;span style="color: #0000ff"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff"&gt;VIEW&lt;/span&gt; testtab_vw&lt;br /&gt;&lt;span style="color: #0000ff"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff"&gt;VIEW&lt;/span&gt; testtab_vw_named&lt;br /&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;&lt;img src="http://weblogs.sqlteam.com/markc/aggbug/61394.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=B4cFEZa1Zh8:pAX57llEBHY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=B4cFEZa1Zh8:pAX57llEBHY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=B4cFEZa1Zh8:pAX57llEBHY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=B4cFEZa1Zh8:pAX57llEBHY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=B4cFEZa1Zh8:pAX57llEBHY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=B4cFEZa1Zh8:pAX57llEBHY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=B4cFEZa1Zh8:pAX57llEBHY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=B4cFEZa1Zh8:pAX57llEBHY:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=B4cFEZa1Zh8:pAX57llEBHY:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/B4cFEZa1Zh8" height="1" width="1"/&gt;</description><dc:creator>Ajarn Mark Caldwell</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/markc/archive/2011/12/26/broken-views.aspx</feedburner:origLink></item><item><title>T-SQL Tuesday #025 &amp;ndash; CHECK Constraint Tricks</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/DCkb0pVN830/t-sql-tuesday-025-ndash-check-constraint-tricks.aspx</link><pubDate>Tue, 13 Dec 2011 19:24:28 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/robv/archive/2011/12/13/t-sql-tuesday-025-ndash-check-constraint-tricks.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/robv/comments/61393.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/robv/comments/commentRss/61393.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/robv/archive/2011/12/13/t-sql-tuesday-025-ndash-check-constraint-tricks.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/robv/services/trackbacks/61393.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/robv/rss.aspx">T-SQL Tuesday #025 &amp;ndash; CHECK Constraint Tricks</source><description>&lt;p&gt;&lt;a target="_blank" href="http://sqlblog.com/blogs/allen_white/archive/2011/12/05/t-sql-tuesday-025-invitation-to-share-your-tricks.aspx"&gt;&lt;img style="FLOAT: left" alt="" src="http://www.upsearch.com/components/com_wordpress/wp/wp-content/uploads/2011/12/tsqltuesday.jpg" /&gt;&lt;/a&gt;Allen White (&lt;a target="_blank" href="http://sqlblog.com/blogs/allen_white/default.aspx"&gt;blog&lt;/a&gt; | &lt;a target="_blank" href="https://twitter.com/#!/SQLRunr"&gt;twitter&lt;/a&gt;), marathoner, SQL Server MVP and presenter, and all-around &lt;a title="MVP Deep Dives, Chapter 27" target="_blank" href="http://www.amazon.com/SQL-Server-MVP-Deep-Dives/dp/1935182048/ref=pd_sim_b_1"&gt;awesome author&lt;/a&gt; is hosting this month's &lt;a target="_blank" href="http://sqlblog.com/blogs/allen_white/archive/2011/12/05/t-sql-tuesday-025-invitation-to-share-your-tricks.aspx"&gt;T-SQL Tuesday on sharing SQL Server Tips and Tricks&lt;/a&gt;.  And for those of you who have attended my &lt;em&gt;Revenge: The SQL&lt;/em&gt; presentation, you know that I have 1 or 2 of them.  You'll also know that I don't recommend using anything I talk about in a production system, and will continue that advice here…although you might be sorely tempted.  Suffice it to say I'm not using these examples myself, but I think they're worth sharing anyway.&lt;/p&gt;
&lt;p&gt;Some of you have seen or read about &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms189862.aspx"&gt;SQL Server constraints&lt;/a&gt; and have &lt;a title="Yeah Matt! Matt uses constraints! If you're a vendor, hire this guy!" target="_blank" href="http://mattvelic.com/tsql-tuesday-25/"&gt;applied them to your table designs&lt;/a&gt;…unless you're a vendor ;)…and may even use CHECK constraints to limit numeric values, or length of strings, allowable characters and such.  CHECK constraints can, however, do more than that, and can even provide enhanced security and other restrictions.&lt;/p&gt;
&lt;p&gt;One tip or trick that I didn't cover very well in the presentation is using constraints to do unusual things; specifically, limiting or preventing inserts into tables.  The idea was to use a CHECK constraint in a way that didn't depend on the actual data:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: green"&gt;-- create a table that cannot accept data
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;JustTryIt&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;BIT &lt;/span&gt;&lt;span style="COLOR: gray"&gt;NOT NULL &lt;/span&gt;&lt;span style="COLOR: blue"&gt;PRIMARY KEY&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;chk_no_insert &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;GETDATE&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()=&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;GETDATE&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()+&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;))

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;JustTryIt &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I'll let you run that yourself, but I'm sure you'll see that this is a pretty stupid table to have, since the CHECK condition will always be false, and therefore will prevent any data from ever being inserted.  I can't remember why I used this example but it was for some vague and esoteric purpose that applies to about, maybe, zero people.  I come up with a lot of examples like that.&lt;/p&gt;
&lt;p&gt;However, if you realize that these CHECKs are not limited to column references, and if you explore the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms174318.aspx"&gt;SQL Server function list&lt;/a&gt;, you could come up with a few that might be useful.  I'll let the names describe what they do instead of explaining them all:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;NoSA&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;&lt;span style="COLOR: gray"&gt;not null, 
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;CHK_No_sa &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;SUSER_SNAME&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: red"&gt;'sa'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;))

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;NoSysAdmin&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;&lt;span style="COLOR: gray"&gt;not null, 
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;CHK_No_sysadmin &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;IS_SRVROLEMEMBER&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'sysadmin'&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)=&lt;/span&gt;0&lt;span style="COLOR: gray"&gt;))

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;NoAdHoc&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;&lt;span style="COLOR: gray"&gt;not null, 
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;CHK_No_AdHoc &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;OBJECT_NAME&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;@@PROCID&lt;/span&gt;&lt;span style="COLOR: gray"&gt;) IS NOT NULL))

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;NoAdHoc2&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;&lt;span style="COLOR: gray"&gt;not null, 
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;CHK_No_AdHoc2 &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;@@NESTLEVEL&lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="COLOR: gray"&gt;))

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;NoCursors&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;&lt;span style="COLOR: gray"&gt;not null, 
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;CHK_No_Cursors &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;@@CURSOR_ROWS&lt;/span&gt;&lt;span style="COLOR: gray"&gt;=&lt;/span&gt;0&lt;span style="COLOR: gray"&gt;))

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;ANSI_PADDING_ON&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;&lt;span style="COLOR: gray"&gt;not null, 
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;CHK_ANSI_PADDING_ON &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;@@OPTIONS &lt;/span&gt;&lt;span style="COLOR: gray"&gt;&amp;amp; &lt;/span&gt;16&lt;span style="COLOR: gray"&gt;=&lt;/span&gt;16&lt;span style="COLOR: gray"&gt;))

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE TABLE &lt;/span&gt;TimeOfDay&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;a &lt;span style="COLOR: blue"&gt;int &lt;/span&gt;&lt;span style="COLOR: gray"&gt;not null, 
    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT &lt;/span&gt;CHK_TimeOfDay &lt;span style="COLOR: blue"&gt;CHECK &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;DATEPART&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;hour&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;span style="COLOR: magenta"&gt;GETDATE&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()) BETWEEN &lt;/span&gt;0 &lt;span style="COLOR: gray"&gt;AND &lt;/span&gt;1&lt;span style="COLOR: gray"&gt;))
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;GO

&lt;/span&gt;&lt;span style="COLOR: green"&gt;-- log in as sa or a sysadmin server role member, and try this:
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoSA &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoSysAdmin &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: green"&gt;-- note the difference when using sa vs. non-sa
-- then try it again with a non-sysadmin login

-- see if this works:
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoAdHoc &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoAdHoc2 &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;GO

&lt;/span&gt;&lt;span style="COLOR: green"&gt;-- then try this:
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CREATE PROCEDURE &lt;/span&gt;NotAdHoc @val1 &lt;span style="COLOR: blue"&gt;int&lt;/span&gt;&lt;span style="COLOR: gray"&gt;, &lt;/span&gt;@val2 &lt;span style="COLOR: blue"&gt;int AS
SET NOCOUNT ON&lt;/span&gt;&lt;span style="COLOR: gray"&gt;;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoAdHoc &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@val1&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoAdHoc2 &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@val2&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;GO

EXEC &lt;/span&gt;NotAdHoc 2&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;2

&lt;span style="COLOR: green"&gt;-- which values got inserted?
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT &lt;/span&gt;&lt;span style="COLOR: gray"&gt;* &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM &lt;/span&gt;NoAdHoc
&lt;span style="COLOR: blue"&gt;SELECT &lt;/span&gt;&lt;span style="COLOR: gray"&gt;* &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM &lt;/span&gt;NoAdHoc2&lt;/pre&gt;
&lt;pre class="code"&gt; &lt;/pre&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: green" /&gt;&lt;/pre&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: green"&gt;-- and this one just makes me happy :)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoCursors &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;1&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;DECLARE &lt;/span&gt;curs &lt;span style="COLOR: blue"&gt;CURSOR FOR SELECT &lt;/span&gt;1
&lt;span style="COLOR: blue"&gt;OPEN &lt;/span&gt;curs
&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoCursors &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;2&lt;span style="COLOR: gray"&gt;)
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;CLOSE &lt;/span&gt;curs
&lt;span style="COLOR: blue"&gt;DEALLOCATE &lt;/span&gt;curs
&lt;span style="COLOR: blue"&gt;INSERT &lt;/span&gt;NoCursors &lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;3&lt;span style="COLOR: gray"&gt;)

&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT &lt;/span&gt;&lt;span style="COLOR: gray"&gt;* &lt;/span&gt;&lt;span style="COLOR: blue"&gt;FROM &lt;/span&gt;NoCursors&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I'll leave the ANSI_PADDING_ON and TimeOfDay tables for you to test on your own, I think you get the idea.  (Also take a look at the NoCursors example, notice anything interesting?)  &lt;/p&gt;
&lt;p&gt;The real eye-opener, for me anyway, is the ability to limit bad coding practices like cursors, ad-hoc SQL, and sa use/abuse by using declarative SQL objects.  I'm sure you can see how and why this would come up when discussing &lt;em&gt;Revenge: The SQL.&lt;/em&gt;;) And the best part IMHO is that these work on pretty much any version of SQL Server, without needing Policy Based Management, DDL/login triggers, or similar tools to enforce best practices.&lt;/p&gt;
&lt;p&gt;All seriousness aside, I highly recommend that you spend some time letting your mind go wild with the possibilities and see how far you can take things.  There are no rules!&lt;/p&gt;
&lt;p&gt;(Hmmmm, what can I do with &lt;a title="Still works in SQL 2012!" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms188064.aspx"&gt;rules&lt;/a&gt;?)&lt;/p&gt;
&lt;p&gt;#TSQL2sDay&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/robv/aggbug/61393.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=DCkb0pVN830:Qa1XYri0nIQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=DCkb0pVN830:Qa1XYri0nIQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=DCkb0pVN830:Qa1XYri0nIQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=DCkb0pVN830:Qa1XYri0nIQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=DCkb0pVN830:Qa1XYri0nIQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=DCkb0pVN830:Qa1XYri0nIQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=DCkb0pVN830:Qa1XYri0nIQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=DCkb0pVN830:Qa1XYri0nIQ:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=DCkb0pVN830:Qa1XYri0nIQ:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/DCkb0pVN830" height="1" width="1"/&gt;</description><dc:creator>Most Valuable Yak (Rob Volk)</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/robv/archive/2011/12/13/t-sql-tuesday-025-ndash-check-constraint-tricks.aspx</feedburner:origLink></item><item><title>Let&amp;rsquo;s keep informed with &amp;ldquo;Data Explorer&amp;rdquo;</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/cjC3Z41c4v4/letrsquos-keep-informed-with-ldquodata-explorerrdquo.aspx</link><pubDate>Sat, 10 Dec 2011 12:39:20 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/lucaz/archive/2011/12/10/letrsquos-keep-informed-with-ldquodata-explorerrdquo.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/lucaz/comments/61392.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/lucaz/comments/commentRss/61392.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/lucaz/archive/2011/12/10/letrsquos-keep-informed-with-ldquodata-explorerrdquo.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/lucaz/services/trackbacks/61392.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/lucaz/rss.aspx">Let&amp;rsquo;s keep informed with &amp;ldquo;Data Explorer&amp;rdquo;</source><description>&lt;p&gt;At Pass Summit 2011 a new project was announced. It’s a &lt;em&gt;Microsoft SQL Azure Lab&lt;/em&gt; and its codename is &lt;strong&gt;Microsoft “Data Explorer”&lt;/strong&gt;. According to the official blog (&lt;a href="http://blogs.msdn.com/b/dataexplorer/"&gt;http://blogs.msdn.com/b/dataexplorer/&lt;/a&gt;), this new tool provides an innovative way to acquire new knowledge from the data that interest you. In a nutshell, &lt;em&gt;Data Explorer&lt;/em&gt; allows you to combine data from multiple sources, to publish and share the result. In addition, you can generate data streams in the &lt;em&gt;RESTful&lt;/em&gt; open format (&lt;a href="http://www.odata.org/" target="_blank"&gt;Open Data Protocol&lt;/a&gt;), and they can then be used by other applications. Nonetheless we can still use Excel or PowerPivot to analyze the results.&lt;/p&gt;  &lt;p&gt;Sources can be varied: Excel spreadsheets, text files, databases, &lt;strong&gt;Windows Azure Marketplace&lt;/strong&gt;, etc.. For those who are not familiar with this resource, I strongly suggest you to keep an eye on the data services available to the Marketplace:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://datamarket.azure.com/browse/Data"&gt;https://datamarket.azure.com/browse/Data&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To tell the truth, as I read the above blog post, I was tempted to think of the &lt;em&gt;Data Explorer&lt;/em&gt; as a "SSIS on Azure" addressed to the Power User. In fact, reading the response from Tim Mallalieu (Group Program Manager of &lt;em&gt;Data Explorer&lt;/em&gt;) to the comment made to his &lt;a href="http://blogs.msdn.com/b/timmall/archive/2011/10/17/early-walkthrough-of-the-montego-client.aspx" target="_blank"&gt;post&lt;/a&gt;, I had a positive response to my first impression:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“…we originally thinking of ourselves as Self-Service ETL. As we talked to more folks and started partnering with other teams we realized that would be an area that we can add value but that there were more opportunities emerging.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The typical operations of the ETL phase ( processing and organization of data in different formats) can be obtained thanks to &lt;a href="http://blogs.msdn.com/b/dataexplorer/archive/2011/10/26/data-explorer-mashup-101.aspx" target="_blank"&gt;Data Explorer Mashup&lt;/a&gt;. This is an image of the tool:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-48-46-metablogapi/7450.image_5F00_4D853984.png" width="529" height="225" /&gt;&lt;/p&gt;  &lt;p&gt;The flexibility in the manipulation of information is given by &lt;em&gt;&lt;a href="http://blogs.msdn.com/b/dataexplorer/archive/2011/11/17/the-data-explorer-formula-language.aspx" target="_blank"&gt;Data Explorer Formula Language&lt;/a&gt;&lt;/em&gt;. This is a formula-based Excel-style specific language:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-48-46-Formula+Language+Series-Post+1/7024.7.png" /&gt;&lt;/p&gt;  &lt;p&gt;Anyone wishing to know more can check the project page in addition to aforementioned blog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/en-us/sqlazurelabs/labs/dataexplorer.aspx"&gt;http://www.microsoft.com/en-us/sqlazurelabs/labs/dataexplorer.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In light of this new project, there is no doubt about the intention of Microsoft to get closer and closer to the Power User, providing him flexible and very easy to use tools for data analysis. The prime example of this is &lt;em&gt;PowerPivot&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;The question that remains is always the same: having in a company more Power User will implicitly mean having different data models representing the same reality. But this would inevitably lead to anarchical data management... What do you think about that?&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/lucaz/aggbug/61392.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cjC3Z41c4v4:m9O2rNjLs1I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cjC3Z41c4v4:m9O2rNjLs1I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cjC3Z41c4v4:m9O2rNjLs1I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=cjC3Z41c4v4:m9O2rNjLs1I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cjC3Z41c4v4:m9O2rNjLs1I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=cjC3Z41c4v4:m9O2rNjLs1I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cjC3Z41c4v4:m9O2rNjLs1I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cjC3Z41c4v4:m9O2rNjLs1I:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cjC3Z41c4v4:m9O2rNjLs1I:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/cjC3Z41c4v4" height="1" width="1"/&gt;</description><dc:creator>Luca Zavarella</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/lucaz/archive/2011/12/10/letrsquos-keep-informed-with-ldquodata-explorerrdquo.aspx</feedburner:origLink></item><item><title>SSMS Tools Pack 2.1.0 is out. Added support for SQL Server 2012 RC0.</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/-brllXzwgnI/ssms-tools-pack-2-1-0-is-out-added-support.aspx</link><pubDate>Thu, 01 Dec 2011 19:34:18 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/mladenp/archive/2011/12/01/ssms-tools-pack-2-1-0-is-out-added-support.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/mladenp/comments/61391.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/mladenp/comments/commentRss/61391.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/mladenp/archive/2011/12/01/ssms-tools-pack-2-1-0-is-out-added-support.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/mladenp/services/trackbacks/61391.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/mladenp/rss.aspx">SSMS Tools Pack 2.1.0 is out. Added support for SQL Server 2012 RC0.</source><description>&lt;p&gt;This version adds support for SQL Server 2012 RC0 and fixes a few bugs with SQL History.&lt;/p&gt;  &lt;p&gt;Because of the support for regions in SSMS 2012 the regions and debug sections feature has been removed from SSMS Tools Pack for SQL Server 2012.&lt;/p&gt;  &lt;p&gt;The feature is still available for previous SSMS versions.&lt;/p&gt;  &lt;p&gt;In other news &lt;a href="http://www.ssmstoolspack.com/"&gt;&lt;strong&gt;SSMS Tools Pack&lt;/strong&gt;&lt;/a&gt; has won the SQL Magazine bronze award for best free tool of 2011. You can view all the details at the &lt;a href="http://www.sqlmag.com/content1/topic/2011-sql-server-magazine-editors-community-choice-awards-140830/catpath/awards/showprivate/1/page/9"&gt;&lt;strong&gt;SQL Server Magazine Award page&lt;/strong&gt;&lt;/a&gt;.    &lt;br /&gt;    &lt;br /&gt;Thanx to all the people who voted for it. I'm glad you all like it and use it with great success. &lt;/p&gt;  &lt;p&gt;Also I've added a possibility for you to subscribe to email notifications in case the auto-updater doesn't work for you for some reason like being behind a proxy.&lt;/p&gt;  &lt;p&gt;Enjoy it!&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/mladenp/aggbug/61391.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-brllXzwgnI:eBdXaPQPWPw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-brllXzwgnI:eBdXaPQPWPw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-brllXzwgnI:eBdXaPQPWPw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=-brllXzwgnI:eBdXaPQPWPw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-brllXzwgnI:eBdXaPQPWPw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=-brllXzwgnI:eBdXaPQPWPw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-brllXzwgnI:eBdXaPQPWPw:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-brllXzwgnI:eBdXaPQPWPw:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-brllXzwgnI:eBdXaPQPWPw:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/-brllXzwgnI" height="1" width="1"/&gt;</description><dc:creator>Mladen Prajdić</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/mladenp/archive/2011/12/01/ssms-tools-pack-2-1-0-is-out-added-support.aspx</feedburner:origLink></item><item><title>Speaking in Omaha: December 7, 2011</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/-yCET7fW9fo/speaking-in-omaha-december-7-2011.aspx</link><pubDate>Thu, 01 Dec 2011 16:30:45 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/billg/archive/2011/12/01/speaking-in-omaha-december-7-2011.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/billg/comments/61390.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/billg/comments/commentRss/61390.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/billg/archive/2011/12/01/speaking-in-omaha-december-7-2011.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/billg/services/trackbacks/61390.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/billg/rss.aspx">Speaking in Omaha: December 7, 2011</source><description>&lt;p&gt;I’m presenting in Omaha on Writing Faster SQL at 6PM on December 7th.  You can find meeting details on the &lt;a href="http://www.omahamtg.com/Events.aspx?ID=138"&gt;Omaha SQL Server User Group&lt;/a&gt; page. The meeting location requires an RSVP so building security has a list of attendees.&lt;/p&gt;  &lt;p&gt;The presentation is a series of suggestions on improving performance.  It ranges from simple things like comparing indexed columns to scalar values up to tips for reducing query compiles and asynchronous processing patterns.  Nearly all of these come from specific issues I’ve encountered working on poorly performing SQL Servers.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/billg/aggbug/61390.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-yCET7fW9fo:7Yq2IxxseQ4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-yCET7fW9fo:7Yq2IxxseQ4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-yCET7fW9fo:7Yq2IxxseQ4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=-yCET7fW9fo:7Yq2IxxseQ4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-yCET7fW9fo:7Yq2IxxseQ4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=-yCET7fW9fo:7Yq2IxxseQ4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-yCET7fW9fo:7Yq2IxxseQ4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-yCET7fW9fo:7Yq2IxxseQ4:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=-yCET7fW9fo:7Yq2IxxseQ4:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/-yCET7fW9fo" height="1" width="1"/&gt;</description><dc:creator>Bill Graziano</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/billg/archive/2011/12/01/speaking-in-omaha-december-7-2011.aspx</feedburner:origLink></item><item><title>A Rose by Any Other Name..</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/XL97GKU-taI/a-rose-by-any-other-name.aspx</link><pubDate>Tue, 29 Nov 2011 14:45:36 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/geoffh/archive/2011/11/29/a-rose-by-any-other-name.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/geoffh/comments/61389.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/geoffh/comments/commentRss/61389.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/geoffh/archive/2011/11/29/a-rose-by-any-other-name.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/geoffh/services/trackbacks/61389.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/geoffh/rss.aspx">A Rose by Any Other Name..</source><description>&lt;p&gt; &lt;/p&gt;  &lt;p&gt;It is always a good start when you can steal a title line from one of the best writers in the English language.  Let’s hope I can make the rest of this post live up to the opening.  &lt;/p&gt;  &lt;p&gt;One recurring problem with SQL server is moving databases to new servers.  Client applications use a variety of ways to resolve SQL Server names, some of which are not changed easily &amp;lt;cough &lt;em&gt;SharePoint&lt;/em&gt; /cough&amp;gt;.  If you happen to be using default instances on both the source and target SQL Server, then the solution is pretty simple.  You create (or bug the network admin until she creates) two DNS “A” records. One points the old name to the new IP address.  The other creates a new alias for the old server, since the original system name is now redirected.  Note this will redirect ALL traffic from the old server to the new server, including RDP and file share connection attempts.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_thumb.png" width="565" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure 1 – Microsoft DNS MMC Snap-In&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_thumb_1.png" width="244" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure 2 – DNS New Host Dialog Box&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Both records are necessary so you can still access the old server via an alternate name.&lt;/p&gt;  &lt;div align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="630" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="138"&gt;&lt;strong&gt;Server Role&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="141"&gt;&lt;strong&gt;IP Address&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="97"&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="252"&gt;&lt;strong&gt;Alias&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="138"&gt;Source&lt;/td&gt;          &lt;td valign="top" width="141"&gt;10.97.230.60&lt;/td&gt;          &lt;td valign="top" width="97"&gt;SQL01&lt;/td&gt;          &lt;td valign="top" width="252"&gt;SQL01_Old&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="138"&gt;Target&lt;/td&gt;          &lt;td valign="top" width="141"&gt;10.97.230.80&lt;/td&gt;          &lt;td valign="top" width="97"&gt;SQL02&lt;/td&gt;          &lt;td valign="top" width="252"&gt;SQL01&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p align="center"&gt;&lt;strong&gt;Table 1 – Alias List&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;If you or somebody set up connections via IP address, you deserve to have to go to each app and fix it by hand.  That is the only way to fix that particular foul-up.&lt;/p&gt;  &lt;p align="left"&gt;If have to deal with Named Instances either as a source or a target, then it gets more complicated.  The standard fix is to use the SQL Server Configuration Manager (or one of its earlier incarnations) to create a SQL client alias to redirect the connection.  This can be a pain installing and configuring the app on multiple client servers.  The good news is that SQL Server Configuration Manager AND all of its earlier versions simply write a few registry keys.  Extracting the keys into a .reg file makes centralized automated deployment a snap.&lt;/p&gt;  &lt;p align="left"&gt;If the client is a 32-bit system, you have to extract the native key.  If it is a 64-bit, you have to extract the native key and the WoW (32 bit on 64 bit host) key.&lt;/p&gt;  &lt;p align="left"&gt;First, pick a development system to create the actual registry key.  If you do this repeatedly, you can simply edit an existing registry file.  Create the entry using the SQL Configuration Manager.  You must use a 64-bit system to create the WoW key.  The following example redirects from a named instance “SQL01\SQLUtiluty” to a default instance on “SQL02”.&lt;/p&gt;  &lt;p align="left"&gt; &lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_16.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_thumb_7.png" width="676" height="444" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure 3 – SQL Server Configuration Manager - Native&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Figure 3 shows the native key listing.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_18.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_thumb_8.png" width="669" height="439" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure 4 – SQL Server Configuration Manager – WoW&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you think you don’t need the WoW key because your app is 64 it, think again.  SQL Server Management Server is a 32-bit app, as are most SQL test utilities.  Always create both keys for 64-bit target systems.&lt;/p&gt;  &lt;p align="left"&gt;Now that the keys exist, we can extract them into a .reg file. Fire up REGEDIT and browse to the following location:  HKLM\Software\Microsoft\MSSQLServer\Client\ConnectTo.  You can also search the registry for the string value of one of the server names (old or new).&lt;/p&gt;  &lt;p align="left"&gt;Right click on the “ConnectTo” label and choose “Export”.  Save with an appropriate name and location.  The resulting file should look something like this:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_20.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_thumb_9.png" width="568" height="124" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure 5 – SQL01_Alias.reg&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Repeat the process with the location: HKLM\Software\Wow6432Node\Microsoft\MSSQLServer\Client\ConnectTo&lt;/p&gt;  &lt;p&gt;Note that if you have multiple alias entries, ALL of the entries will be exported.  In that case, you can edit the file and remove the extra aliases.&lt;/p&gt;  &lt;p&gt;You can edit the files together into a single file.  Just leave a blank line between new keys like this:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_22.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_thumb_10.png" width="568" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure 6 – SQL01_Alias_All.reg&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Of course if you have an automatic way to deploy, it makes sense to have an automatic way to Un-deploy.  To delete a registry key, simply edit the .reg file and replace the target with a “-“ sign like so.&lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_24.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.sqlteam.com/images/weblogs_sqlteam_com/geoffh/Windows-Live-Writer/A-Rose-by-Any-Other-Name_6DA2/image_thumb_11.png" width="566" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure 7 – SQL01_Alias_UNDO.reg&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Now we have the ability to move any database to any server without having to install or change any applications on any client server.  The whole process should be transparent to the applications, which makes planning and coordinating database moves a far simpler task.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/geoffh/aggbug/61389.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XL97GKU-taI:UbrWSFLtFpE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XL97GKU-taI:UbrWSFLtFpE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XL97GKU-taI:UbrWSFLtFpE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=XL97GKU-taI:UbrWSFLtFpE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XL97GKU-taI:UbrWSFLtFpE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=XL97GKU-taI:UbrWSFLtFpE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XL97GKU-taI:UbrWSFLtFpE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XL97GKU-taI:UbrWSFLtFpE:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XL97GKU-taI:UbrWSFLtFpE:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/XL97GKU-taI" height="1" width="1"/&gt;</description><dc:creator>Geoff N. Hiten</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/geoffh/archive/2011/11/29/a-rose-by-any-other-name.aspx</feedburner:origLink></item><item><title>PASS Summit 2011 &amp;ndash; Part IV</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/p-iVnC0G5yc/pass-summit-2011-ndash-part-iv.aspx</link><pubDate>Fri, 11 Nov 2011 22:04:26 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/tarad/archive/2011/11/11/pass-summit-2011-ndash-part-iv.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/tarad/comments/61388.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/tarad/comments/commentRss/61388.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/tarad/archive/2011/11/11/pass-summit-2011-ndash-part-iv.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://weblogs.sqlteam.com/tarad/services/trackbacks/61388.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/tarad/rss.aspx">PASS Summit 2011 &amp;ndash; Part IV</source><description>&lt;p&gt;This is the final blog for my PASS Summit 2011 series.  Well okay, a mini-series, I guess.&lt;/p&gt;  &lt;p&gt;On the last day of the conference, I attended Keith Elmore’ and Boris Baryshnikov’s (both from Microsoft) “Introducing the Microsoft SQL Server Code Named “Denali” Performance Dashboard Reports, Jeremiah Peschka’s (&lt;a href="http://www.brentozar.com/consultants/jeremiah-peschka/"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/peschkaj"&gt;twitter&lt;/a&gt;) “Rewrite your T-SQL for Great Good!”, and Kimberly Tripp’s (&lt;a href="http://www.sqlskills.com/BLOGS/KIMBERLY/"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/KimberlyLTripp"&gt;twitter&lt;/a&gt;) “Isolated Disasters in VLDBs”.&lt;/p&gt;  &lt;p&gt;Keith and Boris talked about the lifecycle of a session, figuring out the running time and the waiting time.  They pointed out the transient nature of the reports.  You could be drilling into it to uncover a problem, but the session may have ended by the time you’ve drilled all of the way down.  Also, the reports are for troubleshooting live problems and not historical ones.  You can use Management Data Warehouse for historical troubleshooting.  The reports provide similar benefits to the Activity Monitor, however Activity Monitor doesn’t provide context sensitive drill through.&lt;/p&gt;  &lt;p&gt;One thing I learned in Keith’s and Boris’ session was that the buffer cache hit ratio should really never be below 87% due to the read-ahead mechanism in SQL Server.  When a page is read, it will read the entire extent.  So for every page read, you get 7 more read.  If you need any of those 7 extra pages, well they are already in cache.  &lt;/p&gt;  &lt;p&gt;I had a lot of fun in Jeremiah’s session about refactoring code plus I learned a lot.  His slides were visually presented in a fun way, which just made for a more upbeat presentation.  Jeremiah says that before you start refactoring, you should look at your system.  Investigate missing or too many indexes, out-of-date statistics, and other areas that could be leading to your code running slow.  He talked about code standards.  He suggested using common abbreviations for aliases instead of one-letter aliases.  I’m a big offender of one-letter aliases, but he makes a good point.  He said that join order does not matter to the optimizer, but it does matter to those who have to read your code.  Now let’s get into refactoring!&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Eliminate useless things – useless/unneeded joins and columns.  If you don’t need it, get rid of it!&lt;/li&gt;    &lt;li&gt;Instead of using DISTINCT/JOIN, replace with EXISTS&lt;/li&gt;    &lt;li&gt;Simplify your conditions; use UNION or better yet UNION ALL instead of OR to avoid a scan and use indexes for each union query&lt;/li&gt;    &lt;li&gt;Branching logic – instead of IF this, IF that, and on and on…use dynamic SQL (sp_executesql, please!) or use a parameterized query in the application&lt;/li&gt;    &lt;li&gt;Correlated subqueries – YUCK! Replace with a join&lt;/li&gt;    &lt;li&gt;Eliminate repeated patterns&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Last, but certainly not least, was Kimberly’s session.  Kimberly is my favorite speaker.  I attended her two-day pre-conference seminar at PASS Summit 2005 as well as a &lt;a href="http://www.sqlskills.com/ImmersionEvents.asp"&gt;SQL Immersion Event&lt;/a&gt; last December.  Did I mention she’s my favorite speaker?  Okay, enough of that.&lt;/p&gt;  &lt;p&gt;Kimberly’s session was packed with demos.  I had seen some of it in the SQL Immersion Event, but it was very nice to get a refresher on these, especially since I’ve got a VLDB with some growing pains.  One key takeaway from her session is the idea to use a log shipping solution with a load delay, such as 6, 8, or 24 hours behind the primary.  In the case of say an accidentally dropped table in a VLDB, we could retrieve it from the secondary database rather than waiting an eternity for a restore to complete.  Kimberly let us know that in SQL Server 2012 (it finally has a name!), online rebuilds are supported even if there are LOB columns in your table.  This will simplify custom code that intelligently figures out if an online rebuild is possible.&lt;/p&gt;  &lt;p&gt;There was actually one last time slot for sessions that day, but I had an airplane to catch and my kids to see!&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/tarad/aggbug/61388.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=p-iVnC0G5yc:4wZgERbl0Co:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=p-iVnC0G5yc:4wZgERbl0Co:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=p-iVnC0G5yc:4wZgERbl0Co:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=p-iVnC0G5yc:4wZgERbl0Co:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=p-iVnC0G5yc:4wZgERbl0Co:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=p-iVnC0G5yc:4wZgERbl0Co:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=p-iVnC0G5yc:4wZgERbl0Co:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=p-iVnC0G5yc:4wZgERbl0Co:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=p-iVnC0G5yc:4wZgERbl0Co:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/p-iVnC0G5yc" height="1" width="1"/&gt;</description><dc:creator>Tara Kizer</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/tarad/archive/2011/11/11/pass-summit-2011-ndash-part-iv.aspx</feedburner:origLink></item><item><title>PASS Summit 2011 &amp;ndash; Part III</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/xpNoFQEfTqw/pass-summit-2011-ndash-part-iii.aspx</link><pubDate>Fri, 11 Nov 2011 20:22:14 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/tarad/archive/2011/11/11/pass-summit-2011-ndash-part-iii.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/tarad/comments/61387.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/tarad/comments/commentRss/61387.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/tarad/archive/2011/11/11/pass-summit-2011-ndash-part-iii.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://weblogs.sqlteam.com/tarad/services/trackbacks/61387.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/tarad/rss.aspx">PASS Summit 2011 &amp;ndash; Part III</source><description>&lt;p&gt;Well we’re about a month past PASS Summit 2011, and yet I haven’t finished blogging my notes! Between work and home life, I haven’t been able to come up for air in a bit.  Now on to my notes…&lt;/p&gt;  &lt;p&gt;On Thursday of the PASS Summit 2011, I attended Klaus Aschenbrenner’s (&lt;a href="http://www.sqlpassion.at/blog/"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/Aschenbrenner"&gt;twitter&lt;/a&gt;) “Advanced SQL Server 2008 Troubleshooting”, Joe Webb’s (&lt;a href="http://webbtechsolutions.com/blog/"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/joewebb"&gt;twitter&lt;/a&gt;) “SQL Server Locking &amp;amp; Blocking Made Simple”, Kalen Delaney’s (&lt;a href="http://sqlblog.com/blogs/kalen_delaney/"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/sqlqueen"&gt;twitter&lt;/a&gt;) “What Happened? Exploring the Plan Cache”, and Paul Randal’s (&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/paulrandal"&gt;twitter&lt;/a&gt;) “More DBA Mythbusters”.  I think my head grew two times in size from the Thursday sessions.  Just WOW!&lt;/p&gt;  &lt;p&gt;I took a ton of notes in Klaus' session.  He took a deep dive into how to troubleshoot performance problems.  Here is how he goes about solving a performance problem:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start by checking the wait stats DMV&lt;/li&gt;    &lt;li&gt;System health&lt;/li&gt;    &lt;li&gt;Memory issues&lt;/li&gt;    &lt;li&gt;I/O issues&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I normally start with blocking and then hit the wait stats.  &lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Wait-statistics-or-please-tell-me-where-it-hurts.aspx"&gt;Here’s the wait stat query (Paul Randal’s) that I use&lt;/a&gt; when working on a performance problem.  He highlighted a few waits to be aware of such as WRITELOG (indicates IO subsystem problem), SOS_SCHEDULER_YIELD (indicates CPU problem), and PAGEIOLATCH_XX (indicates an IO subsystem problem or a buffer pool problem).  &lt;/p&gt;  &lt;p&gt;Regarding memory issues, Klaus recommended that as a bare minimum, one should set the “max server memory (MB)” in sp_configure to 2GB or 10% reserved for the OS (whichever comes first).  This is just a starting point though!&lt;/p&gt;  &lt;p&gt;Regarding I/O issues, Klaus talked about disk partition alignment, which can improve SQL I/O performance by up to 100%.  You should use 64kb for NTFS cluster, and it’s automatic in Windows 2008 R2.&lt;/p&gt;  &lt;p&gt;Joe’s locking and blocking presentation was a good session to really clear up the fog in my mind about locking.  One takeaway that I had no idea could be done was that you can set a timeout in T-SQL code view LOCK_TIMEOUT.  If you do this via the application, you should trap error 1222.&lt;/p&gt;  &lt;p&gt;Kalen’s session went into execution plans.  The minimum size of a plan is 24k.  This adds up fast especially if you have a lot of plans that don’t get reused much.  You can use sys.dm_exec_cached_plans to check how often a plan is being reused by checking the usecounts column.  She said that we can use DBCC FLUSHPROCINDB to clear out the stored procedure cache for a specific database.  I didn’t know we had this available, so this was great to hear.  This will be less intrusive when an emergency comes up where I’ve needed to run DBCC FREEPROCCACHE.&lt;/p&gt;  &lt;p&gt;Kalen said one should enable “optimize for ad hoc workloads” if you have an adhoc loc.  This stores only a 300-byte stub of the first plan, and if it gets run again, it’ll store the whole thing.  This helps with plan cache bloat.  &lt;/p&gt;  &lt;p&gt;I have a lot of systems that use prepared statements, and Kalen says we simulate those calls by using sp_executesql.  Cool!&lt;/p&gt;  &lt;p&gt;Paul did a series of posts last year to debunk various myths and misconceptions around SQL Server.  He continues to debunk things via “DBA Mythbusters”.  You can get a PDF of a bunch of these &lt;a href="http://www.devconnections.com/updates/LasVegas_Spring10/SQL/Randal-SQL-SDB306-Mythbusters.pdf"&gt;here&lt;/a&gt;.  One of the myths he went over is the number of tempdb data files that you should have.  Back in 2000, the recommendation was to have as many tempdb data files as there are CPU cores on your server.  This no longer holds true due to the numerous cores we have on our servers.  Paul says you should start out with 1/4 to 1/2 the number of cores and work your way up from there.  BUT!  Paul likes what Bob Ward (&lt;a href="http://twitter.com/#!/bobwardms"&gt;twitter&lt;/a&gt;) says on this topic:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;8 or less cores –&amp;gt; set number of files equal to the number of cores&lt;/li&gt;    &lt;li&gt;Greater than 8 cores –&amp;gt; start with 8 files and increase in blocks of 4&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One common myth out there is to set your MAXDOP to 1 for an OLTP workload with high CXPACKET waits.  Instead of that, dig deeper first.  Look for missing indexes, out-of-date statistics, increase the “cost threshold for parallelism” setting, and perhaps set MAXDOP at the query level.  &lt;/p&gt;  &lt;p&gt;Paul stressed that you should not plan a backup strategy but instead plan a restore strategy.  What are your recoverability requirements?  Once you know that, now plan out your backups.&lt;/p&gt;  &lt;p&gt;As Paul always does, he talked about DBCC CHECKDB.  He said how fabulous it is.  I didn’t want to interrupt the presentation, so after his session had ended, I asked Paul about the need to run DBCC CHECKDB on your mirror systems.  You could have data corruption occur at the mirror and not at the principal server.  If you aren’t checking for data corruption on your mirror systems, you could be failing over to a corrupt database in the case of a disaster or even a planned failover.  You can’t run DBCC CHECKDB against the mirrored database, but you can run it against a snapshot off the mirrored database. &lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/tarad/aggbug/61387.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=xpNoFQEfTqw:zblttqcEWgA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=xpNoFQEfTqw:zblttqcEWgA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=xpNoFQEfTqw:zblttqcEWgA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=xpNoFQEfTqw:zblttqcEWgA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=xpNoFQEfTqw:zblttqcEWgA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=xpNoFQEfTqw:zblttqcEWgA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=xpNoFQEfTqw:zblttqcEWgA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=xpNoFQEfTqw:zblttqcEWgA:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=xpNoFQEfTqw:zblttqcEWgA:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/xpNoFQEfTqw" height="1" width="1"/&gt;</description><dc:creator>Tara Kizer</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/tarad/archive/2011/11/11/pass-summit-2011-ndash-part-iii.aspx</feedburner:origLink></item><item><title>A new version of SQL Treeo released</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/XSx6K-888_s/versione-2-di-sql-treeo-rilasciata.aspx</link><pubDate>Wed, 09 Nov 2011 08:34:40 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/lucaz/archive/2011/11/09/versione-2-di-sql-treeo-rilasciata.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/lucaz/comments/61386.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/lucaz/comments/commentRss/61386.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/lucaz/archive/2011/11/09/versione-2-di-sql-treeo-rilasciata.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://weblogs.sqlteam.com/lucaz/services/trackbacks/61386.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/lucaz/rss.aspx">A new version of SQL Treeo released</source><description>&lt;p&gt;A new SQL Treeo update is available at &lt;a href="http://www.sqltreeo.com"&gt;http://www.sqltreeo.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Lot of bugs fixed so now it seems to be a stable add-on for SSMS.&lt;/p&gt;  &lt;p&gt;The full change log is available here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sqltreeo.com/wp/new-version-of-sql-treeo-ssms-productivity-add-in-was-released/"&gt;http://www.sqltreeo.com/wp/new-version-of-sql-treeo-ssms-productivity-add-in-was-released/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, update your SSMS clients :)&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/lucaz/aggbug/61386.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XSx6K-888_s:jlWGFs1zUQ4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XSx6K-888_s:jlWGFs1zUQ4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XSx6K-888_s:jlWGFs1zUQ4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=XSx6K-888_s:jlWGFs1zUQ4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XSx6K-888_s:jlWGFs1zUQ4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=XSx6K-888_s:jlWGFs1zUQ4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XSx6K-888_s:jlWGFs1zUQ4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XSx6K-888_s:jlWGFs1zUQ4:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=XSx6K-888_s:jlWGFs1zUQ4:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/XSx6K-888_s" height="1" width="1"/&gt;</description><dc:creator>Luca Zavarella</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/lucaz/archive/2011/11/09/versione-2-di-sql-treeo-rilasciata.aspx</feedburner:origLink></item><item><title>Virtual Lab part 2&amp;ndash;Templates, Patterns, Baselines</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/cfjjGEGfACQ/virtual-lab-part-2ndashtemplates-patterns-baselines.aspx</link><pubDate>Tue, 01 Nov 2011 16:42:45 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/geoffh/archive/2011/11/01/virtual-lab-part-2ndashtemplates-patterns-baselines.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/geoffh/comments/61383.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/geoffh/comments/commentRss/61383.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/geoffh/archive/2011/11/01/virtual-lab-part-2ndashtemplates-patterns-baselines.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://weblogs.sqlteam.com/geoffh/services/trackbacks/61383.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/geoffh/rss.aspx">Virtual Lab part 2&amp;ndash;Templates, Patterns, Baselines</source><description>&lt;p&gt;Once you have a good virtualization platform chosen, whether it is a desktop, server or laptop environment, the temptation is to build “X”.  “X” may be a SharePoint lab, a Virtual Cluster, an AD test environment or some other cool project that you really need RIGHT NOW.  That would be doing it wrong.&lt;/p&gt;
&lt;p&gt;My grandfather taught woodworking and cabinetmaking for twenty-seven years at a trade school in Alabama.  He was the first instructor hired at that school and the only teacher for the first two years.  His students built tables, chairs, and workbenches so the school could start its HVAC courses.   Visiting as a child, I also noticed many extra “helper” stands, benches, holders, and gadgets all built from wood.  &lt;/p&gt;
&lt;p&gt;What does that have to do with a virtual lab, you ask?  Well, that is the same approach you should take.  Build stuff that you will use.  Not for solving a particular problem, but to let the Virtual Lab be part of your normal troubleshooting toolkit. &lt;/p&gt;
&lt;p&gt;Start with basic copies of various Operating Systems.  Load and patch server and desktop OS environments.  This also helps build your collection of ISO files, another essential element of a virtual Lab.  Once you have these “baseline” images, you can use your Virtualization software’s snapshot capability to freeze the image.  Clone the snapshot and you have a brand new fully patched machine in mere moments.  You may have to sysprep some of the Microsoft OS environments if you are going to create a domain environment or experiment with clustering.  That is still much faster than loading and patching from scratch.&lt;/p&gt;
&lt;p&gt;So once you have a stock of raw materials (baseline images in this case) where should you start.  Again, my grandfather’s workshop gives us the answer.  In the shop it was workbenches and tables to hold large workpieces that made the equipment more useful.  In a Windows environment the same role falls to the fundamental network services:  DHCP, DNS, Active Directory, Routing, File Services, and Storage services.  Plan your internal network setup.  Build out an AD controller with all the features listed.  Make the actual domain an isolated domain so it will not care about where you take it.  Add the Microsoft iSCSI target.  Once you have this single system, you can leverage it for almost any network environment beyond a simple stand-alone system.&lt;/p&gt;
&lt;p&gt;Having these templates and fundamental infrastructure elements ready to run means I can build a quick lab in minutes instead of hours.  My solutions are well-tested, my processes fully documented with screenshots, and my plans validated well before I have to make any changes to client systems.  the work I put in is easily returned in increased value and client satisfaction.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/geoffh/aggbug/61383.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cfjjGEGfACQ:5yAmgcUKbEY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cfjjGEGfACQ:5yAmgcUKbEY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cfjjGEGfACQ:5yAmgcUKbEY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=cfjjGEGfACQ:5yAmgcUKbEY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cfjjGEGfACQ:5yAmgcUKbEY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=cfjjGEGfACQ:5yAmgcUKbEY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cfjjGEGfACQ:5yAmgcUKbEY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cfjjGEGfACQ:5yAmgcUKbEY:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=cfjjGEGfACQ:5yAmgcUKbEY:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/cfjjGEGfACQ" height="1" width="1"/&gt;</description><dc:creator>Geoff N. Hiten</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/geoffh/archive/2011/11/01/virtual-lab-part-2ndashtemplates-patterns-baselines.aspx</feedburner:origLink></item><item><title>SQL 2012 Licensing Thoughts</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/JVE139B0FoQ/sql-2012-licensing-thoughts.aspx</link><pubDate>Thu, 03 Nov 2011 16:30:23 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/geoffh/archive/2011/11/03/sql-2012-licensing-thoughts.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/geoffh/comments/61385.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/geoffh/comments/commentRss/61385.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/geoffh/archive/2011/11/03/sql-2012-licensing-thoughts.aspx#comment</comments><slash:comments>6</slash:comments><trackback:ping>http://weblogs.sqlteam.com/geoffh/services/trackbacks/61385.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/geoffh/rss.aspx">SQL 2012 Licensing Thoughts</source><description>&lt;p&gt;The only thing more controversial than new Federal Tax plans is new Licensing plans from Microsoft.  In both cases, everyone calculates several numbers.  &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;First, will I pay more or less under this plan?  &lt;/li&gt;
    &lt;li&gt;Second, will my competition pay more or less than now?  &lt;/li&gt;
    &lt;li&gt;Third, will &amp;lt;insert interesting person/company here&amp;gt; pay more or less?  &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Not that items 2 and 3 are meaningful, that is just how people think.&lt;/p&gt;
&lt;p&gt;Much like tax plans, the devil is in the details, so lets see how this looks.  Microsoft shows it here: &lt;a title="http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-licensing.aspx" href="http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-licensing.aspx"&gt;http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-licensing.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First up is a switch from per-socket to per-core licensing.  Anyone who didn’t see something like this coming should rapidly search for a new line of work because you are not paying attention.  The explosion of multi-core processors has made SQL Server a bargain.  Microsoft is in business to make money and the old per-socket model was not going to do that going forward.&lt;/p&gt;
&lt;p&gt;Per-core licensing also simplifies virtualization licensing.  Physical Core = Virtual Core, at least for licensing.  Oversubscribe your processors, that’s your lookout.  You still pay for  what is exposed to the VM.  The cool part is you can seamlessly move physical and virtual workloads around and the licenses follow.  The catch is you have to have Software Assurance to make the licenses mobile.  Nice touch there.&lt;/p&gt;
&lt;p&gt;Let’s have a moment of silence for the late, unlamented, largely ignored Workgroup Edition.  To quote the Microsoft  FAQ:  “&lt;em&gt;Standard becomes our sole edition for basic database needs&lt;/em&gt;”.  Considering I haven’t encountered a singe instance of SQL Server Workgroup Edition in the wild, I don’t think this will be all that controversial.&lt;/p&gt;
&lt;p&gt;As for pricing, it looks like a wash with current per-socket pricing based on four core sockets.  Interestingly, that is the minimum core count Microsoft proposes to swap to transition per-socket to per-core if you are on Software Assurance.  Reading the fine print shows that if you are using more, you will get more core licenses:&lt;/p&gt;
&lt;p&gt;From the licensing FAQ.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a name="_Toc308001351"&gt;&lt;font size="3"&gt;15. How do I migrate from processor licenses to core licenses?  What is the migration path?&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Licenses purchased with Software Assurance (SA) will upgrade to SQL Server 2012 at no additional cost. EA/EAP customers can continue buying processor licenses until your next renewal after June 30, 2012. At that time, processor licenses will be exchanged for core-based licenses sufficient to cover the cores in use by processor-licensed databases (minimum of 4 cores per processor for Standard and Enterprise, and minimum of 8 EE cores per processor for Datacenter).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Looks like the folks who invested in the AMD 12-core chips will make out like bandits. &lt;/p&gt;
&lt;p&gt;Now, on to something new: SQL Server Business Intelligence Edition. Yep, finally a BI-specific SKU licensed for server+CAL configurations only.  Note that Enterprise Edition still supports the complete feature set; the BI Edition is intended for smaller shops who want to use the full BI feature set but without needing Enterprise Edition scale (or costs).  No, you don’t get ColumnStore, Compression, or Partitioning in the BI Edition.  Those are Enterprise scale features, ThankYouVeryMuch.  Then again, your starting licensing costs are about one sixth of an Enterprise Edition system (based on an 8 core server).&lt;/p&gt;
&lt;p&gt;The only part of the message I am missing is if the current Failover Licensing Policy will change.  Do we need to fully or partially license failover servers?  That is a detail I definitely want to know.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/geoffh/aggbug/61385.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=JVE139B0FoQ:gSZC-mR-pgE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=JVE139B0FoQ:gSZC-mR-pgE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=JVE139B0FoQ:gSZC-mR-pgE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=JVE139B0FoQ:gSZC-mR-pgE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=JVE139B0FoQ:gSZC-mR-pgE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=JVE139B0FoQ:gSZC-mR-pgE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=JVE139B0FoQ:gSZC-mR-pgE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=JVE139B0FoQ:gSZC-mR-pgE:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=JVE139B0FoQ:gSZC-mR-pgE:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/JVE139B0FoQ" height="1" width="1"/&gt;</description><dc:creator>Geoff N. Hiten</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/geoffh/archive/2011/11/03/sql-2012-licensing-thoughts.aspx</feedburner:origLink></item><item><title>SQL Server Developer Tools &amp;ndash; Codename Juneau vs. Red-Gate SQL Source Control</title><link>http://feeds.sqlteam.com/~r/SqlteamcomWeblogs/~3/X8kF_s_B4ME/sql-server-developer-tools-ndash-codename-juneau-vs-red-gate.aspx</link><pubDate>Wed, 26 Oct 2011 06:14:11 GMT</pubDate><guid isPermaLink="false">http://weblogs.sqlteam.com/markc/archive/2011/10/25/sql-server-developer-tools-ndash-codename-juneau-vs-red-gate.aspx</guid><wfw:comment>http://weblogs.sqlteam.com/markc/comments/61382.aspx</wfw:comment><wfw:commentRss>http://weblogs.sqlteam.com/markc/comments/commentRss/61382.aspx</wfw:commentRss><comments>http://weblogs.sqlteam.com/markc/archive/2011/10/25/sql-server-developer-tools-ndash-codename-juneau-vs-red-gate.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://weblogs.sqlteam.com/markc/services/trackbacks/61382.aspx</trackback:ping><source url="http://weblogs.sqlteam.com/markc/rss.aspx">SQL Server Developer Tools &amp;ndash; Codename Juneau vs. Red-Gate SQL Source Control</source><description>&lt;p&gt;So how do the new SQL Server Developer Tools (previously code-named Juneau) stack up against SQL Source Control?  Read on to find out.&lt;/p&gt;  &lt;p&gt;At the PASS Community Summit a couple of weeks ago, it was announced that the previously code-named Juneau software would be released under the name of SQL Server Developer Tools with the release of SQL Server 2012.  This replacement for Database Projects in Visual Studio (also known in a former life as Data Dude) has some great new features.  I won’t attempt to describe them all here, but I will applaud Microsoft for making major improvements.  One of my favorite changes is the way database elements are broken down.  Previously every little thing was in its own file.  For example, indexes were each in their own file.  I always hated that.  Now, SSDT uses a pattern similar to Red-Gate’s and puts the indexes and keys into the same file as the overall table definition.&lt;/p&gt;  &lt;p&gt;Of course there are really cool features to keep your database model in sync with the actual source scripts, and the rename refactoring feature is now touted as being more than just a search and replace, but rather a “semantic-aware” search and replace.  Funny, it reminds me of SQL Prompt’s Smart Rename feature.  But I’m not writing this just to criticize Microsoft and argue that they are late to the party with this feature set.  Instead, I do see it as a viable alternative for folks who want all of their source code to be version controlled, but there are a couple of key trade-offs that you need to know about when you choose which tool set to use.&lt;/p&gt;  &lt;h3&gt;First, the basics&lt;/h3&gt;  &lt;p&gt;Both tool sets integrate with a wide variety of source control systems including the most popular: Subversion, GIT, Vault, and Team Foundation Server.  Both tools have integrated functionality to produce objects to upgrade your target database when you are ready (DACPACs in SSDT, integration with SQL Compare for SQL Source Control).  If you regularly live in Visual Studio or the Business Intelligence Development Studio (BIDS) then SSDT will likely be comfortable for you.  Like BIDS, SSDT is a Visual Studio Project Type that comes with SQL Server, and if you don’t already have Visual Studio installed, it will install the shell for you.  If you already have Visual Studio 2010 installed, then it will just add this as an available project type.  On the other hand, if you regularly live in SQL Server Management Studio (SSMS) then you will really enjoy the SQL Source Control integration from within SSMS.  Both tool sets store their database model in script files.  In SSDT, these are on your file system like other source files; in SQL Source Control, these are stored in the folder structure in your source control system, and you can always GET them to your file system if you want to browse them directly.&lt;/p&gt;  &lt;p&gt;For me, the key differentiating factors are 1) a single, unified check-in, and 2) migration scripts.  How you value those two features will likely make your decision for you.&lt;/p&gt;  &lt;h3&gt;Unified Check-In&lt;/h3&gt;  &lt;p&gt;If you do a &lt;a href="http://martinfowler.com/articles/continuousIntegration.html"&gt;continuous-integration&lt;/a&gt; (CI) style of development that triggers an automated build with unit testing on every check-in of source code, and you use Visual Studio for the rest of your development, then you will want to really consider SSDT.  Because it is just another project in Visual Studio, it can be added to your existing Solution, and you can then do a complete, or unified single check-in of all changes whether they are application or database changes.  This is simply not possible with SQL Source Control because it is in a different development tool (SSMS instead of Visual Studio) and there is no way to do one unified check-in between the two.  You CAN do really fast back-to-back check-ins, but there is the possibility that the automated build that is triggered from the first check-in will cause your unit tests to fail and the CI tool to report that you broke the build.  Of course, the automated build that is triggered from the second check-in which contains the “other half” of your changes should pass and so the amount of time that the build was broken may be very, very short, but if that is very, very important to you, then SQL Source Control just won’t work; you’ll have to use SSDT.&lt;/p&gt;  &lt;h3&gt;Refactoring and Migrations&lt;/h3&gt;  &lt;p&gt;If you work on a mature system, or on a not-so-mature but also not-so-well-designed system, where you want to refactor the database schema as you go along, but you can’t have data suddenly disappearing from your target system, then you’ll probably want to go with SQL Source Control.  As &lt;a href="http://weblogs.sqlteam.com/markc/archive/2011/08/08/sql-source-control-and-custom-change-scripts.aspx"&gt;I wrote previously&lt;/a&gt;, there are a number of changes which you can make to your database that the comparison tools (both from Microsoft and Red Gate) simply cannot handle without the possibility (or probability) of data loss.  Currently, SSDT only offers you the ability to inject PRE and POST custom deployment scripts.  There is no way to insert your own script in the middle to override the default behavior of the tool.  In version 3.0 of SQL Source Control (&lt;a href="http://www.surveymk.com/s/SqlSourceControl_Download"&gt;Early Access version now available&lt;/a&gt;) you have that ability to create your own custom migration script to take the place of the commands that the tool would have done, and ensure the preservation of your data.  Or, even if the default tool behavior would have worked, but you simply know a better way then you can take control and do things your way instead of theirs.&lt;/p&gt;  &lt;h3&gt;You Decide&lt;/h3&gt;  &lt;p&gt;In the environment I work in, our automated builds are not triggered off of check-ins, but off of the clock (currently once per night) and so there is no point at which the automated build and unit tests will be triggered without having both sides of the development effort already checked-in.  Therefore having a unified check-in, while handy, is not critical for us.  As for migration scripts, these are critically important to us.  We do a lot of new development on systems that have already been in production for years, and it is not uncommon for us to need to do a refactoring of the database.  Because of the maturity of the existing system, that often involves data migrations or other additional SQL tasks that the comparison tools just can’t detect on their own.  Therefore, the ability to create a custom migration script to override the tool’s default behavior is very important to us.  And so, you can see why we will continue to use Red Gate SQL Source Control for the foreseeable future.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/markc/aggbug/61382.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X8kF_s_B4ME:4MmY2z0bhGM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X8kF_s_B4ME:4MmY2z0bhGM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X8kF_s_B4ME:4MmY2z0bhGM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=X8kF_s_B4ME:4MmY2z0bhGM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X8kF_s_B4ME:4MmY2z0bhGM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?i=X8kF_s_B4ME:4MmY2z0bhGM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X8kF_s_B4ME:4MmY2z0bhGM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X8kF_s_B4ME:4MmY2z0bhGM:gRsNgB-aSSA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=gRsNgB-aSSA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.sqlteam.com/~ff/SqlteamcomWeblogs?a=X8kF_s_B4ME:4MmY2z0bhGM:as7VaYKENsE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SqlteamcomWeblogs?d=as7VaYKENsE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SqlteamcomWeblogs/~4/X8kF_s_B4ME" height="1" width="1"/&gt;</description><dc:creator>Ajarn Mark Caldwell</dc:creator><feedburner:origLink>http://weblogs.sqlteam.com/markc/archive/2011/10/25/sql-server-developer-tools-ndash-codename-juneau-vs-red-gate.aspx</feedburner:origLink></item></channel></rss>

