<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wagnerblog &#187; SQL Server</title>
	<atom:link href="http://wagnerblog.com/category/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://wagnerblog.com</link>
	<description>Development Ideas and Ramblings</description>
	<lastBuildDate>Fri, 06 Nov 2009 19:11:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Who would have thought&#8230;</title>
		<link>http://wagnerblog.com/2007/07/who-would-have-thought/</link>
		<comments>http://wagnerblog.com/2007/07/who-would-have-thought/#comments</comments>
		<pubDate>Fri, 06 Jul 2007 15:22:29 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=865</guid>
		<description><![CDATA[Linchi Shea reports that running stored procedures on SQL server without the Owner qualifier &#8211; as in dbo.xxx for example &#8211; can impact the performance of that server and database in drastic ways. Depending on which version of SQL Server you are running just adding an owner qualifier can get you anywhere from 5% to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sqlblog.com/blogs/linchi_shea/archive/2007/07/05/performance-impact-of-procedure-calls-without-owner-qualification-sql-server-2000.aspx">Linchi Shea</a> reports that running stored procedures on SQL server without the Owner qualifier &#8211; as in dbo.xxx for example &#8211; can impact the performance of that server and database in drastic ways. Depending on which version of SQL Server you are running just adding an owner qualifier can get you anywhere from 5% to 30% better performance.<br />
I know many developers (myself included) who like to remove the owner qualifier just for reasons of readability. Well&#8230; no more! From now on it stays.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/07/who-would-have-thought/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nice article on LINQ  to SQL</title>
		<link>http://wagnerblog.com/2007/06/nice-article-on-linq-to-sql/</link>
		<comments>http://wagnerblog.com/2007/06/nice-article-on-linq-to-sql/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 13:34:42 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET Tools]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=844</guid>
		<description><![CDATA[Roger Jennings has a nice summary and various links to a great article by Ian Cooper that looks at LINQ from the point of view of DDD, TDD and PI.
Roger notes another voice in the chorus that reiterates we need support for more db&#8217;s than simply the ones by MS. He says &#8220;&#8230;.He then goes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oakleafblog.blogspot.com/2007/06/ian-cooper-takes-on-ddd-tdd-and-pi-with.html">Roger Jennings</a> has a nice summary and various links to a great article by Ian Cooper that looks at LINQ from the point of view of DDD, TDD and PI.<br />
Roger notes another voice in the chorus that reiterates we need support for more db&#8217;s than simply the ones by MS. He says <em>&#8220;&#8230;.He then goes on with a plea to Microsoft to enable LINQ to SQL for databases other than SQL Server. I agree that EF and EDM are far too heavyweight approaches to ordinary object persistence needs and that a single-file or attribute-based approach is likely to satisfy 90% of developer&#8217;s needs for an object/relational mapping tool. But it won&#8217;t if it&#8217;s locked into SQL Server 200x. It&#8217;s especially surprises me that the ADO.NET team would choose EF and EDM over LINQ to SQL as the O/RM tool for their lightweight SQL Server Compact Edition</em>.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/06/nice-article-on-linq-to-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frans is a little peeved at Architectural Astronauts</title>
		<link>http://wagnerblog.com/2007/05/frans-is-a-little-peeved-at-architectural-astronauts/</link>
		<comments>http://wagnerblog.com/2007/05/frans-is-a-little-peeved-at-architectural-astronauts/#comments</comments>
		<pubDate>Tue, 22 May 2007 03:01:21 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Quality]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=828</guid>
		<description><![CDATA[Who can blame the guy. He has a product that supports a bunch of different database servers. So consequently he is very familiar with his subject matter.
He says: &#8220;...Scientists should stick with science. What they invent and discover should be moved to the real world by engineers, not by scientists as well. Because, if you [...]]]></description>
			<content:encoded><![CDATA[<p>Who can blame the guy. He has a product that supports a bunch of different database servers. So consequently he is very familiar with his subject matter.</p>
<p>He says: &#8220;.<em>..Scientists should stick with science. What they invent and discover should be moved to the real world by engineers, not by scientists as well. Because, if you leave it to scientists, you&#8217;ll end up with horrible syntaxis like the ROW_NUMBER() function in SqlServer 2005</em>&#8230;.&#8221;</p>
<p><a href="http://weblogs.asp.net/fbouma/archive/2007/05/21/api-s-and-production-code-shouldn-t-be-designed-by-scientists.aspx">Read the entire post</a>. Its certainly eye opening to everyone who hasn&#8217;t had to implement paging in another db outside of SQL Server.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/05/frans-is-a-little-peeved-at-architectural-astronauts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSIS Configuration File Issues</title>
		<link>http://wagnerblog.com/2007/05/ssis-configuration-file-issues/</link>
		<comments>http://wagnerblog.com/2007/05/ssis-configuration-file-issues/#comments</comments>
		<pubDate>Wed, 16 May 2007 04:14:25 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=821</guid>
		<description><![CDATA[Here is an odd situation I came across today. This probably wont happen to many other people because it is so specific to certain network settings. But if it happens to you, maybe I can save you the 4 hours I spent on hold today with MS SQL Server PSS&#8230; whilst paying $250 for the [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an odd situation I came across today. This probably wont happen to many other people because it is so specific to certain network settings. But if it happens to you, maybe I can save you the 4 hours I spent on hold today with MS SQL Server PSS&#8230; whilst paying $250 for the privilege.</p>
<p>I have an SSIS package that runs perfectly well in my Integration Studio dev environment, locally. Once it was published to a staging server it kept failing with an assortment of errors pointing to login credential issues. Nothing I tried seemed to help.</p>
<p>If you are coming to SSIS from SQL Server 2000 DTS &#8211; boy are you in for a surprise. Some things are way nice, but others &#8211; like the configuration management aspects are tough to get used to. As it stands, SSIS Packages maintain various settings in configurations once they are deployed. The first clue to that aspect is when you try to run a package on the server and find that the config string doesn&#8217;t contain the password anymore. Say hello to the MS Trustworthy Computing initiative. To the unsuspecting developer this little diddy can be a real doozy. Ok enough with the funny language. Because this wasn&#8217;t funny, especially after holding the phone fo four hours waiting for PSS to answer.</p>
<p>Ostensibly the issue had to do with the configuration file used by the package. But even recreating the file and rebuilding / redeploying the package didnt make any difference. I found that using dtexec to run the package from the command line was very useful because it provided immediate feedback. Little by little the PSS Engineer and I narrowed the problem down.</p>
<p>In the end it turns out that a common network design practice got in the way of my configs. You see, our data center has servers with publicly mapped IP addresses and privately mapped ones. In other words there is a public set of addresses that is severely constraints and an internal set of IP&#8217;s for the same boxes. My dev environment was able to connect to the staging database using the public IP of that box because our office is physically and from a topology point of view very seperate from the datacenter holding the server. So my package when run locally executed fine but when run on the staging box at the data center it failed because it could not resolve the IP address used. It could not resolve the external IP address used in the config because&#8230;. it wasnt running external to the server. See? The solution to all this was to change the config to use the named instance of the database server &#8211; as in LA-Staging01 instead of 216.53.93.11 &#8211; that did the trick. The package writes whatever is defined in the connection object for SQL Server connection to its config file. Hence the use of the external IP, while completely fine for my dev box, caused the error on deployment.</p>
<p>You might say &#8220;d&#8217;oh &#8211; everybody knows you shouldnt use IP addresses in your config&#8221;. Well, I dont know if its that well known but I can say the reason why I wasnt using a named instance for my connections was the fact that I couldnt get the name to resolve properly.  Turns out there are two ways one can the name to resolve. One is via the via the the hosts file. Now why didnt I think of that? When working with web sites I am in the hosts file all day long. What was it about this SQL box that made me not connect the dots here. Oh well. The other method is via a SQL utility called  cliconfg , which allows you to define a local SQL alias by name and then point that alias to a specific IP. That did the trick.</p>
<p>Now all my connections are using a consistent name for the server the problem is taken care of. Lesson learned.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/05/ssis-configuration-file-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Usage Is Up</title>
		<link>http://wagnerblog.com/2007/03/mysql-usage-is-up/</link>
		<comments>http://wagnerblog.com/2007/03/mysql-usage-is-up/#comments</comments>
		<pubDate>Tue, 27 Mar 2007 13:32:36 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET Tools]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=795</guid>
		<description><![CDATA[SD Times reports : &#8220;&#8230;Evans Data today released statistics that showed MySQL usage growing among developers over the past two years. The results of this two-year survey showed that 40 percent of American developers are using databases in their work, and among those, 25 percent more are using MySQL than were two years ago. A [...]]]></description>
			<content:encoded><![CDATA[<p>SD Times reports : &ldquo;&hellip;<span class="lead-date"></span>Evans Data today released statistics that showed MySQL usage growing among developers over the past two years. The results of this two-year survey showed that 40 percent of American developers are using databases in their work, and among those, 25 percent more are using MySQL than were two years ago. A year ago, only 32 percent of developers were using databases in their work, according to the study.&rdquo; </p>
<p>Amazing how far you can get with a free database&hellip;.. I still prefer SQL Server, but all&nbsp;the RoR examples I see deal with MySQL, so I had to get a little bit familiar with it. </p>
<p>Thus far the most innovative usage of it that I have seen was the in-memory option of MySQL (which is wicket fast) being used as a fancy caching layer for an Informix based system. Since there are only about two Infomrix dba&rsquo;s left in this country, I think thats a good approach. </p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/03/mysql-usage-is-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caber Computing &#8211; SqlTac</title>
		<link>http://wagnerblog.com/2007/03/caber-computing-sqltac/</link>
		<comments>http://wagnerblog.com/2007/03/caber-computing-sqltac/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 13:02:41 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[.NET Tools]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=793</guid>
		<description><![CDATA[
Speaking of LINQ, Caber Computing offers a beta for a product called SqlTac which hopes to do several interesting things. First it attempts to provide a graphical representation of the &#8220;soundness&#8221; or efficiency of your db. Secondly it allows you to cretae&#160; versioned set of scripts plus a test database containing &#8211; you guessed it [...]]]></description>
			<content:encoded><![CDATA[<blockquote cite="http://www.cabercomputing.com/Products-SqlTac-How.aspx"></blockquote>
<p class="citation"><cite cite="http://www.cabercomputing.com/Products-SqlTac-How.aspx">Speaking of LINQ, Caber Computing offers a beta for a product called SqlTac which hopes to do several interesting things. First it attempts to provide a graphical representation of the &ldquo;soundness&rdquo; or efficiency of your db. Secondly it allows you to cretae&nbsp; versioned set of scripts plus a test database containing &ndash; you guessed it &ndash; test data. Seems like an interesting idea. There are aspects of this tool that are better done by other products. For example dependency analysis is done extremely well by SQL Clean. But this looks promising for the always present need to document and standardize the db. </cite></p>
<p class="citation"><cite cite="http://www.cabercomputing.com/Products-SqlTac-How.aspx"><a href="http://www.cabercomputing.com/Products-SqlTac-How.aspx" target="_blank">More Info</a></cite></p>
<p class="citation"><cite cite="http://www.cabercomputing.com/Products-SqlTac-How.aspx"><img alt="Caber" hspace="1" src="http://www.wagnerblog.com/images/caber_small.jpg" align="left" vspace="1" border="0" /></cite></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/03/caber-computing-sqltac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ten Common Database Design Mistakes</title>
		<link>http://wagnerblog.com/2007/03/ten-common-database-design-mistakes/</link>
		<comments>http://wagnerblog.com/2007/03/ten-common-database-design-mistakes/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 13:31:16 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=788</guid>
		<description><![CDATA[Louis Davidson at simple-talk has an article by the same name. I&#8217;ve pulled the following section from it, because I am currently faced with EXACTLY this problem. One of our Architecture Astronauts thought it would be good to store differing types of data in one table. 
One of the hardest things in our industry is [...]]]></description>
			<content:encoded><![CDATA[<p>Louis Davidson at <a href="http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/" target="_blank">simple-talk </a>has an article by the same name. I&rsquo;ve pulled the following section from it, because I am currently faced with EXACTLY this problem. One of our Architecture Astronauts thought it would be good to store differing types of data in one table. </p>
<p>One of the hardest things in our industry is to get a team of people to work along the same line. Some have compared managing programmers to herding cats. In my case many of the cats think they know best&hellip;.. </p>
<p>So here is Louis: </p>
<h3>One table to hold all domain values </h3>
<p>&#8220;<i>One Ring to rule them all and in the darkness bind them</i>&#8220;</p>
<p>This is all well and good for fantasy lore, but it&#8217;s not so good when applied to database design, in the form of a &#8220;ruling&#8221; domain table. Relational databases are based on the fundamental idea that every object represents one and only one thing. There should never be any doubt as to what a piece of data refers to. By tracing through the relationships, from column name, to table name, to primary key, it should be easy to examine the relationships and know exactly what a piece of data means.</p>
<p>The big myth perpetrated by architects who don&#8217;t really understand relational database architecture (me included early in my career) is that the more tables there are, the more complex the design will be. So, conversely, shouldn&#8217;t condensing multiple tables into a single &#8220;catch-all&#8221; table simplify the design? It does sound like a good idea, but at one time giving Pauly Shore the lead in a movie sounded like a good idea too.</p>
<p>For example, consider the following model snippet where I needed domain values for:</p>
<ul>
<li>Customer CreditStatus </li>
<li>Customer Type </li>
<li>Invoice Status </li>
<li>Invoice Line Item BackOrder Status </li>
<li>Invoice Line Item Ship Via Carrier</li>
</ul>
<p>On the face of it that would be five domain tables&hellip;but why not just use one generic domain table, like this?</p>
<p><img alt="Db1" hspace="1" src="http://www.wagnerblog.com/images/db1.gif" align="textBottom" vspace="1" border="0" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>This may seem a very clean and natural way to design a table for all but the problem is that it is just not very natural to work with in SQL. Say we just want the domain values for the <b>Customer </b>table:</p>
<p><font face="Courier New" size="1">SELECT *FROM Customer&nbsp; <br />&nbsp; JOIN GenericDomain as CustomerType&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; ON Customer.CustomerTypeId = CustomerType.GenericDomainId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; and CustomerType.RelatedToTable = &#8216;Customer&#8217;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; JOIN GenericDomain as CreditStatus&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; ON&nbsp; Customer.CreditStatusId = CreditStatus.GenericDomainId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and CreditStatus.RelatedToTable = &#8216;Customer&#8217; and CreditStatus.RelatedToColumn = &#8216; CreditStatusId&#8217;<br /></font></p>
<p>As you can see, this is far from being a natural join. It comes down to the problem of mixing apples with oranges. At first glance, domain tables are just an abstract concept of a container that holds text. And from an implementation centric standpoint, this is quite true, but it is not the correct way to build a database. In a database, the process of normalization, as a means of breaking down and isolating data, takes every table to the point where one row represents one thing. And each domain of values is a distinctly different thing from all of the other domains (unless it is not, in which case the one table will suffice.). So what you do, in essence, is normalize the data on each usage, spreading the work out over time, rather than doing the task once and getting it over with.</p>
<p><img alt="Db2" hspace="1" src="http://www.wagnerblog.com/images/db2.gif" align="textBottom" vspace="1" border="0" /></p>
<p>Looks harder to do, right? Well, it is initially. Frankly it took me longer to flesh out the example tables. But, there are quite a few tremendous gains to be had:</p>
<ul>
<li>Using the data in a query is much easier:</li>
</ul>
<p dir="ltr" style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font face="Cordia New" size="1"> SELECT *<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM Customer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOIN CustomerType<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON Customer.CustomerTypeId = CustomerType.CustomerTypeId<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JOIN CreditStatus<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON&nbsp; Customer.CreditStatusId = CreditStatus.CreditStatusId </font></p>
<ul>
<li><span lang="EN-US">Data can be validated using foreign key constraints very naturally, something not feasible for the other solution unless you implement ranges of keys for every table &ndash; a terrible mess to maintain. </span></li>
<li>If it turns out that you need to keep more information about a <b>ShipViaCarrier</b> than just the code, &#8216;UPS&#8217;, and description, &#8216;United Parcel Service&#8217;, then it is as simple as adding a column or two. You could even expand the table to be a full blown representation of the businesses that are carriers for the item. </li>
<li>All of the smaller domain tables will fit on a single page of disk. This ensures a single read (and likely a single page in cache). If the other case, you might have your domain table spread across many pages, unless you cluster on the referring table name, which then could cause it to be more costly to use a non-clustered index if you have many values. </li>
<li>You can still have one editor for all rows, as most domain tables will likely have the same base structure/usage. And while you would lose the ability to query all domain values in one query easily, why would you want to? (A union query could easily be created of the tables easily if needed, but this would seem an unlikely need.)</li>
</ul>
<p>I should probably rebut the thought that might be in your mind. &#8220;What if I need to add a new column to all domain tables?&#8221; For example, you forgot that the customer wants to be able to do custom sorting on domain values and didn&#8217;t put anything in the tables to allow this. This is a fair question, especially if you have 1000 of these tables in a very large database. First, this rarely happens, and when it does it is going to be a major change to your database in either way.</p>
<p>Second, even if this became a task that was required, SQL has a complete set of commands that you can use to add columns to tables, and using the system tables it is a pretty straightforward task to build a script to add the same column to hundreds of tables all at once. That will not be as easy of a change, but it will not be so much more difficult to outweigh the large benefits.</p>
<p>The point of this tip is simply that it is better to do the work upfront, making structures solid and maintainable, rather than trying to attempt to do the least amount of work to start out a project. By keeping tables down to representing one &#8220;thing&#8221; it means that most changes will only affect one table, after which it follows that there will be less rework for you down the road.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/03/ten-common-database-design-mistakes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kimberly L. Tripp: The Clustered Index Debate Continues&#8230;</title>
		<link>http://wagnerblog.com/2007/02/kimberly-l-tripp-the-clustered-index-debate-continues/</link>
		<comments>http://wagnerblog.com/2007/02/kimberly-l-tripp-the-clustered-index-debate-continues/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 14:08:02 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=776</guid>
		<description><![CDATA[In the years since the storage engine was re-architected (SQL Server 7.0+) there&#8217;s been constant debate on how to appropriately choose the clustered index for your tables. I&#8217;ve generally recommended an ever-increasing key to use as a clustered index and many find that counterintuitive. The primary reason people feel it&#8217;s counterintuitive is that it creates [...]]]></description>
			<content:encoded><![CDATA[<blockquote cite="http://www.sqlskills.com/blogs/kimberly/2007/02/02/TheClusteredIndexDebateContinues.aspx"><p>In the years since the storage engine was re-architected (SQL Server 7.0+) there&#8217;s been constant debate on how to appropriately choose the clustered index for your tables. I&#8217;ve generally recommended an ever-increasing key to use as a clustered index and many find that counterintuitive. The primary reason people feel it&#8217;s counterintuitive is that it creates a hotspot of activity. [If "hotspot" is not a familar term - a hotspot is solely an active place within your table.] Hotspots were something that we greatly tried to avoid PRIOR to SQL Server 7.0 because of row level locking (and this is where the term hot spot became a negative term). In fact, it doesn&#8217;t have to be a negative term. However, since the storage engine was rearchitected/redesigned (in SQL Server 7.0) and now includes row level locking, this motivation (to avoid hotspots) is no longer there. In fact, the opposite is true. Hotspots (specifically hot PAGES not hot ROWS) can be very beneficial because they; minimize the number of pages needed in cache, improve the likelihood of the required page already being in cache and in general, they minimize the overall amount of cache required. So, this is why many of us (SQL Server consultants) have changed our recommendation on where to create the clustering key. Instead of focusing on range queries we now focus on placing the clustering key on an ever-increasing key. In earlier releases focusing on range queries for the clustered index reduced hotspots for insert/update and this in fact was the PRIMARY motivation to choose them, NOT range query performance! But &#8211; there are even MORE reasons to choose an ever-increasing key and they are based on internals as well. These internals are based on the significant changes made in the storage engine for 7.0+.</p></blockquote>
<p class="citation"><cite cite="http://www.sqlskills.com/blogs/kimberly/2007/02/02/TheClusteredIndexDebateContinues.aspx"><a href="http://www.sqlskills.com/blogs/kimberly/2007/02/02/TheClusteredIndexDebateContinues.aspx" target="_blank">Read Article</a></cite>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/02/kimberly-l-tripp-the-clustered-index-debate-continues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wicked Code: The SQL Site Map Provider You&#8217;ve Been Waiting For &#8212; MSDN Magazine, February 2006</title>
		<link>http://wagnerblog.com/2007/02/wicked-code-the-sql-site-map-provider-youve-been-waiting-for-msdn-magazine-february-2006/</link>
		<comments>http://wagnerblog.com/2007/02/wicked-code-the-sql-site-map-provider-youve-been-waiting-for-msdn-magazine-february-2006/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 05:11:55 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Asp.Net 2.o]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=769</guid>
		<description><![CDATA[This is really very useful in larger sites. Now I only wonder if having a SiteMap provider can increase SEO. It even includes a nice little example of SQL 2005 cache dependency

The one drawback to site navigation is that XmlSiteMapProvider is the one and only site map provider included in the box with ASP.NET 2.0, [...]]]></description>
			<content:encoded><![CDATA[<p>This is really very useful in larger sites. Now I only wonder if having a SiteMap provider can increase SEO. It even includes a nice little example of SQL 2005 cache dependency</p>
<blockquote cite="http://msdn.microsoft.com/msdnmag/issues/06/02/wickedcode/default.aspx">
<p>The one drawback to site navigation is that XmlSiteMapProvider is the one and only site map provider included in the box with ASP.NET 2.0, which means that site maps must be stored in XML files. Even before ASP.NET 2.0 shipped, developers were clamoring for a means to store site maps in databases.</p>
</blockquote>
<p class="citation"><cite cite="http://msdn.microsoft.com/msdnmag/issues/06/02/wickedcode/default.aspx"><a href="http://msdn.microsoft.com/msdnmag/issues/06/02/wickedcode/default.aspx" target="_blank">Read Article</a></cite>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2007/02/wicked-code-the-sql-site-map-provider-youve-been-waiting-for-msdn-magazine-february-2006/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The most links for one post</title>
		<link>http://wagnerblog.com/2006/10/the-most-links-for-one-post/</link>
		<comments>http://wagnerblog.com/2006/10/the-most-links-for-one-post/#comments</comments>
		<pubDate>Fri, 20 Oct 2006 08:11:42 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET Code Related]]></category>
		<category><![CDATA[.NET Tools]]></category>
		<category><![CDATA[Asp.Net 2.o]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=680</guid>
		<description><![CDATA[My collection of interesting links has been growing for weeks and I haven&#8217;t had the time to post them. So here they are in one massive list. 

Daniel Zeiss is on rev 9 of his major Ajax framework comparison. Great stuff. 
Today I installed ScrewTurn Wiki in 10 minutes (as opposed to an hour for [...]]]></description>
			<content:encoded><![CDATA[<p>My collection of interesting links has been growing for weeks and I haven&rsquo;t had the time to post them. So here they are in one massive list. </p>
<ul>
<li>Daniel Zeiss is on rev 9 of his major <a href="http://www.daniel-zeiss.de/AJAXComparison/Results.htm" target="_blank">Ajax framework comparison</a>. Great stuff. </li>
<li>Today I installed <a href="http://www.screwturn.eu/Wiki.ashx" target="_blank">ScrewTurn Wiki </a>in 10 minutes (as opposed to an hour for Sharepoint2007) </li>
<li>Another very <a href="http://www.colorjack.com/" target="_blank">cool color scheme generator </a></li>
<li>Microsoft has updated the <a href="http://www.microsoftcom/downloads/details.aspx?FamilyID=72d6aa49-787d-4118-ba5f-4f30fe913628&amp;DisplayLang=en" target="_blank">XML Notepad</a>. It has some very cool features.&nbsp; </li>
<li>Nice<a href="http://blogs.msdn.com/bwelcker/archive/2006/10/12/the-tigers-have-spoken-reporting-services-white-papers.aspx" target="_blank">list of links </a>for Reporting Services&nbsp; </li>
<li>A <a href="http://geekswithblogs.net/mahesh/archive/2006/10/10/93658.aspx" target="_blank">comparison of </a>Themes versus CSS </li>
<li>Atlas crash course <a href="http://devlicio.us/blogs/ziemowit_skowronski/archive/2006/10/04/Atlas-Extender-Crash-Course-_1320_-Part-1_3A00_-Introduction.aspx" target="_blank">part 1</a> </li>
<li>Atlas crash course <a href="http://devlicio.us/blogs/ziemowit_skowronski/archive/2006/10/10/Atlas-Extender-Crash-Course-_1320_-Part-2_3A00_-Page-Methods.aspx" target="_blank">part 2</a> </li>
<li>Creating and using your <a href="http://www.codeguru.com/csharp/.net/net_general/tipstricks/article.php/c12633/#more" target="_blank">own custom events </a></li>
<li>Enum to list <a href="http://devlicio.us/blogs/joe_niland/archive/2006/10/10/Generic-Enum-to-List_3C00_T_3E00_-converter.aspx" target="_blank">converter </a></li>
<li>Chad Finsterwald Server Side <a href="http://developer.coreweb.com/articles/Default4.aspx" target="_blank">Validation Lib </a></li>
<li>Convert the .NET tilde to normal <a href="http://devlicio.us/blogs/steve_wright/archive/2006/10/07/My-favorite-little-function.aspx" target="_blank">path in js </a></li>
<li>Prototyping <a href="http://www.xml-blog.com/articles/2006/09/29/in-browser-wireframe-prototyping-with-frametastic" target="_blank">wireframes directly in FF </a>browser </li>
<li><a href="http://www.sitevista.com/cssvista" target="_blank">Edit CSS </a>in Both IE and FF&nbsp; </li>
<li>Examine the <a href="http://devlicio.us/blogs/billy_mccafferty/archive/2006/10/09/Examine-XML-of-Web-Service-Response.aspx" target="_blank">XML output </a>of a webservice </li>
<li>Looking for an open <a href="http://intelligencia.com.au/australia/index.php/restfulnet/" target="_blank">rest-based api</a>? </li>
<li>Nice! Chad Finsterwals <a href="http://developer.coreweb.com/articles/Default15.aspx" target="_blank">Reg Expressions Class</a>. Patterns all set to verify one or multiple matches&nbsp; </li>
<li>Interesting discussion of <a href="http://devlicio.us/blogs/steve_wright/archive/2006/10/03/Importing-your-Business-Data-to-ASP.NET.aspx" target="_blank">scheduled app execution in asp.net </a></li>
<li>The Commerce Server team used divs and design time properties to create <a href="http://blogs.msdn.com/crisag/archive/2006/10/03/The-Page-Appearance-Framework_2E00_.aspx" target="_blank">layout flexibility in their product </a></li>
<li>RadRails made <a href="http://www.radrails.org/" target="_blank">some progress </a>-&nbsp; </li>
<li>Whitpaper on sql <a href="http://blogs.msdn.com/sqlblog/archive/2006/09/23/768110.aspx" target="_blank">server db physical design </a>decisions.&nbsp; </li>
<li>Tools for <a href="http://adminfoo.net/tools" target="_blank">sys admins </a></li>
<li>Rick Strahl talks about <a href="http://west-wind.com/weblog/posts/7551.aspx" target="_blank">Atlas </a></li>
<li><a href="http://www.codeproject.com/useritems/Kelvin.asp" target="_blank">Craig Dunn </a>- Generics serialization and Unit Tests (via Jason Haley)&nbsp; </li>
<li>Everything you need to create and <a href="http://agramont.net/blogs/provware/default.aspx" target="_blank">manage IIS sites in code </a>-&nbsp; </li>
<li><a href="http://blogs.technet.com/wardpond/archive/2006/06/09/434689.aspx" target="_blank">Ward Pond&#8217;s </a>Time Zone Table </li>
<li>A must read. The Definitive Guide to <a href="http://infinitiesloop.blogspot.com/2006/03/truly-understanding-viewstate.html" target="_blank">ASP.NET ViewState </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2006/10/the-most-links-for-one-post/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
	</channel>
</rss>
