<?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>StraightPath Consulting&#039;s SQL Server Blog &#187; SQL Server</title>
	<atom:link href="http://www.straightpathsql.com/archives/category/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.straightpathsql.com</link>
	<description>Mike Walsh&#039;s Thoughts on SQL Server, Professional Development and Life</description>
	<lastBuildDate>Thu, 29 Jul 2010 12:11:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Got SQL Server Questions?</title>
		<link>http://www.straightpathsql.com/archives/2009/12/got-sql-server-questions/</link>
		<comments>http://www.straightpathsql.com/archives/2009/12/got-sql-server-questions/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 19:25:17 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[#sqlhelp]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[community help]]></category>
		<category><![CDATA[SQL Questions]]></category>

		<guid isPermaLink="false">http://www.straightpathsql.com/?p=272</guid>
		<description><![CDATA[

A Great Idea &#8211; #SQLHelp hashtag on Twitter
I was following a conversation today between Brent Ozar, who is @BrentO on twitter and Aaron Nelson, who is @SQLVariant on twitter.
A great idea was discussed: A twitter hashtag that, as Jorge Segarra (or @SQLChicken on twitter) describes it in his blog post, can act like a bat [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F12%252Fgot-sql-server-questions%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F54hU9H%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Got%20SQL%20Server%20Questions%3F%20%23%22%20%7D);"></div>
<h2>A Great Idea &#8211; <a href="http://search.twitter.com/search?q=%23sqlhelp" target="_blank">#SQLHelp</a> hashtag on Twitter</h2>
<p>I was following a conversation today between Brent Ozar, who is <a href="http://twitter.com/brento" target="_blank">@BrentO</a> on twitter and Aaron Nelson, who is <a href="http://twitter.com/sqlvariant" target="_blank">@SQLVariant</a> on twitter.</p>
<p>A great idea was discussed: A twitter hashtag that, as Jorge Segarra (or <a href="http://twitter.com/SQLChicken" target="_blank">@SQLChicken</a> on twitter) <a href="http://sqlchicken.com/2009/12/need-sqlhelp-throw-up-the-bat-signal/" target="_blank">describes it in his blog post, can act like a bat signal</a>.</p>
<p>Brent <a href="http://www.brentozar.com/archive/2009/12/i-need-sqlhelp/" target="_blank">blogs about using the #sqlhelp hashtag</a> to get help to an immediate concern and lists other options for help that require more than 140 characters.</p>
<p>Check out both blogs. In fact, Brent describes in great detail how to ask for help and I won&#8217;t recreate that here. You can tweet me any questions you may have. I&#8217;m <a href="http://twitter.com/mike_walsh" target="_blank">@Mike_Walsh</a> on twitter.</p>
<p><strong>So that&#8217;s reason 1 for writing &#8211; To tell you about it.</strong></p>
<p>What&#8217;s reason 2?</p>
<h2>An add-on idea, or a bad idea?</h2>
<p>So there are lots of ways to get help. <a href="http://www.serverfault.com">Serverfault</a>, <a href="http://www.stackoverflow.com" target="_blank">Stackoverflow</a>, Twitter&#8217;s <a href="http://search.twitter.com/search?q=%23sqlhelp" target="_blank">#sqlhelp</a> tag, <a href="http://social.msdn.microsoft.com/forums/" target="_blank">MSDN Forums</a>, <a href="http://www.sqlservercentral.com" target="_blank">SQL Server Central</a>, Newsgroups (I go there just to watch the Aaron Bertrand/Joe Celko show and answer the occasional question) and even sometime in LinkedIn answers.</p>
<p>Most of these all have something in common: <strong>RSS FEEDS.</strong></p>
<h4>Why not get them all together and tweet new questions?</h4>
<p>So that&#8217;s the idea. I am too busy to take it on right now but maybe, if anyone thinks it&#8217;s a good idea, someone can take it and run with it. The dream in my head looks something like this:</p>
<ul>
<li>A Twitter Account &#8220;MSSQLHelp&#8221; or something</li>
<li>That twitter account simply tweets out from an aggregated feed comprised of all of the above feeds new question posts (including the #sqlhelp hashtag)</li>
<li>Want to get notified of question? Follow that twitter account and put it in it&#8217;s own list/group and watch the list/group.</li>
<li>When a question comes in that someone happens to catch on twitter and knows something about &#8211; they can click the link and help the person in whichever forum they asked the question.</li>
</ul>
<h4>Short of the idea?</h4>
<p>So if that idea is really bad because I missed all of the finer points and details (or it just falls on it&#8217;s face) that&#8217;s fine. You can at least sign up the RSS feeds of your favorite locations to get and give help and see the questions as they come in. I need to be a little better at this. I am not the highest degree SQL Server guru-belt out there but I do enjoy helping with questions when I can.<br />
<strong>That&#8217;s it.. Like the idea? Steal it, claim it and do it. Don&#8217;t like it, well like Brent and I said in the <a href="http://www.brentozar.com/archive/2009/12/interview-with-mike-walsh-about-blogging/" target="_blank">first part of our video interview on blogging</a> (on Brent&#8217;s site), even negative comments can be better than no comments <img src='http://www.straightpathsql.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
</strong></p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/12/got-sql-server-questions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>T-SQL Tuesday #001 &#8211; Dates and Time</title>
		<link>http://www.straightpathsql.com/archives/2009/12/t-sql-tuesday-001-dates-and-time/</link>
		<comments>http://www.straightpathsql.com/archives/2009/12/t-sql-tuesday-001-dates-and-time/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 12:25:25 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[#tsqltuesday]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[#tsql2sday]]></category>
		<category><![CDATA[Dates]]></category>
		<category><![CDATA[DateTime]]></category>
		<category><![CDATA[Don't Always Cluster the Primary Key]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=78</guid>
		<description><![CDATA[

Adam Machanic, who blogs at SQLBlog.com (lots of great sql bloggers over there) started a neat tradition: T-SQL Tuesday. Read his post here to see the rules and information but it&#8217;s basically a weekly (2nd Tuesday of each month) blog topic where we can all have a post about the same topic. I like this [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F12%252Ft-sql-tuesday-001-dates-and-time%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22T-SQL%20Tuesday%20%23001%20-%20Dates%20and%20Time%20%23%22%20%7D);"></div>
<p><em><a href="http://sqlblog.com/blogs/adam_machanic/default.aspx" target="_blank">Adam Machanic, who blogs</a> at <a href="http://sqlblog.com/" target="_blank">SQLBlog.com</a> (lots of great sql bloggers over there) started a neat tradition: <a href="http://sqlblog.com/blogs/adam_machanic/archive/2009/11/30/invitation-to-participate-in-t-sql-tuesday-001-date-time-tricks.aspx#trackback" target="_blank">T-SQL Tuesday</a>. Read his post here to see the rules and information but it&#8217;s basically a weekly (2nd Tuesday of each month) blog topic where we can all have a post about the same topic. I like this because it&#8217;s a great way to go in depth on a topic of interest to the community at large. I am not sure if the focus needs to remain on T-SQL or if we can bring up DBA topics, etc but I&#8217;ll find out if I get a chance to host the &#8220;event&#8221;. </em></p>
<p><em>I also really Like the numbering convention Adam used (&#8220;00n&#8221;), it shows he really wants to make this continue for awhile. <br /></em></p>
<h2>Dates and Times 101</h2>
<p>&nbsp;</p>
<p>This month&#8217;s topic is about dates and times. From Adam&#8217;s original post: &#8220;<strong>the topic for this month is Date/Time Tricks</strong>. Write a blog post that talks about dates and times&#8211;this can be based around T-SQL programming, data modeling, ETL, reporting, or whatever else you&#8217;re using dates and times for (and who isn&#8217;t?)&#8221;</p>
<p>Check back at his initial post to see all of the responses that come in on Tuesday. I will be visiting and expecting to learn a lot. I wanted to keep my response simple here so some of the true T-SQL gurus can have more of your time (and my time) when reading the posts.</p>
<p>So I am going to cover a couple basic points that have been on my mind for some reason or another recently&#8230;</p>
<h2>We Are The World</h2>
<p>Working for a global company with developers on three continents writing procedures and processes for users on at least 5 continents, dates and times can sometimes be confused. A lot of our databases are centrally hosted here in the states and tend to be in the default collation. So we don&#8217;t have a lot of language/special character issues but there are times when Dates can be confused.</p>
<p><strong>Today is 8/12/2009</strong>. <strong>No, Today is 12/8/2009</strong>.</p>
<p>Who is right? Well really both answers are right depending on where you are and where you are from. To someone in the United States the second answer seems more right (Unless you are in the military and when using your pen, ball-point, black; you may be used to writing a date on a report as 08December2009). To someone in a lot of Europe the first may seem more right.</p>
<p><strong>Keep this in mind when querying with dates.</strong></p>
<p>The following date format will always be interpreted correctly by SQL Server regardless of your regional settings and collation. It is the<a href="http://en.wikipedia.org/wiki/ISO_8601#Dates" target="_blank"> ISO format for dates</a>: YYYYMMDD. Today, by that standard, is <strong>20091208</strong>.&nbsp; When looking at the <a href="http://msdn.microsoft.com/en-us/library/ms187928%28SQL.90%29.aspx" target="_blank">Cast/Convert books online topic</a> and the chart, you&#8217;ll see this is format 112.</p>
<p>Format 126 (ISO 8601) is also recognized globally and it includes time. Check out that books online article and get to know and love these date formats, especially if you are working with folks across the globe.</p>
<h2>You Don&#8217;t Have to Cluster the Primary Key!</h2>
<p>&nbsp;</p>
<p>This is something that should be common knowledge but through interviewing folks, working with developers and seeing newsgroup/forum questions, it still isn&#8217;t. The default behavior in SQL Server is to make all Primary Keys the clustered index. There is some merit there but it isn&#8217;t a requirement.</p>
<p>Sometimes a date column, even if the date is not very unique (perhaps not tracking times) or even in some cases where the &#8220;date&#8221; is really just an integer of YYYYMM. Can be a good clustered index in my experience.</p>
<p><strong>Where? </strong>Mostly in data warehousing situations in my experience. Especially if folks are typically querying for a range of time, for transactions on a particular day or wanting to sort results by date. I find that in Fact tables a clustered index on something to do with the date can be helpful.</p>
<p><strong>Why? </strong>How often do you query a Fact Table by a surrogate key? Yes some could argue well indexed dimensions and non clustered indexes on all the dimension keys in the fact table (perhaps on some commonly used measures) is enough. I find that the dates help for the reasons describe above on querying the data. It also helps when loading the warehouse if the dates come in in date order. You still have much of the benefit of an ever increasing clustered key reducing insert overhead from page splits,&nbsp; and having to look all over. Yeah there will likely be some dupes, so there is a 4byte uniqueifier overhead in the clustered index. I would also imagine that when partitioning by date this clustered index strategy would make life a bit easier for you.</p>
<p>Of course, you should test in your environment and use what works for you. <a href="http://www.straightpathsql.com/blog/2009/1/18/empirical-evidence.html" target="_blank">Empirical Evidence</a> speaks volumes when trying scenarios out. Experiment with your indexes and see what works best for your work load, your insert behavior, your query behavior, etc.</p>
<h2>Off To Read The Other Posts</h2>
<p>&nbsp;</p>
<p>Ok well I&#8217;m not really off to read them at this moment. I am writing this post on 20091204 and will, on 20091208, go and read other posts to learn a lot about dates and times. Check the <a href="http://sqlblog.com/blogs/adam_machanic/archive/2009/11/30/invitation-to-participate-in-t-sql-tuesday-001-date-time-tricks.aspx" target="_blank">original post</a> for all the trackbacks of interesting date/time information.</p>
<p>&nbsp;</p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/12/t-sql-tuesday-001-dates-and-time/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How do -you- (I) use SQL Server?</title>
		<link>http://www.straightpathsql.com/archives/2009/12/how-do-you-i-use-sql-server/</link>
		<comments>http://www.straightpathsql.com/archives/2009/12/how-do-you-i-use-sql-server/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 16:25:00 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[How Do You Use SQL Server]]></category>
		<category><![CDATA[meme]]></category>
		<category><![CDATA[On The Job]]></category>
		<category><![CDATA[tagged]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=76</guid>
		<description><![CDATA[

I was recently tagged in an interesting blog post by A Misplaced New Englander, David Taylor. (dyfhid on twitter). The question sounds simple enough, &#8220;How do you use SQL Server where you work?&#8221; Of course the answer is not simple. I echo Grant Fritchey&#8217;s response in his blog post that it would be easier to [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F12%252Fhow-do-you-i-use-sql-server%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F4EldWZ%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22How%20do%20-you-%20%28I%29%20use%20SQL%20Server%3F%20%23%22%20%7D);"></div>
<p><em>I was recently tagged in an <a href="http://dyfhid.blogspot.com/2009/11/how-do-you-use-sql-server.html" target="_blank">interesting blog post</a> by <a href="http://dyfhid.blogspot.com/" target="_blank">A Misplaced New Englander, David Taylor</a>. (<a href="http://twitter.com/dyfhid" target="_blank">dyfhid</a> on twitter). The question sounds simple enough, &#8220;How do you use SQL Server where you work?&#8221; Of course the answer is not simple. I echo <a href="http://scarydba.wordpress.com/" target="_blank">Grant Fritchey&#8217;s</a> response in his <a href="http://scarydba.wordpress.com/2009/12/01/how-do-you-use-sql-server/" target="_blank">blog post</a> that it would be easier to post about how it&#8217;s not used. That being said we&#8217;ll see what we can do&#8230;</em></p>
<h2>What&#8217;s my day job Vertical?</h2>
<p>&nbsp;</p>
<p>As a consultant part time nights/weekends I get to experience a lot of different environments and uses of SQL Server. Rather than talk about those, I&#8217;ll talk about the day job in general terms. I work for a large, global property and casualty insurer. We don&#8217;t write a ton of policies in the subsidiary I work at, but we write some very expensive and interesting policies. From oil rigs to directors and officers insurance to specialty cargo lines we insure it. That means we have to be quite adaptive to very different data sources with widely varying pertinent information about each of a multitude of lines. We don&#8217;t have huge databases but they are complex databases as a result.</p>
<p>Our primary claims system is built on DB2 and it feeds several systems that utilize SQL Server as a back end.</p>
<h2>How Is SQL Server Used?</h2>
<p>&nbsp;</p>
<p>Some key uses:</p>
<ul>
<li><strong>SharePoint </strong>- We use a global SharePoint (MOSS 2007) release to share information between regional teams and business functions. A few hundred GB of content databases so far in a relatively young implementation. <strong>As DBA </strong>I work closely with the SharePoint team in making sure performance is right, maintenance is right and things are working smoothly. SQL 2005 back-end but currently in the process of migrating to a SQL Server 2008 cluster on Windows 2008 we are building out in the coming weeks.</li>
<li><strong>Data Warehouses </strong>- There are several key data warehouses in SQL Server 2005. These warehouses track information about past claims, customers, financials, etc. These warehouses feed reports (in <strong>Reporting Services 2005 </strong>currently) and Cubes (<strong>analysis services 2005)</strong> which also feed those reports. <strong>As DBA</strong> I work closely with the warehouse teams in analyzing performance concerns, suggesting architecture and query improvements for performance and help with troubleshooting, availability and reliability decisions.</li>
<li><strong>Enterprise Service Bus </strong>- We have several applications built either on SharePoint web parts or .net web services. Lots of work with <strong>Biz Talk</strong> as our service bus. Data flows through to SQL Server and a lot of xml passing into and out of SharePoint. <strong>As DBA</strong>, I work closely with the dev teams in getting deployments done, performing code reviews and helping them write better performing code.</li>
<li><strong>Various ISV Provided apps &#8211; </strong>SAP is the financial suite we are in the middle of deploying (on SQL 2005) to replace Great Plains. We also support several ISV applications that perform various business back office functions or IT functions.</li>
</ul>
<h2>What do I do?</h2>
<p>&nbsp;</p>
<p>I am the sole production DBA. There are roughly 20 production SQL instances I manage and at least double that number of dev/test/uat instances I manage. Following the philosophy that the DBA is the <strong>data advocate</strong> at a company, I perform normal DBA duties but also spend a lot of time working with developers in understanding impacts of coding and design decisions. I also spend a lot of time in meetings discussing future plans, time lobbying the infrastructure team for improved hardware needs and helping to change the way folks access environment for deploys and development support.</p>
<p>My primary duty is to keep the lights on and make sure I am invisible to the end end users (the customers of IT as a whole.. I try to be very visible to developers as needed, but not to the end users clicking on reports, using the Operational Data Store through the ESB. Not invisible in a &#8220;not gonna help you&#8221; point of view. Invisible in the sense of, you shouldnt&#8217; experience any issues that are database related so you shouldn&#8217;t have to know there is a such role as DBA, in a way. Does that make sense?</p>
<p>I help analyze new technology with the architecture teams and try to have a say in balancing technology to solve real business problems or technology for technology&#8217;s sake (tough line to tow sometimes at most places with geeky architecture teams&#8230; who doesn&#8217;t love new stuff?)</p>
<p>I give impromptu courses to developers on performance tuning their own code, spend time hand holding some folks through indexing and design considerations and try to share my knowledge wherever and whenever possible.</p>
<p>&nbsp;</p>
<h2>What Technologies do I use?</h2>
<p>&nbsp;</p>
<p>Besides the normal SQL Server tools and other free tools I&#8217;ve blogged about (<a href="http://www.straightpathsql.com/blog/2009/2/25/what-sql-instances-are-installed-on-my-network.html" target="_blank">Microsoft Assessment and Planning tool to enumerate all SQL instances on our network</a> or <a href="http://www.straightpathsql.com/blog/2009/8/6/benchmarking-who-needs-it.html" target="_blank">Performance Analysis for Logs for performing benchmarks and tuning</a>) I use several tools day to day&#8230;</p>
<ul>
<li><strong>Monitoring Tools &#8211; </strong>We use Systems Center and Operations Manager (SCOM) for a large portion of our monitoring needs.&nbsp; I also use a few vendor provided SQL Server specific tools to keep track on my environment.</li>
<li><strong>Development/Comparison/Etc Tools <br /></strong></li>
<li><strong>Word &#8211; </strong>Documentation is important, I blogged about my thoughts there. I try to use this when possible to at least do screenshots of installation processes but hopefully create more detailed documentation.</li>
<li><strong>E-Mail -</strong> A lot of folks wish I didn&#8217;t use it so much. I wish I didn&#8217;t. Something to work on in 2010 is improving conciseness and taking things out of e-mail (where it&#8217;s too easy to be misunderstood or escalate needlessly) and into in person/on phone meetings.</li>
<li><strong>Change Data Capture &#8211; </strong>We are playing with a really neat tool from a vendor (found out about them at a User Group meeting they sponsored.) This tool captures data changes from our source claims system in real time rather than through triggers and offers a huge performance improvement over DB2 OLEDB open queries across a Linked Server.</li>
</ul>
<p>&nbsp;</p>
<h2><strong>What are some Challenges</strong> I face?</h2>
<p>&nbsp;</p>
<p><strong>Query performance</strong>. A lot of room for improvement and working with developers there. <strong>SQL Sprawl</strong> &#8211; Not multiple servers but &#8220;over instancing&#8221;, fewer servers&nbsp; (saves on licensing) but many instances leading to some performance issues. We are going through a process of separating what should be separated and bulking up with either multiple instances (or single instance used for multiple purposes) for the applications that can handle it.</p>
<p>Reporting performance and a &#8220;self service&#8221; MS Excel culture in the end user community. A lot of the warehouse reports are high row count reports as a result. Lots of rows returned simply to be exported into, and massaged by, Excel. This creates some performance issues with the way that SQL Server 2005 Reporting Services renders reports. There is a plan to investigate SSRS 2008 as some key changes will provide some relief. It&#8217;s just tough to find the time with a single DBA <img src='http://www.straightpathsql.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Q1 2010 at this point. In the meantime, the self service aspect seems to really bode well for Power Pivot. I hope to create some demos in my spare time (I really want to learn Power Pivot and really feel it will be a huge win for my company) to show how cutting out the &#8220;middle man&#8221; of Reporting Services and giving richer tools for pivoting, formatting and massaging data will improve performance, reduce server load and make our users happier.</p>
<p>Rolling out new policies/procedures. Before me there was no official DBA, just reluctant DBAs from the team of sysadmins. As a result some of the best practices I enjoy seeing with SQL Security and deployment processes aren&#8217;t rolled out everywhere. It&#8217;s a slow process to go through proper channels but we are getting there. For instance, most environments have finally had their [<strong>Full Recovery Model, No Log Backup, Nightly Shrink Job</strong>] pattern fixed now.</p>
<h2>The Final Verdict?</h2>
<p>&nbsp;</p>
<p>SQL is working well for our needs. Where there are challenges, I would imagine we would face them regardless of our DBMS. Most problems faced by most companies don&#8217;t seem to be specific technology related issues but rather timeline or process related issues blamed on technology. Here we have some good processes, are always working on improvements and our business processes and timelines work well for the most part resulting in a largely positive experience.</p>
<p>I look forward to getting more 2008 implementations out there (using it myself right now for Policy Based Management of other instances and the new SQL 2008 SharePoint cluster will be live soon. Hopefully the RS/AS 2008 for the warehouse reports in production by Q1/Q2). It&#8217;s fun watching developers increase their knowledge and watch the improved code over time. Sure there are some long days and weeks. Sure there are some tough weekends but all in all, this is fun. Every day of working with SQL Server as a DBA, &#8220;Performance Geek&#8221; or self proclaimed Data Architect is a fun time and I still treat the job with excitement most of the time.</p>
<p>&nbsp;</p>
<h2>Tag &#8211; You&#8217;re it</h2>
<p><em>Rather than tag anyone specifically as quite a few have been tagged in posts already, what about you? Consider this an open tag (pretend I sneezed in a crowded movie theater and each invisible spore that left my nose is a mini hand reaching out to tag you&#8230; Sorry.. &#8220;outbreak&#8221; was on in the background while writing this post). How do you use SQL? What are some challenges you face? Add a comment, write a post and link back to the original thread Dave started or reference this post so I can see your response.</em></p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/12/how-do-you-i-use-sql-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Worked fine in development&#8230;</title>
		<link>http://www.straightpathsql.com/archives/2009/07/worked-fine-in-development/</link>
		<comments>http://www.straightpathsql.com/archives/2009/07/worked-fine-in-development/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 01:49:31 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pet Peeve]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=46</guid>
		<description><![CDATA[

How many times have you heard or uttered those words? You work hard and understand the business requirements, you try and get the logic to work to make the procedure return what was expected or update the data as expected. You do some unit tests in your environment, it may not scream but it comes [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F07%252Fworked-fine-in-development%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Worked%20fine%20in%20development...%20%23%22%20%7D);"></div>
<p>How many times have you heard or uttered those words? You work hard and understand the business requirements, you try and get the logic to work to make the procedure return what was expected or update the data as expected. You do some unit tests in your environment, it may not scream but it comes back in what seams like a reasonable time, the results appear right and you say, &#8220;Ship It!&#8221; It passes QA (if you are someplace that has a proper QA process) and it gets to production. Then the DBA walks by (or a user calls you) and something is wrong&#8230; It isn&#8217;t returning, or it is taking far too long or timing out even.</p>
<p>Why? It &#8220;Worked fine in development&#8221;!!!</p>
<p>If you have experienced that with SQL Server development (and who hasn&#8217;t at least once) then I am hopefully writing to you here. I will warn you ahead of time, though: some of the things in this post may seem obvious. I think we need to take a quick back to basics approach here though based on most of the cases I see&#8230;</p>
<p style="font-size: 110%;"><strong>The Basics</strong></p>
<ul>
<li><span><strong>How much data is in dev?-&nbsp; </strong>Seems kind of basic but it is often overlooked. Especially without a production mirroring Test/UAT/Performance environment (Which more environments than you think suffer from). If your development database has a fraction of the data in production you may be in for some surprises.</span></li>
</ul>
<ul>
<li><span><strong>Parallelism &#8211; </strong>Most machines now have more than one (physical or logical) CPU but what if your development environment doesn&#8217;t and prod does? (or vice versa which would be kind of odd). What if you don&#8217;t mirror your Degree of Parallelism settings? You could go to production and a query that seemed to perform well is now not. One recent example I saw had a query plan that was influenced by parallelism choosing an index scan when it should have been doing a seek. It was reading far too much data but all things were the same between dev and prod except for the number of procs (1 to 8). The fix wasn&#8217;t to disable parallelism, the fix was an important missing index. In development the plan was still inefficient but it didn&#8217;t &#8220;feel&#8221; inefficient to the developer.</span></li>
<p></p>
<li><span><strong>You do look at your query plans, right? </strong>- As I blogged about <a href="http://www.straightpathsql.com/blog/2009/2/20/just-add-a-join-hint.html">here</a>, reading a query plan isn&#8217;t rocket science. Once you start looking at them they become clearer over time. The real danger, however, is not looking at them. Even if your query comes back in half a second in dev, look at the plan and make sure you aren&#8217;t doing anything silly.</span></li>
</ul>
<ul>
<li><span><strong>While you are at it what about IO Statistics or Profiler? &#8211; </strong>Whenever I am tuning a query, I generally have SET STATISTICS IO ON at the top of that query. I want to see what the reads look like. You will find debates about tuning to reads but from my point of view it is important to keep your reads lower. Not to the point where doing so increases duration because of some crazy logic. Generally it is my finding that the less reads a query does, the less duration it takes. Not always true but look at your reads in dev. If it is high there and in production there are a lot of similar queries and more than the one user in dev you may be asking the production server to flush pages from memory at a faster rate than you would otherwise like. This means more physical I/Os, which are not as happy as logical I/Os. Profiler is a great tool (as Gail blogged about <a href="http://sqlinthewild.co.za/index.php/2009/04/29/functions-io-statistics-and-the-execution-plan/">here</a>) to show you the impact of a UDF. Your query plan and I/O Statistics are not going to show you the impact of that UDF you have in your select list because you are a procedural programmer turned SQL Developer. In fact don&#8217;t just look at the duration/reads in profiler but look through Gail&#8217;s post and look at the statement completed events to see just how many times that UDF code that was so efficient alone is being called.</span></li>
</ul>
<ul>
<li><strong>You do keep your statistics updated, right? &#8211; </strong>Sounds like a &#8220;No Duh&#8221; but it isn&#8217;t in a lot of places. How often do you update your statistics in the database? When you refresh dev, do you update statistics? Do you have a job to do so in Prod as well? If your statistics are out of date, your query plans may not make a lot of sense and they could be sub-optimal. The optimizer is a powerful tool but it can only be as good as the information it has when figuring out an approach.</li>
</ul>
<ul>
<li><span><strong>&nbsp;How often do you compare schemas?</strong> &#8211; Your dev environment does look like production, right? What about your indexes? Do you ever run a tool like Visual Studio Team System for Database Professionals or SQL Compare from Redgate (not a paid endorser but this is the tool I personally use for schema comparisons, even with VSTS DB in house which I like for other reasons), etc? You may be surprised but I have seen a lot of cases where a developer has created an index in dev or even in QA/UAT/Performance (Why, oh why, did you give the developers permissions to those environments&#8230;) and got quite busy and forgot that they meant to check that the index was scripted and included in a deployment plan.</span> </li>
</ul>
<p>There are other causes and there are even some strange occurrences that take a bit of time digging into. Generally, though, these are the reasons I tend to uncover in this scenario. Another cause is not meant as a slight against any one role in a project, it is something we all mutually contribute to:</p>
<p><strong>The development is NOT done when the expected results are returned or the expected actions occur!</strong></p>
<p>I have seen overworked developers and DBAs, under funded project managers (resource and time wise), over zealous management (as far as this date will be met, no matter how realistic it is) and a variety of other causes to that rant above. The simple truth is, development is done when it performs the expected action, the unit tests in dev have verified it <strong>and </strong>the unit tests also looked at performance and the piece of code is performing as best as it possibly can given the circumstances. Low hanging fruit type problems abound in most environments I have encountered. I know the projects never have enough time but sometimes 20 minutes extra on a procedure could have meant that one wouldn&#8217;t have showed up on a &#8220;worst offenders&#8221; list.</p>
<p>I don&#8217;t want to put all of the onus on development either. DBAs should setup standards and best practices and have code reviews. They should mentor their teams in performance areas. Senior developers should do the same.</p>
<p>Management needs to put an emphasis on proper testing, including performance testing (either in dedicated environments that mirror production hardware and data as best as possible or in a test environment that is as close as possible). There will always be performance problems that slip past development just like non-performance bugs. Without searching for them before production, it&#8217;s your users that will be your bug reporters. That could mean the difference between retaining a client or system adoption.</p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/07/worked-fine-in-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Do you have a TAM?</title>
		<link>http://www.straightpathsql.com/archives/2009/04/do-you-have-a-tam/</link>
		<comments>http://www.straightpathsql.com/archives/2009/04/do-you-have-a-tam/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 14:15:53 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[Microsoft Support]]></category>
		<category><![CDATA[Technical Account Manager]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=39</guid>
		<description><![CDATA[

Disclaimer: I mean what I am going to post. This is not a Microsoft fan boy post. That would include a conversation about my Zune, the Xbox 360 I don&#8217;t have or something&#8230; I think this is a great resource for a Microsoft shop.
A TAM?
Technical Account Manager. When your company pays for a premier support [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F04%252Fdo-you-have-a-tam%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Do%20you%20have%20a%20TAM%3F%20%23%22%20%7D);"></div>
<p><strong>Disclaimer: </strong>I mean what I am going to post. This is not a Microsoft fan boy post. That would include a conversation about my Zune, the Xbox 360 I don&#8217;t have or something&#8230; I think this is a great resource for a Microsoft shop.</p>
<p style="font-size: 110%;"><strong>A TAM?</strong></p>
<p style="font-size: 110%;">Technical Account Manager. When your company pays for a premier support contract with Microsoft you get assigned a TAM. They help liaison between you and the support arm at Microsoft. When a case is open for too long, an on the ball TAM will call you, call the support group and get things moving. If you want to ask a question without incurring hours, they can sometimes help you out. Most TAMs will come out to your site at least monthly and just check in with all of the folks who have support accounts. They want to make sure you are happy and getting what you need.</p>
<p style="font-size: 110%;"><strong>How do I get one?</strong></p>
<p style="font-size: 110%;">Well you have to have a Premier Support contract. I don&#8217;t know the details on pricing or how it works but if you are an enterprise that wants to have that peace of mind that you have the hours available, have the escalation assistance available, etc. It makes sense in my mind.</p>
<p style="font-size: 110%;"><strong>So what, I don&#8217;t need a TAM.</strong></p>
<p style="font-size: 110%;">Well right, it&#8217;s not all about your TAM. It&#8217;s the services offered by Premier Support Services through your TAM and the support umbrella. Some of the benefits from being a PSS customer and having your very own TAM:</p>
<ul>
<li>A recent <strong>training course on SQL Server 2005 Performance Tuning and Optimization</strong>. This was taught by a Premier Field Engineer (They will rapidly respond to a critical situation at your site that can&#8217;t be handled over the phone. They work within premier support, not sure how they are dispatched to non-premier customers. Like anything I imagine if you set it all up front, it is more timely and less expensive) named George. Knowledgeable guy, great material. There are countless classes like this for all products. You don&#8217;t &#8220;pay&#8221; for the course but you have proactive support hours deducted from your account. If you do it right and spend more time in proactive mode, your reactive calls are hopefully lower and you end up doling out less hours anyway so it all works out.</li>
<li><strong>Alerts (Upcoming security patches, serious issues, information of interest to my role &#8211; SQL -, upcoming free webinar reminders, upcoming local free or PSS-hour deducting courses)</strong> &#8211; I probably get at least one e-mail a week from my TAM and that is consistent with other gigs that included premier support.</li>
<li><strong>&nbsp;An Extra Set of Hands &#8211; </strong>Your TAM sees your cases on their web interface, checks in to be sure you are getting proper support and helps escalate as needed.</li>
<li><strong>Access to web interface/advanced hotfixes &#8211; </strong>When you have premier you can log calls through a web interface. You can also search this interface for special knowledge base&nbsp; articles and hotfixes available only to Premier customers which may assist you.</li>
<li><strong>Someone to vent to &#8211; </strong>As in most of life, things don&#8217;t always happen in an ideal fashion. Without Premier you can still get to the chain of command. With a TAM you have someone readily available to whine to and you get instant help in making it right.</li>
<li><strong>A monthly visit </strong>- It has been my experience at a couple of places that our TAM came up and visited monthly. Asked how things were, chatted about upcoming events, asked how they could better help us, suggest proactive services and even head out to lunch on occasion. </li>
</ul>
<p><strong>Proactive Services</strong></p>
<p>One of my <a href="http://www.straightpathsql.com/blog/category/pet-peeve">pet peeves</a> is always being stuck in reactive mode. Sometimes you need to stop and ask yourself where <a href="http://www.straightpathsql.com/blog/2009/3/5/where-do-i-start.html">to begin</a>. Sometimes you may need some help. Through Premier Support you can have a SQL Server Health Check or a SQL Risk Assessment Program check (SQLRAP.. Not <a href="http://twitter.com/sqlfool">Michelle Ufford&#8217;</a>s kind of <a href="http://sqlfool.com/2009/04/sql-rap-contest/">SQL Rap</a> &#8211; <a href="http://twitter.com/sqltwit">Ward Pond&#8217;</a>s kind of <a href="http://blogs.technet.com/wardpond/default.aspx">SQLRAP</a>)</p>
<p>Through these programs, a Premier Support engineer with expertise in the product being checked will come onsite, work with you and analyze your environment with a goal of increasing your proactive abilities. They don&#8217;t come to ding you, audit you or belittle you. They come with great tools, analyze your instances and help document a plan to get where you need to go. They also give you an excuse to be proactive. You have to schedule the days to work with them and you need to sort of just let things pile up and focus on proactive mode. This is an invaluable tool for you to use. In fact I feel the same way about these checks as I feel about finding your instances with the <a href="http://www.straightpathsql.com/blog/2009/2/25/what-sql-instances-are-installed-on-my-network.html">Microsoft Assessment and Planning tool</a>.</p>
<p>You can learn more about Premier Support Services at this <a href="http://www.microsoft.com/services/Microsoftservices/srv_premier.mspx">link</a>.</p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/04/do-you-have-a-tam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manage Your Transactions (So They Don&#8217;t Manage You &#8211; Part 2)</title>
		<link>http://www.straightpathsql.com/archives/2009/04/manage-your-transactions-so-they-dont-manage-you-part-2/</link>
		<comments>http://www.straightpathsql.com/archives/2009/04/manage-your-transactions-so-they-dont-manage-you-part-2/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 01:43:00 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pet Peeve]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Shrinking & Transactions]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[Pet Peeves]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=36</guid>
		<description><![CDATA[

This is the final in a series on shrinking and transactions. You can see them all&#160;in the Shrinking &#38; Transactions category.
In part 1, we talked about factors that affect transaction log growth. We talked about what a SQL Server transaction is and the various modes SQL interacts with a transaction (Autocommit, Implicit Transactions and Explicit [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F04%252Fmanage-your-transactions-so-they-dont-manage-you-part-2%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Manage%20Your%20Transactions%20%28So%20They%20Don%27t%20Manage%20You%20-%20Part%202%29%20%23%22%20%7D);"></div>
<p><em>This is the final in a series on shrinking and transactions. You can see them all&nbsp;in the <a href="http://www.straightpathsql.com/blog/category/shrinking-transactions">Shrinking &amp; Transactions</a> category.</em></p>
<p>In <a href="http://www.straightpathsql.com/blog/2009/4/9/manage-your-transactions-so-they-dont-manage-you-part-1.html">part 1</a>, we talked about factors that affect transaction log growth. We talked about what a SQL Server transaction is and the various modes SQL interacts with a transaction (Autocommit, Implicit Transactions and Explicit Transactions).</p>
<p>The theme of that post was about managing your transactions so they don&#8217;t manage you. In that same theme, let&#8217;s continue being in charge of our transactions. Rather than from a physical size perspective, let&#8217;s look at it from a performance standpoint.</p>
<p><strong>Database Engine/Administration Factors</strong></p>
<p>When it comes to ensuring that transaction logging and transactions don&#8217;t cause performance bottlenecks there are a few things DBAs should remember and look at, I&#8217;ll highlight a few of them.</p>
<p><strong>Pay careful attention to the I/O of your transaction log &#8211; </strong>As I discussed in <a href="http://www.straightpathsql.com/blog/2009/4/9/manage-your-transactions-so-they-dont-manage-you-part-1.html">Part 1</a>, the transaction log record needs to be written first and this is vital to remember. Keep your Transaction log on fast I/O, separate I/O and follow best practices with your log file.</p>
<p>A great <a href="http://www.sqlskills.com/BLOGS/KIMBERLY/post/8-Steps-to-better-Transaction-Log-throughput.aspx">blog post</a> by Kimberly Tripp with eight tips here goes through many more details that I have often hinted about in various posts. Some of her tips are best practices for the data file as well.</p>
<blockquote>
<p>She mentions things like: <strong>Pre-Allocate Your Space!!</strong> This is a huge pet peeve of mine. Plan for your capacity and start out with the size you think you will need. This will stop costly <strong>autogrowths </strong>which can lead to <strong>fragmentation </strong>and<strong> waits (for the growth.) </strong></p>
<p>Or <strong>Defragment the physical volume </strong>, people spend a lot of time in the database world looking at index fragmentation (<strong>at least I <em>hope </em>you do!) </strong>What about your physical storage?</p>
</blockquote>
<p>When it comes to choosing your RAID, remember the transaction log is going to want <strong>fast writes. </strong>These writes are <strong>sequential. </strong>These writes are <strong>writes. </strong>RAID 5 (<a href="http://en.wikipedia.org/wiki/Standard_RAID_levels">Wikipedia article on RAID</a>) may not generally be a <em>horrible </em>solution for your data (.MDF/.NDF) files. For the Log files, it just doesn&#8217;t make sense. RAID 5 incurs extra cost for each write (essentially 2 reads and 2 writes for each write because of the maintenance of parity for fault tolerance).</p>
<p>If cost is an issue, look at just mirroring. This will give you some fault tolerance (<strong>Remember, the transaction log is key to a happy, consistent database as we talked about in Part 1</strong>) and still gives you the same performance as writing to one disk.</p>
<p>If the mirror doesn&#8217;t give you great performance for your high end, high throughput applications, consider RAID 10 or RAID 0+1 (both are essentially combining <strong>striping and mirroring </strong>in various means). These will give you the redundancy with the performance benefit of a stripe.</p>
<p><strong>Don&#8217;t get into a shrink/grow. shrink/grow pattern. </strong>I have harped on this one. Set it to the size you think you need, manage it&#8217;s growth and monitor it. Tibor Karaszi has an excellent post about log shrinking and it&#8217;s effect on <a href="http://www.karaszi.com/SQLServer/info_dont_shrink.asp"><strong>Virtual Log Files (VLFs)</strong></a>.</p>
<p><strong>Pick the right recovery model! </strong>As I discussed in Part 1, recovery models are important for log growth. It&#8217;s also important to pick the right model for your recovery needs (in fact much more important to pick for <strong>recovery </strong>needs.. (<a href="http://www.straightpathsql.com/blog/2009/1/14/do-you-focus-too-much-on-your-backups.html">Remember we do backups for <strong>restores</strong> in fact it&#8217;s the restores that are more important</a>). Let&#8217;s presume that you care about point in time recovery and you pick <strong>Full Recovery</strong>:</p>
<p>That&#8217;s great. Now get a strategy to <strong>PERFORM LOG BACKUPS. </strong>Being in full recovery mode without doing full backups is pointless. This tells me you aren&#8217;t performing restore drills (<strong>are you?</strong>), you are probably <em><strong>truncating and shrinking </strong></em>your log file when you run out of space and you potentially can&#8217;t meet<strong> SLAs or expectations</strong>. This will cause all of the above issues but it will also manifest itself in performance problems. So get with the program and do those log backups on a schedule that meets your required recoverability (<a href="http://www.straightpathsql.com/blog/2009/3/5/where-do-i-start.html"><strong>one of the &#8220;itties&#8221; we should all care about</strong></a>) and manages growth/performance best.</p>
<p>These are some of the highlights that quickly come to mind that a DBA can have effect on. There are definitely more, check out Kimberly&#8217;s post above and look around her blog, great stuff to keep in mind.</p>
<p>What about:</p>
<p><strong>Things Developers Can Be Mindful Of</strong></p>
<p><strong>KISS &#8211; Keep it short stupid</strong> &#8211; Alright, the stupid part was uncalled for but it worked. The key to remember when developing is if you are holding a transaction open, you are holding <strong>locks </strong>for the duration of your transaction.</p>
<p>What kind of locks you are holding depends on your operation (Select, DML, DDL, etc) and your <a href="http://msdn.microsoft.com/en-us/library/ms173763.aspx">transaction isolation level</a> and any <a href="http://technet.microsoft.com/en-us/library/ms187373.aspx">lock hints</a> you may be using (Andrew Kelly has a great <a href="http://sqlblog.com/blogs/andrew_kelly/archive/2009/04/10/how-dirty-are-your-reads.aspx">post </a>about the dangers of <strong>NOLOCK or SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED</strong>). Remember that when you are in a transaction, whatever lock you had to hold to perform your operation is <strong>held until that transaction is committed.</strong></p>
<p>If you perform an update within an explicit transaction (<strong>BEGIN TRANSACTION</strong>) and you are in the default isolation level of SQL Server (Read Committed) you will be holding some sort of exclusive lock <strong>even after your update statement is finished</strong>. SQL doesn&#8217;t know if you are going to rollback or commit your work so it has to lock either the rows, page or table (depending on the grain of lock chosen) <strong>until you tell SQL that you are done</strong>. This means that you can <strong>block other updates, other reads or other operations until you have committed/rolled back your transaction. </strong></p>
<p>This is excellent behavior out of a DBMS. You want to hold a lock until you are done. Otherwise you might as well just throw data integrity out the window. It&#8217;s <strong>bad</strong> when you hold that poor transaction hostage longer than need be. So, the solution is simple:</p>
<ul>
<li><strong>Keep your transactions as short as possible</strong></li>
<li><strong>Properly handle errors and rollback when necessary</strong></li>
<li><strong>COMMIT as soon as possible</strong></li>
<li><strong>Don&#8217;t try to solve world peace and hunger within one transaction </strong>- I cringe when I see a single &#8220;BEGIN TRANSACTION&#8221; and then multiple page downs of operations, <strong>cursors</strong>, select statements, crazy logic, etc before you get to the commit or rollback. This means that all of those locks are held and you are probably causing blocking until you are done. <strong>Batch out work.</strong></li>
<li><strong>Even with implicit transactions, don&#8217;t try to do too much work in one operation. </strong>If you are updating an entire table, and it is a huge table, try and batch it out, allow the work to commit, allow a checkpoint to fire and keep your log from growing.</li>
</ul>
<p><strong>You tell those Writers, we just want to read!</strong></p>
<p>Sorry, you hold locks also. <strong>When you issue a select you are still holding a potentially blocking lock</strong>. This depends on isolation level and lock hints but in the default isolation level you are holding a lock. This is to prevent you from reading data that is about to be rolled back. <strong>Readers Can (and often do) block writers</strong>. If you are in a busy OLTP system and experience a lot of timeouts on update/insert operations look at your reporting queries, your select queries.</p>
<p><strong>Optimize your code for performance. </strong>This holds true for updates/inserts and selects but watch your selects, if it takes you 10 seconds to bring back data to a screen, that is 10 seconds (per select) that you are potentially blocking a writer. Even if it takes 20ms but is executed quite frequently, that is a potentially substantial situation. <strong>Look at the performance of every piece of code you release!</strong> Query tuning doesn&#8217;t have to be difficult. One place to start is this <a href="http://www.straightpathsql.com/blog/2009/2/20/just-add-a-join-hint.html">post </a>but a quick search will yield a lot of tips. Check out my <a href="http://www.straightpathsql.com/blogroll/">blogroll</a>, a lot of excellent advice on those blogs.</p>
<p>Think about performance at the beginning of a project rather than the end and your life will be easier in production. <strong>DBAs &#8211; </strong>make performance be an initiative at the beginning. Yes you are too busy for proactive work right now, <strong>make time for it anyway. </strong>When you pay later you always pay a lot more.</p>
<p>Again, with Part 1, I am hoping that a lot of this was review and simple. At the same time, if it helped anyone, great. There is plenty of advice out there and some careful thought and consideration to managing your transactions and .LDFs will go a long way.</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><strong>Related Posts At StraightPath SQL</strong></span></p>
<ul>
<li><a href="http://www.straightpathsql.com/blog/2009/4/9/manage-your-transactions-so-they-dont-manage-you-part-1.html">Manage Your Transactions (So They Don&#8217;t Manage You &#8211; Part 1)</a></li>
<li><a href="http://www.straightpathsql.com/blog/2009/1/6/dont-touch-that-shrink-button.html">Don&#8217;t Touch That Shrink Button!</a></li>
<li><a href="http://www.straightpathsql.com/blog/2009/1/31/shrinking-is-a-popular-topic.html">Shrinking Is A Popular Topic</a><span style="text-decoration: underline;"><br /></span></li>
</ul>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/04/manage-your-transactions-so-they-dont-manage-you-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manage Your Transactions (So they don&#8217;t manage you &#8211; Part 1)</title>
		<link>http://www.straightpathsql.com/archives/2009/04/manage-your-transactions-so-they-dont-manage-you-part-1/</link>
		<comments>http://www.straightpathsql.com/archives/2009/04/manage-your-transactions-so-they-dont-manage-you-part-1/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 13:19:02 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Pet Peeve]]></category>
		<category><![CDATA[Recovery]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Shrinking & Transactions]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pet Peeves]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=34</guid>
		<description><![CDATA[

This is part 3 in a series on shrinking and transaction management. Click here for part 4. You can see them all in the Shrinking &#38; Transactions category.
If you are one of the people who have been reading this blog, you know where I stand on shrinking databases/log files. I don&#8217;t like&#160;the practice&#160;(Post 1, Post [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F04%252Fmanage-your-transactions-so-they-dont-manage-you-part-1%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Manage%20Your%20Transactions%20%28So%20they%20don%27t%20manage%20you%20-%20Part%201%29%20%23%22%20%7D);"></div>
<p><em>This is part 3 in a series on shrinking and transaction management. Click <a href="http://www.straightpathsql.com/blog/2009/4/15/manage-your-transactions-so-they-dont-manage-you-part-2.html">here</a> for part 4. You can see them all in the <a href="http://www.straightpathsql.com/blog/category/shrinking-transactions">Shrinking &amp; Transactions</a> category.</em></p>
<p>If you are one of the people who have been reading this blog, you know where I stand on shrinking databases/log files. I don&#8217;t like&nbsp;the practice&nbsp;(<a href="http://www.straightpathsql.com/blog/2009/1/6/dont-touch-that-shrink-button.html">Post 1,</a> <a href="http://www.straightpathsql.com/blog/2009/1/31/shrinking-is-a-popular-topic.html">Post 2</a>, SQLServerPedia <a href="http://sqlserverpedia.com/wiki/Shrinking_Databases">article</a>.)</p>
<p>That being said, let&#8217;s look at a couple of reasons why transaction logs can grow and what you can do about that in a proactive mode. We&#8217;ll break this down into a couple posts.</p>
<p>Through answering forum questions and some recent conversation at a Microsoft SQL Tuning class, it strikes me that there are some misconceptions about how transactions work, when one needs to commit/rollback and what the recovery models actually do to your database. Hopefully we can rake through some of that today.</p>
<p><strong><span style="font-size: 110%;">What is a transaction?</span></strong></p>
<p>This is probably a review, so let&#8217;s just hit the quick points:</p>
<ul>
<li>An atomic unit of work that either succeeds or fails together as one.</li>
<li>Classic example is the credit/debit example (Note this doesn&#8217;t work with government budgets, think of your checking account)
<ul>
<li>You are online with your bank and initiate a transfer from your checking account to your loan account. This transaction includes a withdrawal and deposit. What happens if there is a failure between operations? Depends on if the work was done in a transaction:</li>
<li>In a Transaction &#8211; The withdrawal that happened is undone (rollback) and everything is fine.</li>
<li>No Transaction &#8211; The withdrawal completes (commit) and the deposit never happens. You are out $300 and have it sitting in limbo land someplace.</li>
</ul>
</li>
</ul>
<p><strong>Implicit/Explicit/Autocommit?</strong></p>
<p>There are three modes that SQL Server can operate in with regards to transactions. Implicit and Explicit transactions or in autocommit mode. Let&#8217;s explore those:</p>
<ul>
<li><strong>Autocommit Mode &#8211; </strong>This is default behavior in SQL Server. This is also where a lot of people can get tripped up in their thinking (more on that in a minute&#8230;). Basically here, if you were to issue a SQL query that modifies data, once that statement completes (without error) the work you did is automatically committed.</li>
<li><strong>Explicit Transaction &#8211; </strong>This is also default behavior in SQL Server. If you want to declare a transaction yourself and specify when to commit or rollback a unit of work you use the <strong>BEGIN TRANSACTION, ROLLBACK TRANSACTION </strong>or <strong>COMMIT TRANSACTION </strong>commands. You declare your transaction and then through proper error handling manage when to rollback or&nbsp; commit based on your business rules. Through this method you can have multiple statements inside the same transaction as opposed to what happens with autocommit.</li>
<li><strong>Implicit Transaction Mode &#8211; </strong>This is off by default but you can enable it within a session with this command: SET IMPLICIT_TRANSACTIONS ON. You can read more about it in books online (<a href="http://msdn.microsoft.com/en-us/library/ms188317.aspx">here</a>). Basically anytime you issue a command that can modify data, SQL Server will implicitly issue a behind the scenes BEGIN TRANSACTION for you. Every statement issued from that same connection is part of that one transaction and you have to manually issue a rollback/commit command to complete that transaction. Forget to do it and now you have one big transaction which has it&#8217;s drawbacks (see below).</li>
</ul>
<p><strong><span style="font-size: 110%;">My Log is still growing! I didn&#8217;t do a BEGIN TRAN?!</span></strong></p>
<p>So you are doing ETL, doing a large delete operation or otherwise modifying a lot of data at once. You are in simple recovery mode (transaction log is overwritten at certain periods, more on recovery models <a href="http://sqlserverpedia.com/wiki/Recovery_Models">here</a>) because you don&#8217;t need to restore to a point in time. Since you haven&#8217;t declared a transaction, why on earth is SQL Server&#8217;s transaction log growing out of control?</p>
<p><strong>The answer is simple: <em>because it cares</em></strong>. It doesn&#8217;t matter which recovery model you have chosen, SQL Server will <span style="text-decoration: underline;">always</span>&nbsp;write to the transaction log. In order to maintain consistency in the database, before something is considered as having been completed it needs to be in the transaction log. It will eventually write to the physical disk but it has to be in the transaction log before your transaction is complete (see why it&#8217;s so important to put your transaction log on a separate drive and great IO??). If something were being written to the physical .mdf file but not complete when someone pulls the power plug from your server, we have a reasonable expectation of SQL to come back up in a consistent state. This is called recovery. Any transactions that are marked as committed in the log file are essentially rolled forward to the data files. Any that were not done but started are rolled back.</p>
<p>The recovery models just tell SQL how some operations get logged and when that log file is marked for reuse. In FULL recovery mode, it is not reusable <em>until</em> you do your log backup. In Simple recovery mode it is reusable once the data is written to the physical disk and no longer needed in the log, essentially.</p>
<p>The consistency and recovery means something to us when combined with the default mode that SQL operates in:</p>
<ul>
<li><strong>Every statement is a transaction whether you tell SQL it is or isn&#8217;t. </strong>This is a great thing for us and our data quality.</li>
</ul>
<p>So if you think about that statement, it makes sense that one big update or delete statement would cause your log file to grow &#8220;out of control&#8221; (it&#8217;s actually very much in control, just not your expected results <img src='http://www.straightpathsql.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p>Try&nbsp;and think about different methods for handling what you are doing:</p>
<ul>
<li>Can you batch your work into smaller units? Issuing several updates,inserts or deletes dealing with a smaller amount of rows each time can help manage log growth. (<em>The log will only be reused only to the point of the longest running transaction, if you have one big query it&#8217;s all one transaction).</em></li>
<li>When deleting, are you deleting most of the rows? Maybe consider doing a truncate and recreate/repopulate of the table if the rows remaining after the delete will be less than those deleted.</li>
<li>Consider changing recovery models &#8211; Going to Simple or Bulk Logged&nbsp;recovery mode won&#8217;t help you if it is all one being done in one operation. It will potentially help the reuse if you batch it out into manageable chunks. <em>If you change your recovery mode, look it up on books online, you will most likely have to perform a full backup to keep your log chain intact and maintain restorability!</em></li>
<li>Staying in Full Recovery mode? Perform frequent log backups. Again this won&#8217;t help you with the growth of your transaction log during one large operation but it does help with multiple batches.</li>
<li>Look at using SSIS for ETL work, various options within SSIS can help manage this better and do your loads in a more efficient manner.</li>
</ul>
<p><strong>While I have your attention &#8211; </strong></p>
<p>I mentioned above one good reason to have your transaction log separate. This falls into the &#8220;widespread news&#8221; category but it&#8217;s my experience it isn&#8217;t so widely followed. Separate your transaction logs onto a separate drive when you can! Log write performance is incredibly important. If you are going to do RAID at all on it, do RAID 10 or RAID&nbsp;1 as performance is important&nbsp;(hence no RAID 5) and redundancy is important (hence no RAID 0- striping only).</p>
<p>While we are at it do you put your log backups (are you taking any???) on a separate drive also? If not, what happens if your log file drive crashes and you want to restore a log file backup? Oops.. Separate (Physically, not partitions on the same drive) your usage of drives. Yes budgets come into play but there are some basics you should try and follow where possible&#8230;</p>
<p>&nbsp;</p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/04/manage-your-transactions-so-they-dont-manage-you-part-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What SQL instances are installed on my network?</title>
		<link>http://www.straightpathsql.com/archives/2009/02/what-sql-instances-are-installed-on-my-network/</link>
		<comments>http://www.straightpathsql.com/archives/2009/02/what-sql-instances-are-installed-on-my-network/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 19:46:15 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[Find SQL Instances]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=28</guid>
		<description><![CDATA[

Find All SQL Server Instances On Your Network!
It&#8217;s been awhile since a tool has given me that giddy, starstruck feeling but it&#8217;s happened this week&#8230; If you ever struggle with instance discovery and management, I hope you get excited and try this tool out as well. Bear with me as I walk through it.
If you [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F02%252Fwhat-sql-instances-are-installed-on-my-network%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22What%20SQL%20instances%20are%20installed%20on%20my%20network%3F%20%23%22%20%7D);"></div>
<h2>Find All SQL Server Instances On Your Network!</h2>
<p>It&#8217;s been awhile since a tool has given me that giddy, starstruck feeling but it&#8217;s happened this week&#8230; If you ever struggle with instance discovery and management, I hope you get excited and try this tool out as well. Bear with me as I walk through it.</p>
<p>If you are like me, you have racked your brain for ways to find all of your SQL Server instances on the network. Maybe you didn&#8217;t get a chance to be involved in the vendor selection process and ask <a href="http://www.straightpathsql.com/blog/2009/1/27/new-vendor-interview-with-an-annoying-dba.html">these questions</a> but you are responsible for all instances known and unknown. Maybe you have to do an enterprise license true up? No matter the reason one of the biggest pains to this DBA is trying to find your SQL Server instances. There are ways to do it with SQLCMD or OSQL but they don&#8217;t catch nearly half of the instances because of network/UDP/security/etc issues. There are command line scripts you can write that use DMO or SMO to enumerate SQL Instances but they still miss some.</p>
<p>Well this past week I was at the Waltham, MA Microsoft Technology Center and I whined about this to Rob Walters (Co-Author on two great books about <a href="http://www.amazon.com/Pro-Server-2005-Thomas-Rizzo/dp/1590594770/ref=sr_1_3?ie=UTF8&amp;s=books&amp;qid=1235591537&amp;sr=1-3">SQL Server 2005</a> and <a href="http://www.amazon.com/Accelerated-SQL-Server-2008-Walters/dp/1590599691/ref=sr_1_5?ie=UTF8&amp;s=books&amp;qid=1235591537&amp;sr=1-5">SQL Server 2008</a>) and Rich Crane (Co-Author of this <a href="http://www.amazon.com/Essential-Windows-Communication-Foundation-WCF/dp/0321440064/ref=sr_1_8?ie=UTF8&amp;s=books&amp;qid=1235591682&amp;sr=1-8">WCF book</a> and general MTC guru). The reply was &#8220;MAP, you need to see MAP&#8221;. I hadn&#8217;t seen MAP yet and when I saw it, it was love at first sight. (Seriously)</p>
<p><strong>MAP?</strong></p>
<p>&#8220;Microsoft Assessment and Planning Toolkit&#8221; is a tool suite that Microsoft has developed for various purposes. One of those purposes appears to be helping give suggestions on upgrading your environment (it&#8217;s a free tool so it has to have some mutual value, right?). You can see all about it at the MAP site <a href="http://www.microsoft.com/map">here.</a></p>
<p>I have only played with this tool as it relates to SQL Server and I am sure it offers more value in other ways but let&#8217;s just talk about what it does for SQL Server. That&#8217;s the part that caught my eye.</p>
<p>Basically this tool can connect to machines either you specify specifically, exist on an IP range you specify or exist within an Active Directory domain you specify and have Admin privileges on. The SQL Server Accelerator will interrogate these machines and through low impact WMI queries ask if SQL (or related SQL components) is installed. It will then report back a lot of great information that can really help you out.</p>
<p>Best of all? It formats this data in an Excel Spreadsheet giving you the following pieces of information:</p>
<ul>
<li><strong>Computer Name</strong></li>
<li><strong>Instance Name</strong></li>
<li><strong>SQL Product Name</strong></li>
<li><strong>SQL Version Number</strong></li>
<li><strong>SQL Service Pack level (from the version number)</strong></li>
<li><strong>SQL Server Edition (Developer, Standard, Express, etc)</strong></li>
<li><strong>Clustered yes/no flag</strong></li>
<li><strong>Physical or Virtual Machine indicator</strong></li>
<li><strong>What sub-directory that instance is in (MSSQL.1/MSSQL.2/etc)</strong></li>
<li><strong>SQL Server State (Running/Stopped)</strong></li>
<li><strong>SQL Server Service start mode</strong></li>
<li><strong>O/S and Service Pack info</strong></li>
<li><strong>64/32 Bit flag</strong></li>
<li><strong>How many processors/cores/logical processors</strong></li>
<li><strong>CPU brand/model number/speed/etc</strong></li>
<li><strong>Memory</strong></li>
<li><strong>Drive letters with total and current free space</strong></li>
<li><strong>And other useful information</strong></li>
</ul>
<p>So you can kick this off to go through your AD, have a Domain Admin login to the utility (it does not remember credentials and it is very light impact, simple WMI queries after simple AD &#8220;walking&#8221;), let it run (it can take awhile as it has to wait for a WMI/network timeout for each machine) and eventually get a spreadsheet with all of your SQL Server information! You can then import that to a database, write code to interrogate it, plug it into a powershell auditing script to check all servers for policies, etc. etc. This is a HUGE tool in a DBAs toolkit and I am very excited about it.</p>
<p>There is a second tab on the spreadsheet listing similar information about other components found like Analysis, Reporting and Integration services.</p>
<p><strong>Okay, what&#8217;s the catch, how tough is it to use?</strong></p>
<p>No catch. One of the deliveries is also a word document that summarizes information about your environment, gives some pretty charts showing what editions and versions you are on. If you are not on SQL 2008 across the board it has a good executive summary telling you why you should upgrade. That isn&#8217;t really a catch, it&#8217;s half market-ware but half useful. If you want to have some information to give to management about why to upgrade, this document is your friend.</p>
<p>As for the ease of use.. Nothing to it really. Bear with me and my screenshots as we walk through the use of it. You can download the tool at the <a href="http://www.microsoft.com/map">home site for the toolkit</a>. This installer will install SQL Server 2008 Express Edition (instance gets called MAPS. Rob tells me if you already have an instance called MAPS, it won&#8217;t recreate it and will just put the database onto that instance)</p>
<p><strong>Once the install is done you get presented with a simple UI:</strong></p>
<p><strong><img class="aligncenter size-full wp-image-131" title="Microsoft Assessment And Planning Interface" src="http://straightpathsql.com/wp-content/uploads/2009/02/MAPS_Interface2.JPG" alt="Microsoft Assessment And Planning Interface" width="784" height="502" /><br />
</strong></p>
<p style="text-align: center;"><span class="full-image-block ssNonEditable"><span> </span></span></p>
<p><strong>From here you create a database to use for the storage of the data. Simply Create a database and give it whatever name makes sense for you. I called mine MAP_Test:</strong></p>
<p><strong><span class="full-image-block ssNonEditable"><span> </span></span><img class="aligncenter size-full wp-image-133" title="create maps interface" src="http://straightpathsql.com/wp-content/uploads/2009/02/create1.JPG" alt="create maps interface" width="429" height="234" /><br />
</strong></p>
<p><strong><img src="file:///C:/DOCUME%7E1/MIKE%7E1.WAL/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /><img src="file:///C:/DOCUME%7E1/MIKE%7E1.WAL/LOCALS%7E1/Temp/moz-screenshot-3.jpg" alt="" />Once the database is created you then go back to that dialog and from the middle pane, select the &#8220;Identify SQL Server instances to upgrade to SQL Server 2008&#8243; option. We get a new dialog box confirming the reports/proposals you want the tool to review:</strong></p>
<p><strong><span class="full-image-block ssNonEditable"><span> </span></span><br />
</strong></p>
<p><strong>Verify SQL Server assessment is checked and click Next. </strong>This next dialog box is where you can choose your connection options. For a quick test, I chose &#8220;Manually enter computer names and credentials&#8221;. This allowed me to go to a computer I was already local admin on and enumerate all installed SQL Instances. This weekend I will be letting this tool run with a Domain Admin typing their credentials (again it&#8217;s not saving them, I verified this when playing in the MTC lab). You can also specify another method that works best for your environment.</p>
<p><span class="full-image-block ssNonEditable"><span> </span></span></p>
<p><img class="aligncenter size-full wp-image-134" title="connection_methods" src="http://straightpathsql.com/wp-content/uploads/2009/02/connection_methods.JPG" alt="connection_methods" width="661" height="545" /></p>
<p><strong>Once you click next you will be greeted by a screen that allows you to specify authentication informatio and specific machine information if you selected to look at one server. </strong>Your account will need to have admin privs on the machine(s) being checked. I am doing it as a domain admin this weekend to hopefully find all cases of &#8220;Rogue&#8221; instances that I should be enforcing policy against or at least should know about.</p>
<p><img class="aligncenter size-full wp-image-135" title="Authenticate" src="http://straightpathsql.com/wp-content/uploads/2009/02/Authenticate.JPG" alt="Authenticate" width="661" height="545" /></p>
<p><span class="full-image-block ssNonEditable"><span> </span></span></p>
<p><strong>Once you supply your credentials, click finish and the collection begins. </strong>The dialog box below describes the status. Beware, this can take a long time depending on how many machines it needs to check. Try it with one machine and get a feel for the report and delays. I noticed no degradation to the machines I was checking as the footprint is low. As always use caution,  understanding and testing when doing anything to your production environment as I post in my <a href="http://www.straightpathsql.com/blog/2009/1/18/empirical-evidence.html">empirical evidence</a> post. Test it, get familiar with it and be wooed by the report!</p>
<p><img class="aligncenter size-full wp-image-136" title="running" src="http://straightpathsql.com/wp-content/uploads/2009/02/running.JPG" alt="running" width="604" height="365" /></p>
<p><span class="full-image-block ssNonEditable"><span> </span></span></p>
<p>Once this is done the cancel will turn into a close and the status should indicate success/failure counts.</p>
<p><strong>Now Comes the exciting part!</strong></p>
<p>Two things were saved to your Documents\MAP\Map_Test (or whatever you called your database) folder. an Excel Spreadsheet and a Word Document.</p>
<p>The Word document is cool. It shows pretty graphs and tables that upper level management likes to see. It tells you to upgrade to 2008 and why you should. Marketing helped with this document.</p>
<p><strong>The Excel Workbook </strong>is where it&#8217;s at. The first worksheet is a summary showing you counts of what was found and what couldn&#8217;t be found because of WMI issues or insufficient data. The other tabs are the instances found with the list of information from above and the same type of information about non database-engine components found.</p>
<p><img class="aligncenter size-full wp-image-137" title="reportsAndProposals" src="http://straightpathsql.com/wp-content/uploads/2009/02/reportsAndProposals.JPG" alt="reportsAndProposals" width="661" height="545" /></p>
<p><strong>Using this Info</strong></p>
<p>As I said above, the possibilities of what to do with this data are limitless. Some things that pop into my head right away:</p>
<ul>
<li><strong>Next Enterprise True-Up -</strong> When we have to do a true-up, no more getting caught having to compile data from multiple places. Get your latest excel from the MAP tool and you already have all of the information.</li>
<li><strong>Policy Based Management &#8211; </strong>I am one of one DBA, there are a lot more instances than me. I am still new here and going through server by server checking things is tedious. Now I can use pre-defined policies and custom policies, table drive or powershell drive the evaluation of policies and have a list of all non-compliant SQL Server 2000, 2005 or 2008 instances in my enterprise. Talk about a force multiplier!</li>
<li><strong>Service Pack Roll Outs &#8211; </strong>Do we have any RTM 2005 instances? I don&#8217;t know let me query the data that I imported from my MAP spreadsheet.</li>
<li><strong>Planning Decisions &#8211; </strong>So you are going to buy your monitoring tool, how many instances do you have anyway? How many are worth monitoring? (trick question, I think even dev/QA should have some level of monitoring.. maybe not your enterprise tool but blocked developers are just as bad as blocked users, if not more expensive)</li>
<li><strong>Etc &#8211; </strong>Really anywhere you need a list of your instances that is searchable and importable (Registering servers in management studio?) this tool can greatly help you.</li>
</ul>
<p>Check it out, it&#8217;s free to download and free to use. Maybe I have something wrong with me but this genuinely excited me and makes me a happy camper. It even finds your clustered and named instances with success every time I have tried it!</p>
<h2>You Might Also Like</h2>
<p>If you enjoyed learning about this free method of identifying your SQL Server Instances, perhaps this content may also be of interest:</p>
<ul>
<li><strong><a href="http://www.straightpathsql.com/blog/2009/8/6/benchmarking-who-needs-it.html" target="_blank">Benchmarking, Who Needs It?</a> </strong>We talk about a great free project on codeplex that allows you to get pretty graphs and reports from perfmon. This tool takes the numbers from performance monitor counters, prettifies them and gives a red/green/yellow indicator of status with helpful descriptions for you or your manager.</li>
<li><a href="http://www.straightpathsql.com/blog/2009/3/5/where-do-i-start.html" target="_blank"><strong>Where do I start?!</strong></a> Tips and tricks for the SQL Server DBA just starting out in a new environment.</li>
</ul>
<p>Want more content like this? Subscribe to <a href="http://feeds.feedburner.com/StraightpathSolutionsSqlBlog" target="_blank">this blog&#8217;s feed</a> in your favorite feed reader and stay up to date with tips and tricks. I like to share techniques and free tools I use to help me with my day job.</p>
<p><!--[if !mso]> <mce:style><!  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --> <!--[endif]--></p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Me dium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="2 1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} --> <!--[endif]--></p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/02/what-sql-instances-are-installed-on-my-network/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Shrinking is a popular topic&#8230;</title>
		<link>http://www.straightpathsql.com/archives/2009/01/shrinking-is-a-popular-topic/</link>
		<comments>http://www.straightpathsql.com/archives/2009/01/shrinking-is-a-popular-topic/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 20:47:38 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Shrinking & Transactions]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pet Peeves]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=23</guid>
		<description><![CDATA[

This is part 2 in a series on Shrinking &#8220;Best Practices&#8221; and logging. Click here for part 3. You can see them all in the Shrinking &#38; Transactions category.
A while back I posted about not touching the shrink button. I am still finding it fun to see what search queries bring traffic to my blog [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F01%252Fshrinking-is-a-popular-topic%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Shrinking%20is%20a%20popular%20topic...%20%23%22%20%7D);"></div>
<p><em>This is part 2 in a series on Shrinking &#8220;Best Practices&#8221; and logging. Click <a href="http://www.straightpathsql.com/blog/2009/4/9/manage-your-transactions-so-they-dont-manage-you-part-1.html">here</a> for part 3.</em> <em>You can see them all in the </em><a href="http://www.straightpathsql.com/blog/category/shrinking-transactions"><em>Shrinking &amp; Transactions</em></a><em> category.</em></p>
<p>A while back I posted about <a href="http://www.straightpathsql.com/blog/2009/1/6/dont-touch-that-shrink-button.html">not touching the shrink button</a>. I am still finding it fun to see what search queries bring traffic to my blog so I look at the search query log every once in awhile. That shrink post is coming up the most in searches which leads me to believe I should add a few more points.</p>
<p>As I said in that post there are some great comments on shrinking over at Paul Randal&#8217;s <a href="http://www.sqlskills.com/BLOGS/PAUL/">blog</a>. I suggest you definitely take a visit there, in fact if you had to stop reading and go to his blog, I wouldn&#8217;t be offended in the least.</p>
<p>Let&#8217;s talk about some of the more common questions that I see or infer from the web searches&#8230;</p>
<p><strong>My Transaction Log Has Grown Too Much or My Transaction Log is Out of Space<br />
</strong></p>
<p>If you have come here because your transaction log is growing out of control there is a strong chance that you are in Full Recovery mode and are not backing up your log file on a regular basis. Your transaction log continues to grow until you explicitly backup that log (a full backup won&#8217;t do). This is the expected behavior since Full Recovery mode means you want the ability to backup to a point in time and as long as your backup is someplace safe minimize your losses to the frequency of your backups.</p>
<p><strong>Solutions:</strong></p>
<p>1.) Setup a log backup schedule that meets your business needs. Search books online and understand recovery models, figure out the SLAs you are supposed to be supporting (do it before it&#8217;s too late since you are here reading this and Mr. Murphy likes to attack in these kinds of situations). Once you figure that out get your logs backing up on that schedule. Make sure they are going to a drive other than your mdf/ldf files so they are useful in the event of a failure. Perhaps even to tape directly or after a copy. You should see your log files become more manageable size-wise, hopefully.</p>
<p>2.) Get more space. Maybe you are doing Log backups but you still don&#8217;t have enough space. Either your activity is quite high or your allocated space is quite low. If it&#8217;s the former maybe a more frequent log backup helps. If it&#8217;s the latter or former, more space for your log files may be required.</p>
<p>3.) Switch to Simple Recovery Mode. This is not to be done lightly. You are no longer able to restore to a point in time but can only restore to the last full backup. Maybe that is fine by your SLA. If it is and you have no desire to restore to a point in time, switch to simple. Your log file will now truncate (see below) on certain intervals.</p>
<p>4.) While you are adding that space or setting up your backup look at your growth ratio? Is it the default 10% for a transaction log? How large is your log file? Is 10% really the right amount you want to see it growing by? On that same note has your log file grown a lot larger than it need be because of poor management? Perhaps once you do your first T-Log backup, you should look at setting a reasonable size knowing that it will be truncated on a regular basis. If that is considerably smaller than where you are, maybe one last shrink of the log file is warranted. (Don&#8217;t shrink the database! Just the file. Here sis a good reference on <a href="http://msdn.microsoft.com/en-us/library/ms189493(SQL.90).aspx">DBCC SHRINKFILE</a> so you can see how to just shrink that one file).</p>
<p><strong>What is the Difference Between Truncate and Shrink?</strong></p>
<p>A lot of people get confused. They have truncated their log file yet they still have no free space and the file hasn&#8217;t reduced it&#8217;s footprint at all. This is because a truncation does nothing to the physical size of the allocated file on the OS. A shrink operation shrinks space from a file and a truncate essentially frees up the used space within that file.</p>
<p>This is why a shrink on a log file that is using all of the space won&#8217;t budge the size and why a truncate of a log file won&#8217;t budge the size. A truncate would have to happen first to make room available for the shrink to work. I do NOT suggest this, however. Another great post about why not to srink your log file is done by Tibor Karaszi <a href="http://www.karaszi.com/SQLServer/info_dont_shrink.asp">here</a>.</p>
<p><strong>Someone on the newsgroups told me to&#8230;<br />
</strong></p>
<p>A large portion of the folks responding to questions in the newsgroups and forums are giving great advice. They are taking their own time to help guide you down the right path. That being said, there are at times pieces of bad advice that hopefully aren&#8217;t followed in production. I talked about this practice of doing before trying in an earlier <a href="http://www.straightpathsql.com/blog/2009/1/18/empirical-evidence.html">post</a>. Gail Shaw also recently posted about this same topic on her <a href="http://sqlinthewild.co.za/index.php/2009/01/22/bad-advice/">blog.</a></p>
<p>Judging by some of the searches I have seen, it looks like people are getting some bad advice but at least trying to verify it through google (I would hope the next step is understanding the pieces involved and a test in dev/test/sandbox). A couple examples of that advice and my responses:</p>
<p><em>Stop SQL, or deatch the DB and delete the log file &#8211; </em>No. This will most assuredly remove any transactions in your log, can leave your DB in a transactionally inconsistent state meaning a potential for loss of data or worse. If you are stuck without space for further growths, try the log backup, if you must do one last truncate and shrink after making a full backup and heeding the warning to get a real recovery strategy in place.</p>
<p><em>Setup a nightly job to issue BACKUP LOG WITH TRUNCATE_ONLY &#8211; </em>I hopefully don&#8217;t need to say much more about this one that I didn&#8217;t say here or in my previous shrink post.</p>
<p>If any of this isn&#8217;t clear or you are stuck with an uncomfortable situation, send me an e-mail or leave a comment, recovery is important and I hate to see people messing this up because of bad advice or misunderstanding. I won&#8217;t charge you for any time for quick help with something like this.</p>
<p><span style="text-decoration: line-through;">This should be my last post on shrinking <img src='http://www.straightpathsql.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </span></p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/01/shrinking-is-a-popular-topic/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DBA Questions To Ask A Vendor</title>
		<link>http://www.straightpathsql.com/archives/2009/01/dba-questions-to-ask-a-vendor/</link>
		<comments>http://www.straightpathsql.com/archives/2009/01/dba-questions-to-ask-a-vendor/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 01:46:57 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicate]]></category>
		<category><![CDATA[DBA Qualities]]></category>
		<category><![CDATA[Pet Peeves]]></category>
		<category><![CDATA[Vendor Interview]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=22</guid>
		<description><![CDATA[

A while back a conversation on Jonathan Kehayias&#8217; former blog (he has moved) gave me an idea for this post. 
Once you have been a DBA for any length of time, you will encounter the situation of a new vendor coming in with software that has a database back end. Wherever I am working or [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F01%252Fdba-questions-to-ask-a-vendor%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22DBA%20Questions%20To%20Ask%20A%20Vendor%20%23%22%20%7D);"></div>
<p style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">A while back a conversation on <a href="http://jmkehayias.blogspot.com/2009/01/time-to-rant-applications-and.html">Jonathan Kehayias&#8217; former blog</a> (he has <a href="http://sqlblog.com/blogs/jonathan_kehayias/">moved</a>) gave me an idea for this post. </span></p>
<p style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Once you have been a DBA for any length of time, you will encounter the situation of a new vendor coming in with software that has a database back end. Wherever I am working or helping, I like to interject the idea of &#8220;DBA Input&#8221; as early into the process as possible and I go through a discussion with them.</span></p>
<p style="line-height: normal;"><strong><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The Interview</span></strong></p>
<p style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">I think of this as a job interview. You want an ideal candidate and you want the candidate to know about your expectations.</span></p>
<p style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">These are the questions I ask in initial conference calls or meetings with technical pre-sales or installation staff. They guide other conversations and help me better support the internal customer requesting this application.</span></p>
<ol type="1">
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Which version(s) of SQL Server do you support?</span>
<ol type="1">
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">How do you test service packs/CUs? </span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">How many customers do you have on the setup we are planning to go with?</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">How quickly do you normally certify for a newer version or service pack?</span></li>
</ol>
</li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Based on what you know about our expected usage can you tell me:</span>
<ol type="1">
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">What should I expect to see for performance characteristics? (I/O, Mem, CPU utilization)</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Will your app live in a shared instance that looks like x </span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">What sort of performance issues have your support folks commonly dealt with in similar environments?</span></li>
</ol>
</li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Does your application support a named instance? (sounds stupid but it isn&#8217;t.. ask any question)</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Does your application support and is it certified to communicate with a SQL Cluster? (again may sound stupid when you think about clustering and SQL with an instance only active on one node anyway)</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Can you explain your architecture? Looking for discussion about:</span>
<ol type="1">
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Data Access methods &#8211; are they developing with performance in mind, are they using modern technology&#8230; Will you get hammered with a bunch of sp_cursorfetch statements?</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">You may be &#8220;just&#8221; the DBA but we all know the DB gets blamed first <img src='http://www.straightpathsql.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Understand how they connect, if you are making the back end Highly Available, how is everything above the DB going to be HA?</span></li>
</ol>
</li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Can you share with me all of the recommended best practices your installation and support folks suggest for database maintenance?</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For an application of this category and usage, here is our general backup/recovery strategy. Do you have any issues with that? (Are there distributed transactions that need to have coordinated backup? Do they have issues with backup methods you use? Does the DB backup need to coincide with some XML file someplace?) </span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Does your support have any processes that involve recycling the SQL instance? If so, is this mandatory? Why?</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Do you have any reference sites we can talk to? If the app is large enough, try and get a customer of similar scenario. Talk to their IT staff, talk to a DBA there. Maybe overboard but can be helpful if conditions warrant.</span></li>
<li style="line-height: normal;"><strong><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Security!!! </span></strong><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">I saved my <em>favorite</em> for last.</span>
<ol type="1">
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Windows authentication or SQL Authentication?</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">What, if any, fixed server roles do you require? </span>
<ol type="1">
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Is that just for the duration of the installation or the life of the app?</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Why so elevated? What happens if we trim that down? (Presuming they answer with SA or something <img src='http://www.straightpathsql.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</span></li>
</ol>
</li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">How do your users authenticate? (Does each user need a SQL login, do they need to belong to an AD group which has SQL login rights? or is it an app pool with the app handling security with tables in the database?) </span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">What type of access does your support team need? (important if a shared instance or you are a <span style="text-decoration: line-through;">paranoid</span> careful DBA)</span></li>
<li style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Out of curiosity, what database rights do your database user accounts have? (I hate hearing DBO, presuming I haven&#8217;t heard SA&#8230; I LOVE hearing they create a role with the minimum necessary permissions&#8230; Not the end of the world if DBO, only hurts their database but still&#8230;)</span></li>
</ol>
</li>
</ol>
<p style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The list is not always covered verbatim but I bring it with me to help drive a conversation flow and get to the important items that I want to know about. I&#8217;ve been burned by not asking and not getting myself involved. If you pick up nothing else from this post: <strong>get involved as early as possible.</strong></span></p>
<p style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">You&#8217;ll be surprised what you learn. I was working with a building security system once. Got to security and the answer was basically that they normally like to be on their own database server, and they generally use SA with a blank password. I was floored&#8230; I said to the install team from the vendor, &#8220;you guys are in security?!?&#8221; We went with them but I worked with them to find out what permissions they truly needed, gave them those, backed them down even further after DB was created and they live happily to this day as far as I know.</span></p>
<p style="line-height: normal;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">What do you ask? How have you been burned by not asking? What&#8217;s your funniest/saddest experience with vendor software?</span></p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/01/dba-questions-to-ask-a-vendor/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Old Dog? New Tricks..</title>
		<link>http://www.straightpathsql.com/archives/2009/01/old-dog-new-tricks/</link>
		<comments>http://www.straightpathsql.com/archives/2009/01/old-dog-new-tricks/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 02:04:11 +0000</pubDate>
		<dc:creator>Mike Walsh</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://straightpathsql.mikewalshonline.com/?p=18</guid>
		<description><![CDATA[

Reading a blog this week, I learned quite a few new tips and tricks about SQL Server Management Studio. Incremental Serach (No annoying search window pop-up and searches as you type), replace within files from SSMS!!, Block Selects and Moves for the T-SQL Code formatting OCDers (like me). Check it out and add Aaron to [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.straightpathsql.com%252Farchives%252F2009%252F01%252Fold-dog-new-tricks%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Old%20Dog%3F%20New%20Tricks..%20%23%22%20%7D);"></div>
<p>Reading a blog this week, I learned quite a few new tips and tricks about SQL Server Management Studio. Incremental Serach (No annoying search window pop-up and searches as you type), replace within files from SSMS!!, Block Selects and Moves for the T-SQL Code formatting OCDers (like me). Check it out and add Aaron to your blog list. Excellent material. <a title="http://thehobt.blogspot.com/2009/01/lesser-known-features-of-sql-server_08.html" href="http://thehobt.blogspot.com/2009/01/lesser-known-features-of-sql-server_08.html">http://thehobt.blogspot.com/2009/01/lesser-known-features-of-sql-server_08.html</a></p>

<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.straightpathsql.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.straightpathsql.com/archives/2009/01/old-dog-new-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
