<?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>Rob Boek &#187; SQL Server</title>
	<atom:link href="http://robboek.com/tag/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://robboek.com</link>
	<description>Husband, Father, SQL Server Consultant, Tech Geek.</description>
	<lastBuildDate>Sat, 15 May 2010 19:16:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>UPDATE Statements and Indexes</title>
		<link>http://robboek.com/2009/05/29/update-statements-and-indexes/</link>
		<comments>http://robboek.com/2009/05/29/update-statements-and-indexes/#comments</comments>
		<pubDate>Fri, 29 May 2009 10:50:37 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/05/29/update-statements-and-indexes/</guid>
		<description><![CDATA[I ran into a database earlier this week with a lot of stored procedures that look like this:

CREATE PROCEDURE updateUser
  @id INT, @FirstName VARCHAR&#40;50&#41;, @LastName VARCHAR&#40;50&#41;, @EmailAddress VARCHAR&#40;50&#41;
AS
SET NOCOUNT ON
&#160;
UPDATE Users
SET FirstName = @FirstName,
    LastName  = @LastName,
    EmailAddress = @EmailAddress
WHERE id = @id
GO

Every table had&#160; similar CRUD [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I ran into a database earlier this week with a lot of stored procedures that look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">PROCEDURE</span> updateUser
  @id <span style="color: #0000FF;">INT</span>, @FirstName <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>, @LastName <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>, @EmailAddress <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">AS</span>
<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">NOCOUNT</span> <span style="color: #0000FF;">ON</span>
&nbsp;
<span style="color: #0000FF;">UPDATE</span> Users
<span style="color: #0000FF;">SET</span> FirstName <span style="color: #808080;">=</span> @FirstName,
    LastName  <span style="color: #808080;">=</span> @LastName,
    EmailAddress <span style="color: #808080;">=</span> @EmailAddress
<span style="color: #0000FF;">WHERE</span> id <span style="color: #808080;">=</span> @id
GO</pre></div></div>

<p>Every table had&#160; similar CRUD procedures that had been generated. If any data in the Users table changed, say a user updated their email address, this procedure would handle the update. Is this a good idea?</p>
<p><a href="http://thehobt.blogspot.com/">Aaron Alton</a> recently <a title="Easy On The Updates There, Sparky" href="http://thehobt.blogspot.com/2009/05/easy-on-updates-there-sparky.html">posted</a> about UPDATE statements. In his post, he explains why it is a good idea to use the WHERE clause to filter out rows that don’t need to be updated. I want to expound on Aaron’s point, and say that you should also <strong>avoid needlessly updating columns</strong> that don’t need to be updated. The reason? Nonclustered Indexes.</p>
<p>Let&#8217;s take a look at the following table:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> Users <span style="color: #808080;">&#40;</span>
  id <span style="color: #0000FF;">INT</span>,
  FirstName <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>,
  LastName <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>,
  EmailAddress <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>
<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">UNIQUE</span> <span style="color: #0000FF;">CLUSTERED</span> <span style="color: #0000FF;">INDEX</span> cix_Users <span style="color: #0000FF;">ON</span> Users<span style="color: #808080;">&#40;</span>id<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">NONCLUSTERED</span> <span style="color: #0000FF;">INDEX</span> ix_Users_FirstName <span style="color: #0000FF;">ON</span> Users<span style="color: #808080;">&#40;</span>FirstName<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">NONCLUSTERED</span> <span style="color: #0000FF;">INDEX</span> ix_Users_LastName <span style="color: #0000FF;">ON</span> Users<span style="color: #808080;">&#40;</span>LastName<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">NONCLUSTERED</span> <span style="color: #0000FF;">INDEX</span> ix_Users_EmailAddress <span style="color: #0000FF;">ON</span> Users<span style="color: #808080;">&#40;</span>EmailAddress<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">INSERT</span> <span style="color: #0000FF;">INTO</span> Users
<span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span>, <span style="color: #FF0000;">'John'</span>, <span style="color: #FF0000;">'Smith'</span>, <span style="color: #FF0000;">'jsmith@gmail.com'</span></pre></div></div>

<p>If we were to call the updateUser procedure:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">EXEC</span> updateUser <span style="color: #000;">1</span>, <span style="color: #FF0000;">'John'</span>, <span style="color: #FF0000;">'Smith'</span>, <span style="color: #FF0000;">'jsmith@hotmail.com'</span></pre></div></div>

<p>Even though the FirstName and LastName values aren&#8217;t changing, SQL Server will still update all of the columns resulting in the nonclustered indexes on the FirstName and LastName columns being locked and updated.</p>
<p>If we were to run the following UPDATE statement instead, the nonclustered indexes on FirstName and LastName would not need to be updated.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">UPDATE</span> Users
<span style="color: #0000FF;">SET</span> EmailAddress <span style="color: #808080;">=</span> <span style="color: #FF0000;">'jsmith@hotmail.com'</span>
<span style="color: #0000FF;">WHERE</span> id <span style="color: #808080;">=</span> <span style="color: #000;">1</span></pre></div></div>

<p>So, how do we fix the problem with our update procedure listed above? If we know that updating an Email address is a common occurance, we might create a seperate procedure that only updates the EmailAddress column. Alternatively, we can use dynamic SQL to build the correct UPDATE statement for us.</p>
<p>Here is an example of how you could do this in a stored procedure: </p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">PROCEDURE</span> updateUser
  @id <span style="color: #0000FF;">INT</span>, @FirstName <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>, @LastName <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>, @EmailAddress <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">AS</span>
<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">NOCOUNT</span> <span style="color: #0000FF;">ON</span>
&nbsp;
<span style="color: #008080;">--Variables to hold the updated status</span>
<span style="color: #0000FF;">DECLARE</span> @u_FirstName <span style="color: #0000FF;">BIT</span>, @u_LastName <span style="color: #0000FF;">BIT</span>, @u_EmailAddress <span style="color: #0000FF;">BIT</span>
&nbsp;
<span style="color: #008080;">--Check to see which values were updated</span>
<span style="color: #0000FF;">SELECT</span>
  @u_FirstName <span style="color: #808080;">=</span> <span style="color: #0000FF;">CASE</span> FirstName <span style="color: #0000FF;">WHEN</span> @FirstName <span style="color: #0000FF;">THEN</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">ELSE</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">END</span>
 ,@u_LastName <span style="color: #808080;">=</span> <span style="color: #0000FF;">CASE</span> LastName <span style="color: #0000FF;">WHEN</span> @LastName <span style="color: #0000FF;">THEN</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">ELSE</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">END</span>
 ,@u_EmailAddress <span style="color: #808080;">=</span> <span style="color: #0000FF;">CASE</span> EmailAddress <span style="color: #0000FF;">WHEN</span> @EmailAddress <span style="color: #0000FF;">THEN</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">ELSE</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">END</span>
<span style="color: #0000FF;">FROM</span> Users
<span style="color: #0000FF;">WHERE</span> @id <span style="color: #808080;">=</span> id
&nbsp;
<span style="color: #008080;">--If none of the values were updated return</span>
<span style="color: #0000FF;">IF</span> <span style="color: #808080;">&#40;</span>@u_FirstName <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #808080;">AND</span> @u_LastName <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #808080;">AND</span> @u_EmailAddress <span style="color: #808080;">=</span> <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">RETURN</span>
&nbsp;
<span style="color: #0000FF;">DECLARE</span> @<span style="color: #0000FF;">SQL</span> <span style="color: #0000FF;">NVARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">4000</span><span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">SET</span> @<span style="color: #0000FF;">SQL</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">'
DECLARE @first bit --for the first value
UPDATE Users SET
 @first = 1 '</span>
&nbsp;
<span style="color: #0000FF;">IF</span> @u_FirstName <span style="color: #808080;">=</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">SET</span> @<span style="color: #0000FF;">SQL</span> <span style="color: #808080;">+=</span> <span style="color: #FF0000;">'
 ,FirstName = @FirstName '</span>
&nbsp;
<span style="color: #0000FF;">IF</span> @u_LastName <span style="color: #808080;">=</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">SET</span> @<span style="color: #0000FF;">SQL</span> <span style="color: #808080;">+=</span> <span style="color: #FF0000;">'
 ,LastName = @LastName '</span>
&nbsp;
<span style="color: #0000FF;">IF</span> @u_EmailAddress <span style="color: #808080;">=</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">SET</span> @<span style="color: #0000FF;">SQL</span> <span style="color: #808080;">+=</span> <span style="color: #FF0000;">'
 ,EmailAddress = @EmailAddress '</span>
&nbsp;
<span style="color: #0000FF;">SET</span> @<span style="color: #0000FF;">SQL</span> <span style="color: #808080;">+=</span> <span style="color: #FF0000;">'
WHERE id = @id'</span>
&nbsp;
<span style="color: #0000FF;">PRINT</span> @<span style="color: #0000FF;">SQL</span>
<span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">''</span>
<span style="color: #0000FF;">EXEC</span> <span style="color: #AF0000;">SP_EXECUTESQL</span> @<span style="color: #0000FF;">SQL</span>,
  N<span style="color: #FF0000;">'@FirstName varchar(50), @LastName varchar(50), @EmailAddress varchar(50), @id int'</span>,
  @FirstName, @LastName, @EmailAddress, @id
&nbsp;
GO</pre></div></div>

<p>This trigger will show which columns have been updated:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TRIGGER</span> t_Users
  <span style="color: #0000FF;">ON</span>  Users
  <span style="color: #0000FF;">AFTER</span> <span style="color: #0000FF;">UPDATE</span>
<span style="color: #0000FF;">AS</span>
       <span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">NOCOUNT</span> <span style="color: #0000FF;">ON</span>
       <span style="color: #0000FF;">IF</span> <span style="color: #0000FF;">UPDATE</span><span style="color: #808080;">&#40;</span>FirstName<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'FirstName updated'</span>
       <span style="color: #0000FF;">IF</span> <span style="color: #0000FF;">UPDATE</span><span style="color: #808080;">&#40;</span>LastName<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'LastName updated'</span>
       <span style="color: #0000FF;">IF</span> <span style="color: #0000FF;">UPDATE</span><span style="color: #808080;">&#40;</span>EmailAddress<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">PRINT</span> <span style="color: #FF0000;">'EmailAddress updated'</span>
GO</pre></div></div>

<p>To summarize, limiting the columns in the SET portion of the UPDATE statement will reduce locking, minimize index updates, and increase concurrency.</p>
<p>Let me know if I’ve left anything out.</p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/05/29/update-statements-and-indexes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Oregon SQL Developers &#8211; April Meeting</title>
		<link>http://robboek.com/2009/04/07/oregon-sql-developers-april-meeting/</link>
		<comments>http://robboek.com/2009/04/07/oregon-sql-developers-april-meeting/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 23:04:56 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[OSQL-d]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/04/07/oregon-sql-developers-april-meeting/</guid>
		<description><![CDATA[Please join me at the Oregon SQL Developers Meeting, tomorrow, April 8th. Free pizza, lots of giveaways, and 2 great sessions planned. Many people will walk away with either a TechNet Plus Direct annual subscription (Estimated Retail Value $349), or a voucher for a Microsoft Certification exam of your choice (Estimated Retail Value $125).
Logistics:
Wednesday, April [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Please join me at the Oregon SQL Developers Meeting, tomorrow, April 8th. Free pizza, lots of giveaways, and 2 great sessions planned. Many people will walk away with either a TechNet Plus Direct annual subscription (Estimated Retail Value $349), or a voucher for a Microsoft Certification exam of your choice (Estimated Retail Value $125).</p>
<h4>Logistics:</h4>
<p>Wednesday, April 8th, 2009 at 6:30 pm (Pizza and networking start at 6:00 pm)    <br />Microsoft Portland Office &#8211; <a href="http://maps.google.com/maps?q=10260+SW+Greenburg+Rd,+Suite+600,+Portland,+OR">10260 SW Greenburg Rd, Suite 600</a></p>
<h4>Sessions:</h4>
<p><a href="http://rwgarrison.com/rg/">Rob Garrison</a> will present about Data Encryption and SQL Server, providing significant information that is not available in Books Online, including Message Authentication Codes and how to use them to support highly efficient searches of encrypted data. </p>
<p>Rob Garrison is the OLTP Data Architect for WebMD’s Health Services group. He has been working with SQL Server full-time since 1999 and in IT since 1985. He has extensive experience with SQL Server development and architecture in both the banking and healthcare industries. </p>
<p>Then, <a href="http://sqlblog.com/blogs/arnie_rowland/">Arnie Rowland</a>, SQL Server MVP, will discuss Microsoft&#8217;s &#8216;Thrive&#8217; Program which is a major effort supporting economic stimulus efforts. This discussion will include how Microsoft&#8217;s initiatives may be of direct benefit to you in keeping your skills fresh.</p>
<p>Visit <a href="http://osql-d.sqlpass.org">http://osql-d.sqlpass.org</a> for more details.</p>
<p>Hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/04/07/oregon-sql-developers-april-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who Should Write Database Code?</title>
		<link>http://robboek.com/2009/03/20/who-should-write-database-code/</link>
		<comments>http://robboek.com/2009/03/20/who-should-write-database-code/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 07:14:38 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/03/20/who-should-write-database-code/</guid>
		<description><![CDATA[This week, I ran into a query that did 770 GB worth of logical reads…on a 3 GB database!!!
Kimberly Tripp asked “Who’s job is it anyway?” Should database design and database coding be done by the Application Developer, the DBA, or should there be a separate “Database Developer” role? There are many variables that make [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This week, I ran into a query that did 770 GB worth of logical reads…<strong>on a 3 GB database!!!</strong></p>
<p>Kimberly Tripp asked “<a href="http://www.sqlskills.com/BLOGS/KIMBERLY/post/Whose-job-is-it-anyway.aspx">Who’s job is it anyway?</a>” Should database design and database coding be done by the Application Developer, the DBA, or should there be a separate “Database Developer” role? There are many variables that make this a complicated question. Here are a few of my thoughts: </p>
<h3>The Application Developer</h3>
<p><strong>PRO:</strong> Database development is part of the overall application development process. Basic T-SQL syntax is pretty easy for application developers to pick up, and most should already know how to write select statements. Also, application developers already have to be familiar with the requirements of the application.</p>
<p><strong>CON:</strong> The best practices for good application code don’t translate well into good database code. Application developers are trained to break everything up into small manageable steps. When they need to do something in the database, the natural tendency is to try to use the tools that work well on the application side. This often results in things like cursors, while loops, temp tables, UDFs, and lots of small steps. Database development requires a very different mind set. Also, SQL Server is a huge product. It’s hard enough for someone dedicated to SQL Server to keep up with and master it, let alone someone who is trying to do application development as well.</p>
<h3>The DBA</h3>
<p><strong>PRO:</strong> DBAs work with databases. They understand indexes and are familiar with database tools like SSMS, SSIS, and Profiler. They know that cursors are not the answer to everything.</p>
<p><strong>CON:</strong> Most (not all) DBAs are, as the name implies, focused on administration and don’t write code. DBAs are responsible for database uptime and stability which may get in the way of meeting development deliverables.</p>
<h3>The Database Developer</h3>
<p><strong>PRO:</strong> Dedicated database developers are focused on writing good database code. They should be good at thinking in terms of set-based logic, and be familiar with the various tools that SQL Server provides. In theory, this should result in higher quality database code in less time.</p>
<p><strong>CON:</strong> Many companies don’t have enough work to justify a full-time person dedicated to database development. Even if they do, it is likely spread across multiple projects which requires the database developer to keep track of multiple sets of requirements and deal with competing priorities.</p>
<h3>Other Thoughts</h3>
<p>While dedicated database developers should on average write better code, it doesn’t always matter if a query runs in 1-2 seconds or if it runs in 100-200 ms. The less efficient code may be “good enough.”</p>
<p>On the other hand, most development is done on a very small subset of data. A good database developer will know how the query will react as the amount of data increases. Will it perform the same, get linearly worse, or will performance decrease exponentially as rows are added.</p>
<p>If you plan on scaling your application, it’s worth it to make sure your database development is done right. To me, it doesn’t matter if the work is done by the application developer, the DBA, or a dedicated database developer. Just use the person who does the best job.</p>
<p>I’d love to hear your thoughts.</p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/03/20/who-should-write-database-code/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adam Machanic’s T-SQL Challenge</title>
		<link>http://robboek.com/2009/02/27/adam-machanics-t-sql-challenge/</link>
		<comments>http://robboek.com/2009/02/27/adam-machanics-t-sql-challenge/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 19:46:54 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/02/27/adam-machanics-t-sql-challenge/</guid>
		<description><![CDATA[For you T-SQL experts out there, Adam Machanic just posted a challenge with a great prize. The best submission wins a full MSDN subscription valued at around $10,000.
Check it out!
]]></description>
			<content:encoded><![CDATA[<p></p><p>For you T-SQL experts out there, <a href="http://sqlblog.com/blogs/adam_machanic/">Adam Machanic</a> just <a href="http://sqlblog.com/blogs/adam_machanic/archive/2009/02/27/t-sql-challenge-grouped-string-concatenation.aspx">posted a challenge</a> with a great prize. The best submission wins a full MSDN subscription valued at around $10,000.</p>
<p><a href="http://sqlblog.com/blogs/adam_machanic/archive/2009/02/27/t-sql-challenge-grouped-string-concatenation.aspx">Check it out!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/02/27/adam-machanics-t-sql-challenge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server Uniqueifier Values and the Number of the Beast</title>
		<link>http://robboek.com/2009/02/13/sql-server-uniqueifier-values-and-the-number-of-the-beast/</link>
		<comments>http://robboek.com/2009/02/13/sql-server-uniqueifier-values-and-the-number-of-the-beast/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 19:36:32 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[indexes]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/?p=118</guid>
		<description><![CDATA[Reading Gail Shaw’s post All indexes are unique, reminded me of an interesting piece of trivia I discovered back in SQL Server 7. The error message for running out of uniqueifier values is 666.

SELECT TEXT FROM sys.messages WHERE message_id = 666

Returns:
The maximum system-generated unique value for a duplicate group was exceeded for index with partition [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Reading Gail Shaw’s post <a href="http://sqlinthewild.co.za/index.php/2009/02/09/all-indexes-are-unique/">All indexes are unique</a>, reminded me of an interesting piece of trivia I discovered back in SQL Server 7. The error message for running out of uniqueifier values is <a href="http://en.wikipedia.org/wiki/Number_of_the_Beast#666">666</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SELECT</span> <span style="color: #0000FF;">TEXT</span> <span style="color: #0000FF;">FROM</span> sys.<span style="color: #202020;">messages</span> <span style="color: #0000FF;">WHERE</span> message_id <span style="color: #808080;">=</span> <span style="color: #000;">666</span></pre></div></div>

<p>Returns:</p>
<blockquote><p>The maximum system-generated unique value for a duplicate group was exceeded for index with partition ID %I64d. Dropping and re-creating the index may resolve this; otherwise, use another clustering key.</p></blockquote>
<p>Here is what <a href="http://msdn.microsoft.com/en-us/library/ms190639.aspx">SQL Server 2008 Books Online – Clustered Index Design Guidelines</a> says :</p>
<blockquote><p>If the clustered index is not created with the UNIQUE property, the Database Engine automatically adds a 4-byte <strong>uniqueifier</strong> column to the table. When it is required, the Database Engine automatically adds a <strong>uniqueifier</strong> value to a row to make each key unique. This column and its values are used internally and cannot be seen or accessed by users.</p></blockquote>
<p>Someone on the SQL Server team definitely had a sense of humor, because to actually see this message, you would have to insert over 4,294,967,296 duplicate entries into your clustered index column. Anyone who would do that is truly evil.</p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/02/13/sql-server-uniqueifier-values-and-the-number-of-the-beast/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Oregon SQL Developers Meeting Tomorrow</title>
		<link>http://robboek.com/2009/02/10/oregon-sql-developers-meeting-tomorrow/</link>
		<comments>http://robboek.com/2009/02/10/oregon-sql-developers-meeting-tomorrow/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:54:53 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[OSQL-d]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/02/10/oregon-sql-developers-meeting-tomorrow/</guid>
		<description><![CDATA[If you are in the Portland area, you won’t want to miss the OSQL-d meeting tomorrow. We have two great sessions planned.
Wednesday, Feb 11th, 2009 at 6:30 pm (Pizza and networking start at 6:00 pm)   Microsoft Portland Office &#8211; 10260 SW Greenburg Rd, Suite 600
Using SQL Server Management Studio, Intellisense, and SQL 2008 [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you are in the Portland area, you won’t want to miss the <a href="http://osql-d.sqlpass.org/">OSQL-d</a> meeting tomorrow. We have two great sessions planned.</p>
<p>Wednesday, Feb 11th, 2009 at 6:30 pm (Pizza and networking start at 6:00 pm)   <br />Microsoft Portland Office &#8211; <a href="http://maps.google.com/maps?q=10260+SW+Greenburg+Rd,+Suite+600,+Portland,+OR">10260 SW Greenburg Rd, Suite 600</a></p>
<p><strong>Using SQL Server Management Studio, Intellisense, and SQL 2008 T-SQL Enhancements</strong>     <br />Speaker: <a href="http://blogs.msdn.com/buckwoody/">Buck Woody</a> </p>
<p>Come hear Buck Woody, Microsoft’s “Real World DBA” as he explains the new enhancements in SQL Server Management Studio that will help you write better T-SQL code -faster. He’ll also cover some of the new Transact-SQL Enhancements. Come ready to learn and share! </p>
<p><a href="http://buckwoody.com/BResume.html">http://buckwoody.com/BResume.html</a></p>
<p><strong>Solutions to Vexing T-SQL Problems (Continued)      <br /></strong>Speaker: <a href="http://sqlblog.com/blogs/arnie_rowland/default.aspx">Arnie Rowland</a> </p>
<p>Time permitting, Arnie will continue a discussion on finding ordinary solutions to complex problems. He will be demonstrating several query problems that are often difficult to conceptualize, and providing code examples for the solutions. If you want to have your T-SQL code skills challenged and perhaps expanded, you will want to see this presentation. </p>
<p>Visit <a href="http://osql-d.sqlpass.org/">OSQL-d</a> for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/02/10/oregon-sql-developers-meeting-tomorrow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FizzBuzz in T-SQL</title>
		<link>http://robboek.com/2009/02/03/fizzbuzz-in-t-sql/</link>
		<comments>http://robboek.com/2009/02/03/fizzbuzz-in-t-sql/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 19:16:04 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/?p=95</guid>
		<description><![CDATA[Pinal Dave posted yesterday about how to solve the Fizz Buzz problem using T-SQL.
Definition of FizzBuzz Puzzle : Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://blog.sqlauthority.com/" rel="nofollow">Pinal Dave</a> <a href="http://blog.sqlauthority.com/2009/02/02/sql-server-t-sql-script-for-fizzbuzz-logic/" rel="nofollow">posted yesterday</a> about how to solve the <a href="http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/">Fizz Buzz problem</a> using T-SQL.</p>
<blockquote><p><strong>Definition of FizzBuzz Puzzle</strong> : Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.</p>
</blockquote>
<p>His solution works, but he is using procedural logic. Some of the biggest causes of performance problems in SQL Server are caused by application developers who try to use procedural logic instead of using the set-based logic that databases are meant for.</p>
<p>Here is how to solve the FizzBuzz problem using set-based logic in T-SQL:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">WITH</span> Numbers<span style="color: #808080;">&#40;</span>Number<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> <span style="color: #808080;">&#40;</span>
  <span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span>
  <span style="color: #0000FF;">UNION</span> <span style="color: #808080;">ALL</span>
  <span style="color: #0000FF;">SELECT</span> Number <span style="color: #808080;">+</span> <span style="color: #000;">1</span>
  <span style="color: #0000FF;">FROM</span> Numbers
  <span style="color: #0000FF;">WHERE</span> Number <span style="color: #808080;">&lt;</span> <span style="color: #000;">100</span>
<span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">SELECT</span>
  <span style="color: #0000FF;">CASE</span> 
    <span style="color: #0000FF;">WHEN</span> Number <span style="color: #808080;">%</span> <span style="color: #000;">3</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #808080;">AND</span> Number <span style="color: #808080;">%</span> <span style="color: #000;">5</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'FizzBuzz'</span>
    <span style="color: #0000FF;">WHEN</span> Number <span style="color: #808080;">%</span> <span style="color: #000;">3</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'Fizz'</span>
    <span style="color: #0000FF;">WHEN</span> Number <span style="color: #808080;">%</span> <span style="color: #000;">5</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'Buzz'</span>
    <span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">CONVERT</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">3</span><span style="color: #808080;">&#41;</span>, Number<span style="color: #808080;">&#41;</span>
  <span style="color: #0000FF;">END</span>
<span style="color: #0000FF;">FROM</span> Numbers
<span style="color: #0000FF;">ORDER</span> <span style="color: #0000FF;">BY</span> Number</pre></div></div>

<p>Update 3/15/2010:<br /> Here is another, much faster solution, taken from ideas I found <a href="http://ask.sqlservercentral.com/questions/4241/whats-the-best-way-to-solve-the-fizzbuzz-question/">here</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">DECLARE</span> @num <span style="color: #0000FF;">INT</span> <span style="color: #808080;">=</span> <span style="color: #000;">1000000</span>
&nbsp;
<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">STATISTICS</span> <span style="color: #0000FF;">TIME</span> <span style="color: #0000FF;">ON</span>;
<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">STATISTICS</span> IO <span style="color: #0000FF;">ON</span>;
&nbsp;
;WITH
  L0   <span style="color: #0000FF;">AS</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">AS</span> c <span style="color: #0000FF;">UNION</span> <span style="color: #808080;">ALL</span> <span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span><span style="color: #808080;">&#41;</span>,
  L1   <span style="color: #0000FF;">AS</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">AS</span> c <span style="color: #0000FF;">FROM</span> L0 <span style="color: #0000FF;">AS</span> A, L0 <span style="color: #0000FF;">AS</span> B<span style="color: #808080;">&#41;</span>,
  L2   <span style="color: #0000FF;">AS</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">AS</span> c <span style="color: #0000FF;">FROM</span> L1 <span style="color: #0000FF;">AS</span> A, L1 <span style="color: #0000FF;">AS</span> B<span style="color: #808080;">&#41;</span>,
  L3   <span style="color: #0000FF;">AS</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">AS</span> c <span style="color: #0000FF;">FROM</span> L2 <span style="color: #0000FF;">AS</span> A, L2 <span style="color: #0000FF;">AS</span> B<span style="color: #808080;">&#41;</span>,
  L4   <span style="color: #0000FF;">AS</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">AS</span> c <span style="color: #0000FF;">FROM</span> L3 <span style="color: #0000FF;">AS</span> A, L3 <span style="color: #0000FF;">AS</span> B<span style="color: #808080;">&#41;</span>,
  L5   <span style="color: #0000FF;">AS</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">AS</span> c <span style="color: #0000FF;">FROM</span> L4 <span style="color: #0000FF;">AS</span> A, L4 <span style="color: #0000FF;">AS</span> B<span style="color: #808080;">&#41;</span>,
  Numbers <span style="color: #0000FF;">AS</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> ROW_NUMBER<span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">OVER</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">ORDER</span> <span style="color: #0000FF;">BY</span> <span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #808080;">NULL</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">AS</span> Number <span style="color: #0000FF;">FROM</span> L5<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span> <span style="color: #0000FF;">TOP</span> <span style="color: #808080;">&#40;</span>@num<span style="color: #808080;">&#41;</span>
  Number,
  <span style="color: #0000FF;">CASE</span> 
    <span style="color: #0000FF;">WHEN</span> Number <span style="color: #808080;">%</span> <span style="color: #000;">15</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'FizzBuzz'</span>
    <span style="color: #0000FF;">WHEN</span> Number <span style="color: #808080;">%</span> <span style="color: #000;">3</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'Fizz'</span>
    <span style="color: #0000FF;">WHEN</span> Number <span style="color: #808080;">%</span> <span style="color: #000;">5</span> <span style="color: #808080;">=</span> <span style="color: #000;">0</span> <span style="color: #0000FF;">THEN</span> <span style="color: #FF0000;">'Buzz'</span>
    <span style="color: #0000FF;">ELSE</span> <span style="color: #0000FF;">CONVERT</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">7</span><span style="color: #808080;">&#41;</span>, Number<span style="color: #808080;">&#41;</span>
  <span style="color: #0000FF;">END</span> <span style="color: #0000FF;">AS</span> FizzBuzz
<span style="color: #0000FF;">INTO</span> #FizzBuzz
<span style="color: #0000FF;">FROM</span> Numbers
&nbsp;
<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">STATISTICS</span> <span style="color: #0000FF;">TIME</span> <span style="color: #0000FF;">OFF</span>;
<span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">STATISTICS</span> IO <span style="color: #0000FF;">OFF</span>;
&nbsp;
<span style="color: #008080;">--SELECT FizzBuzz FROM #FizzBuzz ORDER BY Number</span>
&nbsp;
<span style="color: #0000FF;">DROP</span> <span style="color: #0000FF;">TABLE</span> #FizzBuzz</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/02/03/fizzbuzz-in-t-sql/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>The Top 10 SQL Server 2008 Features for the DBA</title>
		<link>http://robboek.com/2009/02/02/the-top-10-sql-server-2008-features-for-the-dba/</link>
		<comments>http://robboek.com/2009/02/02/the-top-10-sql-server-2008-features-for-the-dba/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 05:32:42 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/02/02/the-top-10-sql-server-2008-features-for-the-dba/</guid>
		<description><![CDATA[The SQL Server Customer Advisory Team (SQLCAT) just posted a great article listing some of the best new SQL Server 2008 features for the DBA. Here they are:

Activity Monitor 
SQL Server Audit 
Backup Compression 
Central Management Servers 
Data Collector and Management Data Warehouse 
Data Compression 
Policy-Based Management 
Predictable Performance and Concurrency 
Resource Governor 
Transparent Data [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The <a href="http://sqlcat.com/">SQL Server Customer Advisory Team (SQLCAT)</a> just posted a <a href="http://sqlcat.com/top10lists/archive/2009/01/30/top-10-sql-server-2008-features-for-the-database-administrator-dba.aspx">great article</a> listing some of the best new SQL Server 2008 features for the DBA. Here they are:</p>
<ol>
<li>Activity Monitor </li>
<li>SQL Server Audit </li>
<li>Backup Compression </li>
<li>Central Management Servers </li>
<li>Data Collector and Management Data Warehouse </li>
<li>Data Compression </li>
<li>Policy-Based Management </li>
<li>Predictable Performance and Concurrency </li>
<li>Resource Governor </li>
<li>Transparent Data Encryption </li>
</ol>
<p>Read the <a href="http://sqlcat.com/top10lists/archive/2009/01/30/top-10-sql-server-2008-features-for-the-database-administrator-dba.aspx">full article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/02/02/the-top-10-sql-server-2008-features-for-the-dba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSIS Resources</title>
		<link>http://robboek.com/2009/01/29/ssis-resources/</link>
		<comments>http://robboek.com/2009/01/29/ssis-resources/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 08:40:18 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/01/29/ssis-resources/</guid>
		<description><![CDATA[***UPDATED 2/10/2009 &#8211; Added links***
***UPDATED 2/23/2009 &#8211; Added MSDN SSIS Forum and Jeff Wharton&#8217;s link list.***
Last Thursday I gave a talk at the Oregon SQL Server Developers Professional Association and promised to post some Integration Services resources.
SSIS Best Practices
SQLCAT – Top 10 SQL Server Integration Services Best Practices
Matthew Roche – SSIS Best Practices, Part 2
Jamie  [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="blogUpdate">***UPDATED 2/10/2009 &#8211; Added links***<br />
***UPDATED 2/23/2009 &#8211; Added MSDN SSIS Forum and Jeff Wharton&#8217;s link list.***</p>
<p>Last Thursday I gave a talk at the <a href="http://osql-d.sqlpass.org/">Oregon SQL Server Developers Professional Association</a> and promised to post some Integration Services resources.</p>
<h3>SSIS Best Practices</h3>
<p><a href="http://sqlcat.com/top10lists/archive/2008/10/01/top-10-sql-server-integration-services-best-practices.aspx">SQLCAT – Top 10 SQL Server Integration Services Best Practices</a><br />
<a href="http://bi-polar23.blogspot.com/2007/11/ssis-best-practices-part-2.html">Matthew Roche – SSIS Best Practices, Part 2</a><br />
<a href="http://blogs.conchango.com/jamiethomson/archive/2006/01/05/SSIS_3A00_-Suggested-Best-Practices-and-naming-conventions.aspx">Jamie  Thomson – SSIS: Suggested Best Practices and naming conventions</a></p>
<h3>SSIS Tools and Samples</h3>
<p><a href="http://www.codeplex.com/bidshelper">BIDS Helper</a> is a very useful add-in for Visual Studio. Works with both SQL Server 2005 and 2008. Version 1.4 was just released on Jan 27th.</p>
<p><a href="http://www.codeplex.com/pacman/">PacMan</a> – batch package management tool by Matthew Roche.</p>
<p><a href="http://www.codeplex.com/MSFTISProdSamples/">Integration Services Product Samples</a></p>
<h3>SSIS Blogs</h3>
<p><a href="http://sqlblog.com/blogs/andy_leonard/">Andy Leonard</a><br />
<a href="http://bi-polar23.blogspot.com/">BI Polar</a> – Matthew Roche<br />
<a href="http://agilebi.com/cs/blogs/jwelch/default.aspx">BI Thoughts and Theories</a> – John Welch<br />
<a href="http://pragmaticworks.com/community/blogs/brianknight/default.aspx">Brian Knight</a><br />
<a href="http://blogs.ameriteach.com/chris-randall/">Chris Randall</a><br />
<a href="http://dougbert.com/blogs/">Dougbert.com</a> – Douglas Laudenschlager<br />
<a href="http://jessicammoss.blogspot.com/">Jessica M. Moss</a><br />
<a href="http://sqlblogcasts.com/blogs/jorg/default.aspx">John Klein’s Microsoft Business Intelligence Blog</a><br />
<a href="http://blogs.msdn.com/michen/default.aspx">Michael Entin’s Notebook</a><br />
<a href="http://rafael-salas.blogspot.com/">Rafael Salas</a><br />
<a href="http://sqlblog.com/blogs/rushabh_mehta/default.aspx">Rushabh Mehta</a><br />
<a href="http://www.sqlis.com/">SQLIS.com</a><br />
<a href="http://ssisblog.replicationanswers.com/">SSIS bits ‘n’ bobs BLOG</a> – Paul Ibison<br />
<a href="http://blogs.conchango.com/jamiethomson/default.aspx">SSIS Junkie</a> – Jamie Thomson<br />
<a href="http://www.ssistalk.com/">SSIS Talk</a> – Phil Brammer<br />
<a href="http://blogs.msdn.com/mattm/default.aspx">SSIS Team Blog</a></p>
<p>I’ve shared an <a href="http://www.google.com/reader/public/subscriptions/user/10635873578544168631/label/SSIS">opml file of all the SSIS blogs</a> if you would like to import them into an aggregator such as <a href="http://www.google.com/reader/">Google Reader</a>.</p>
<h3>Microsoft Links</h3>
<p><a href="http://msdn.microsoft.com/en-us/sqlserver/cc511477.aspx">MSDN: SQL Server 2008 – Integration Services</a><br />
<a href="http://msdn.microsoft.com/en-us/sqlserver/bb671393.aspx">MSDN: SQL Server 2005 – Integration Services</a><br />
<a href="http://www.microsoft.com/sqlserver/2008/en/us/integration.aspx">Product page: SQL Server 2008 – Integration Services</a><br />
<a href="http://www.microsoft.com/sqlserver/2005/en/us/integration-services.aspx">Product page: SQL Server 2005 – Integration Services</a><br />
<a href="http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/threads/">MSDN: SQL Server Integration Services Forum</a></p>
<h3>Other Links</h3>
<p><a href="http://blog.wharton.com.au/2009/02/favourite-sql-server-integration.html">Jeff Wharton &#8211; Favourite SQL Server Integration Services Articles</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/01/29/ssis-resources/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQL Server Interview Blunders</title>
		<link>http://robboek.com/2009/01/16/sql-server-interview-blunders/</link>
		<comments>http://robboek.com/2009/01/16/sql-server-interview-blunders/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 17:19:09 +0000</pubDate>
		<dc:creator>Rob Boek</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[interviews]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://robboek.com/2009/01/16/sql-server-interview-blunders/</guid>
		<description><![CDATA[I just read Jason Massie’s new Capt. Varchar(MAX) comic. If you have spent much time interviewing SQL Server candidates I’m sure this will bring back some memories.
I was helping a company phone screens candidates for a Senior DBA position a while back. We went through such a bad string of candidates that the three of [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I just read <a href="http://statisticsio.com/Home/tabid/36/articleType/ArticleView/articleId/322/Capt-VarcharMAX-and-the-PageLatch-Posse-Vol-17.aspx">Jason Massie’s new Capt. Varchar(MAX) comic.</a> If you have spent much time interviewing SQL Server candidates I’m sure this will bring back some memories.</p>
<p>I was helping a company phone screens candidates for a Senior DBA position a while back. We went through such a bad string of candidates that the three of us started taking bets. Half way through each phone screen we would vote if we thought the candidate would know what the “DELETE &lt;table&gt;” statement was used for, loser bought the others lunch. The really sad thing was that these were supposed to be <strong><em>senior level</em></strong> candidates.</p>
<p>What’s your best SQL Server interview story?</p>
<p>For those of you interviewing for an IT job. <a href="http://www.brentozar.com/">Brent Ozar</a> just posted <a href="http://www.brentozar.com/archive/2009/01/top-10-questions-to-ask-when-taking-an-it-job/">The Top 10 Questions To Ask When Taking an IT Job</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://robboek.com/2009/01/16/sql-server-interview-blunders/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
