<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The Lone DBA</title>
	<atom:link href="http://thelonedba.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://thelonedba.wordpress.com</link>
	<description>SQL Server odds and ends</description>
	<lastBuildDate>Sat, 08 Jun 2013 18:49:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='thelonedba.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The Lone DBA</title>
		<link>http://thelonedba.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://thelonedba.wordpress.com/osd.xml" title="The Lone DBA" />
	<atom:link rel='hub' href='http://thelonedba.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Book Review &#8211; &#8220;SQL Server Transaction Log Management&#8221; by Tony Davis and Gail Shaw</title>
		<link>http://thelonedba.wordpress.com/2013/05/21/book-review-sql-server-transaction-log-management-by-tony-davis-and-gail-shaw/</link>
		<comments>http://thelonedba.wordpress.com/2013/05/21/book-review-sql-server-transaction-log-management-by-tony-davis-and-gail-shaw/#comments</comments>
		<pubDate>Tue, 21 May 2013 19:13:58 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[Maintenance Plans]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[red-gate]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[Transaction Log]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=980</guid>
		<description><![CDATA[A couple of questions and comments on the Ask.SQLServerCentral.com website have shown some misunderstanding about the use of SQL Server&#8217;s Transaction Log files. At about the same time, I was approached by Red Gate as part of their Friends programme &#8230; <a href="http://thelonedba.wordpress.com/2013/05/21/book-review-sql-server-transaction-log-management-by-tony-davis-and-gail-shaw/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=980&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A couple of questions and comments on the <a href="http://ask.sqlservercentral.com" title="Ask SQL Server Central" target="_blank">Ask.SQLServerCentral.com</a> website have shown some misunderstanding about the use of SQL Server&#8217;s Transaction Log files.  At about the same time, I was approached by Red Gate as part of their Friends programme to review their book &#8220;<a href="http://www.red-gate.com/community/books/sql-server-transaction-log-management" title="SQL Server Transaction Log Management book on Red Gate.com" target="_blank">SQL Server Transaction Log Management</a>&#8220;.  Nice timing!  Most of Red Gate&#8217;s books on SQL Server are available as free PDFs; unfortunately, this isn&#8217;t (yet) the case for this book&#8230;</p>
<p>And so, on with the review.</p>
<h2>Chapter 1: Meet the Transaction Log</h2>
<p>This first chapter covers a lot of ground &#8211; including brief mention of the important point that, although it is possible to have multiple physical log files, because SQL Server writes them sequentially rather than a page here and a page there, like it does with the data files,</p>
<blockquote><p>&#8230;there is no advantage to having multiple files from the perspective of log throughput.</p></blockquote>
<p>That point is made so early on, in fact, that it&#8217;s possible that the average skim-reader might miss it.  And that&#8217;s a key factor with this book &#8211; there&#8217;s a lot of information in a relatively short (200-ish) page book, and this first chapter makes use of forward references.  So go carefully.</p>
<p>Chapter 1 also covers how the transaction log is used by SQL Server (remember, it&#8217;s not just for data manipulation changes, but for data definition changes, such as index rebuilds), how to back it up &amp; restore it, how to manage the size of the log file and how SQL Server organizes the log with VLFs.</p>
<h2>Chapter 2: Some, But Not Too Much, Log Internals</h2>
<p>Not too much?  Let&#8217;s see&#8230;  here we have discussion on VLFs (Virtual Log Files, the sections of your TLog file), LSNs (Logical Sequence Numbers), and how your transaction log backup uses these to backup the appropriate sections of the transaction log.</p>
<p>There&#8217;s a useful script that walks you through how these concepts hang together, making (as expected) liberal use of <code>DBCC&nbsp;Loginfo</code> to show the VLF information.  This then leads onto a description of Log Fragmentation caused by inappropriate autogrowth settings.</p>
<h2>Chapter 3: Transaction Logs, Backup and Recovery</h2>
<p>At last!  Discussion of backup/recovery models and how they affect the transaction log, including a reminder that a &#8220;full&#8221; backup doesn&#8217;t include the information from the logs&#8230;</p>
<p>It&#8217;s nice to see that, as well as pimping their own books and tools, they also discuss <a href="http://ola.hallengren.com" title="Ola Hallengren's SQL Server Maintenance Scripts" target="_blank">Ola Hallengren&#8217;s most excellent SQL Server maintenance scripts</a> &#8211; and fail to mention that Ola has written these scripts in such a way that they can take backups using some <a href="http://ola.hallengren.com/sql-server-backup.html#BackupSoftware" title="Backup Software supported by Ola Hallengren's SQL Server Maintenance tools" target="_blank">third-party backup tools</a> such as <a href="http://www.red-gate.com/products/dba/sql-backup/" title="Red Gate's SQL Backup" target="_blank">Red Gate&#8217;s SQL Backup</a>.  Another good thing about Ola&#8217;s scripts?  They&#8217;re free.</p>
<h2>Chapter 4: Managing the Log in SIMPLE Recovery Model</h2>
<p>A very short chapter!  Just remember, a database not in SIMPLE recovery is treated as such until the first FULL database backup is taken.  Or, to look at it another way, you can&#8217;t do T-Log backups until a FULL backup has been made.</p>
<h2>Chapter 5: Managing the Log in FULL Recovery Model</h2>
<p>So this is the big one.  What gets logged, minimally logged operations, Log backups (including tail log backups).  And on to restore and recovery options, including point-in-time restores.  Lots of scripts to show the various options.</p>
<h2>Chapter 6: Managing the Log in BULK LOGGED Recovery Model</h2>
<p>Amusingly (to my mind) this chapter is longer than the FULL chapter that went before&#8230;  Which is entirely appropriate.</p>
<p>The chapter is a discussion of the <code>BULK LOGGED</code> recovery model, its limitations, the risks associated with it, and a summary the situations where it can be advantageous &#8211; a useful overview.  There are comparisons between FULL and BULK LOGGED database logs, neatly scripted and explained.  The Advantages / Disadvantages are further explained particularly with reference to crash/restart recovery and database restores.  The chapter also contains a section on the best practices for use of the BULK_LOGGED recovery model (complete with a useful scenario to see how it works).</p>
<h2>Chapter 7: Dealing with Excessive Log Growth</h2>
<p>This is the one that crops up regularly on the Q&amp;A sites such as <a href="http://ask.sqlservercentral.com" title="Ask SQL Server Central" target="_blank">Ask.SQLServerCentral</a>.  As well as looking at how to deal with the problem, there&#8217;s a discussion on how to size the log file in the first place &#8211; this may be something that needs to be revisited as your database usage changes.</p>
<p>There&#8217;s a major section on &#8220;Runaway Transaction Logs&#8221;, looking at several of the possible causes and how to mitigate these problems, such as switching to BULK_LOGGED mode when doing Index rebuilds.  There&#8217;s also a discussion on how to investigate expensive / log-heavy transactions, complete with handy scripts to help identify these.</p>
<blockquote><p>&#8230;the most common cause of a full or large transaction log, namely operating a database in the FULL recovery model (or less common, the BULK_LOGGED recovery model), without taking transaction log backups</p></blockquote>
<p><small><small>Ah, if only I had a penny for every time I&#8217;ve seen that problem in the Q&amp;A forums&#8230;  Wait.  I still wouldn&#8217;t have a fiver.</small></small></p>
<p>And why does this happen?  As discussed in the book, because (generally), the <code>model</code> database (that acts as a template for all databases created on the server) is, by default, in FULL recovery model, and the inexperienced DBA hasn&#8217;t realised that the FULL backup only deals with data, and not transaction logs&#8230;</p>
<p>Other transactional options (long-running / active transactions, uncommitted transactions) are discussed at length, and there&#8217;s shorter discussion of some of the other possible causes (replication, active backups, mirroring), before moving into how to handle a full TLog that shows the wrong ways (some of which hadn&#8217;t occurred to me) &amp; the right way, or &#8220;Proper Log Management&#8221;.</p>
<h2>Chapter 8: Optimizing Log Throughput</h2>
<p>This chapter concentrates on the architecture of your system to make sure that your transaction logs are running nice and quickly, and a part of that is making sure that the size and growth settings are properly configured.  So there&#8217;s a discussion on this, on VLFs, Instant File Initialisation (tip: TLog files don&#8217;t do IFI), sizing, recovery / undo timings etc.</p>
<h2>Chapter 9: Monitoring the Transaction Log</h2>
<p>A quick look at keeping an eye on your T-Log using monitoring tools usch as PerfMon or <a href="http://www.red-gate.com/products/dba/sql-monitor/" title="Red Gate's SQL Monitor" target="_blank">Red Gate&#8217;s SQL Monitor</a>, DMOs, T-SQL &amp; PoSh scripts.</p>
<h1>That&#8217;s all, folks</h1>
<p>A lot of information is presented in this compact book, and there are plenty of scripts, and links to further articles to read for deeper knowledge.  </p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/backup/'>Backup</a>, <a href='http://thelonedba.wordpress.com/tag/book-review/'>Book Review</a>, <a href='http://thelonedba.wordpress.com/tag/books/'>Books</a>, <a href='http://thelonedba.wordpress.com/tag/disaster-recovery/'>Disaster Recovery</a>, <a href='http://thelonedba.wordpress.com/tag/maintenance/'>Maintenance</a>, <a href='http://thelonedba.wordpress.com/tag/maintenance-plans/'>Maintenance Plans</a>, <a href='http://thelonedba.wordpress.com/tag/management/'>Management</a>, <a href='http://thelonedba.wordpress.com/tag/performance/'>Performance</a>, <a href='http://thelonedba.wordpress.com/tag/red-gate/'>red-gate</a>, <a href='http://thelonedba.wordpress.com/tag/restore/'>Restore</a>, <a href='http://thelonedba.wordpress.com/tag/transaction-log/'>Transaction Log</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=980&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/05/21/book-review-sql-server-transaction-log-management-by-tony-davis-and-gail-shaw/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>
	</item>
		<item>
		<title>RESTORE failure &#8211; error 3633&#8230; &#8216;DeleteTree&#8217; &#8230; &#8216;fulltext.cpp&#8217;</title>
		<link>http://thelonedba.wordpress.com/2013/04/05/restore-failure-error-3633-deletetree-fulltext-cpp/</link>
		<comments>http://thelonedba.wordpress.com/2013/04/05/restore-failure-error-3633-deletetree-fulltext-cpp/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 11:29:54 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Error Logs]]></category>
		<category><![CDATA[Full Text Indexes]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[SSMS]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=970</guid>
		<description><![CDATA[Here&#8217;s a little bit of the pain that I&#8217;m facing today. I was trying a SQL Server RESTORE (using Quest&#8217;s Litespeed for SQL Server) of one of our databases, one that has a fulltext index. The restore was consistently failing &#8230; <a href="http://thelonedba.wordpress.com/2013/04/05/restore-failure-error-3633-deletetree-fulltext-cpp/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=970&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a little bit of the pain that I&#8217;m facing today.</p>
<p>I was trying a SQL Server RESTORE (using <a title="Quest Litespeed for SQL Server" href="www.quest.com/litespeed-for-sql-server/" target="_blank">Quest&#8217;s Litespeed for SQL Server</a>) of one of our databases, one that has a fulltext index. The restore was consistently failing with the following error message:</p>
<p><code><span style="color:red;">Msg 62301, Level 16, State 1, Line 0<br />
SQL Server has returned a failure message to LiteSpeed for SQL Server which has prevented the operation from succeeding.<br />
The following message is not a LiteSpeed for SQL Server message. Please refer to SQL Server books online or Microsoft technical support for a solution:<br />
RESTORE DATABASE is terminating abnormally.<br />
The file "sysft_CallLog_FullText" failed to initialize correctly. Examine the error logs for more details.</span></code></p>
<p>I had a look through the <a title="EventVwr documentation at TechNet" href="http://technet.microsoft.com/en-us/library/cc766042.aspx" target="_blank">EventLogs</a>, as suggested, and found this in the Application Log at the right time:</p>
<p><code><span style="color:red;">2013-04-04 08:57:45.85 spid53 Error: 3633, Severity: 16, State: 1.<br />
2013-04-04 08:57:45.85 spid53 The operating system returned the error '32(error not found)' while attempting 'DeleteTree' on 'K:\MSSQL\FTData\CallLog_FullText\MssearchCatalogDir' at 'fulltext.cpp'(1747).</span></code></p>
<p>Running <a title="Sysinternals landing page" href="http://technet.microsoft.com/en-us/sysinternals/default" target="_blank">Sysinternals</a> <a title="SysInternal's HANDLE - documentation" href="http://technet.microsoft.com/en-us/sysinternals/bb896655" target="_blank">HANDLE</a> to see what else was poking round that directory that would prevent it from being deleted gives the following:</p>
<p><code>Handle v3.5<br />
Copyright (C) 1997-2012 Mark Russinovich<br />
Sysinternals - <a href="http://www.sysinternals.com" rel="nofollow">http://www.sysinternals.com</a><br />
pdrai.exe pid: 9208 type: File 3C8: K:\MSSQL\FTData\CallLog_FullText\MssearchCatalogDir</code></p>
<p><code>pdrai.exe</code>? That&#8217;s a new one on me. Turns out that the support boys have installed PureDisk (from Symantec&#8217;s NetBackup division or acquisition &#8211; it&#8217;s easy to lose track), and the pdrai.exe program is the backup agent.</p>
<p>Now to have a word with them about this. There&#8217;s no way it should require a handle to be held for 6 hours (or more) to backup a mere 4MB of data. I may be some time.  I&#8217;ll let you know if I find out how to prevent this sort of thing.</p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/disaster-recovery/'>Disaster Recovery</a>, <a href='http://thelonedba.wordpress.com/tag/error-logs/'>Error Logs</a>, <a href='http://thelonedba.wordpress.com/tag/full-text-indexes/'>Full Text Indexes</a>, <a href='http://thelonedba.wordpress.com/tag/restore/'>Restore</a>, <a href='http://thelonedba.wordpress.com/tag/ssms/'>SSMS</a>, <a href='http://thelonedba.wordpress.com/tag/troubleshooting/'>Troubleshooting</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=970&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/04/05/restore-failure-error-3633-deletetree-fulltext-cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>
	</item>
		<item>
		<title>VirtualBox, Windows Server 2012, BSODs</title>
		<link>http://thelonedba.wordpress.com/2013/03/14/virtualbox-windows-server-2012-bsods/</link>
		<comments>http://thelonedba.wordpress.com/2013/03/14/virtualbox-windows-server-2012-bsods/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 19:31:13 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[BSOD]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[Windows 2012]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=966</guid>
		<description><![CDATA[Those of you who are following me on Twitter may have noticed I&#8217;ve had a few BSODs (Blue Screens Of Death) during my recent fiddlings with Windows Server 2012 (both Core &#38; GUI versions) under VirtualBox. Kevin Chant (@kevchant) mentioned &#8230; <a href="http://thelonedba.wordpress.com/2013/03/14/virtualbox-windows-server-2012-bsods/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=966&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Those of you who are following me on Twitter may have noticed I&#8217;ve had a few BSODs (Blue Screens Of Death) during my recent fiddlings with Windows Server 2012 (both Core &amp; GUI versions) under VirtualBox.</p>
<p>Kevin Chant (<a href="http://www.twitter.com/KevChant" title="Kev Chant on Twitter" target="_blank">@kevchant</a>) mentioned that he had had problems with the CTP version of Windows 2012 running with only one virtual processor (vCPU).  I&#8217;d been using VirtualBox&#8217;s default settings &#8211; but hadn&#8217;t noticed that these virtual machines were, by default, only set up to use one vCPU.</p>
<p>I don&#8217;t know about you, but I&#8217;m always a bit suspicious about working from a template that has BSOD&#8217;d several times during the initial install &amp; patch routine, so I scragged them and started over.  This time I was careful to go into the appropriate part of the Settings dialog:<br />
<a href="http://thelonedba.files.wordpress.com/2013/03/virtualbox-cpus.png"><img src="http://thelonedba.files.wordpress.com/2013/03/virtualbox-cpus.png?w=640&#038;h=478" alt="VirtualBox CPUs" width="640" height="478" class="aligncenter size-full wp-image-967" /></a><br />
and set that to use 2 CPUs instead of the default 1.  Seems to work; mind you, my laptop isn&#8217;t as happy with having multiple VMs running.  Time for an upgrade?</p>
<p>I&#8217;ve now successfully built template VMs for Windows 2012 Server Standard Core &amp; GUI versions with 2 vCPUs, and these have so far been stable.  Yay.  Onwards and upwards!</p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/bsod/'>BSOD</a>, <a href='http://thelonedba.wordpress.com/tag/virtualbox/'>VirtualBox</a>, <a href='http://thelonedba.wordpress.com/tag/windows-2012/'>Windows 2012</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=966&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/03/14/virtualbox-windows-server-2012-bsods/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>

		<media:content url="http://thelonedba.files.wordpress.com/2013/03/virtualbox-cpus.png" medium="image">
			<media:title type="html">VirtualBox CPUs</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows Server 2012 Core &#8211; Server Configuration, Add/Remove Features, SysPrep</title>
		<link>http://thelonedba.wordpress.com/2013/03/14/windows-server-2012-core-server-configuration-addremove-features-sysprep/</link>
		<comments>http://thelonedba.wordpress.com/2013/03/14/windows-server-2012-core-server-configuration-addremove-features-sysprep/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 14:46:55 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Windows 2012]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=963</guid>
		<description><![CDATA[Recently, I started building a Windows 2008 R2 / SQL 2008 R2 environment as per Jonathan Kehayias&#8217;s (blog&#124;@SQLPoolBoy) series of articles on &#8220;Building A Free Test Environment&#8220;, I found myself wondering about doing similar in Windows 2012, specifically in Windows &#8230; <a href="http://thelonedba.wordpress.com/2013/03/14/windows-server-2012-core-server-configuration-addremove-features-sysprep/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=963&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently, I started building a Windows 2008 R2 / SQL 2008 R2 environment as per Jonathan Kehayias&#8217;s (<a title="Jonathan Kehayias's blog" href="http://www.sqlskills.com/blogs/jonathan/" target="_blank">blog</a>|<a title="SQLPoolBoy on Twitter" href="http://www.twitter.com/SQLPoolBoy" target="_blank">@SQLPoolBoy</a>) series of articles on &#8220;<a title="Jonathan's blogs on Building a Test Environment" href="http://www.sqlskills.com/blogs/jonathan/category/building-a-test-environment/" target="_blank">Building A Free Test Environment</a>&#8220;, I found myself wondering about doing similar in Windows 2012, specifically in Windows 2012 Core.</p>
<p>So, I started up a new VM and installed Windows 2012 Server Standard Core.  And I was, as expected, greeted by a *gasp* command line interface. Yes, another reason to start learning PowerShell!   When building a template along the lines of those mentioned by Jonathan in the first post of his series, there are a few things to do:</p>
<h2>Server Configuration in Windows Server Core</h2>
<p>Handy tip: there&#8217;s a utility for Server Configuration called, erm, &#8220;<a title="SConfig documentation" href="http://technet.microsoft.com/en-us/library/jj647766.aspx" target="_blank">sconfig</a>&#8220;. Remember that command &#8211; &#8220;sconfig&#8221;. It&#8217;s very helpful. However, it doesn&#8217;t do everything for you.</p>
<h2>Feature Management in Windows Server Core</h2>
<p>See the <a title="Technet - Installing Server Roles and Features on Windows Server Core" href="http://technet.microsoft.com/en-gb/library/jj574158.aspx" target="_blank">TechNet pages on Installing Windows Server 2012 Core</a> for full information; the useful bits are:</p>
<ul>
<li><code>get-windowsfeature</code> &#8211; does what it says on the tin. Gives you a tree-like list of the windows features, with a [x] next to any that are installed:<br />
<a href="http://thelonedba.files.wordpress.com/2013/03/posh-get-windowsfeature.png"><img src="http://thelonedba.files.wordpress.com/2013/03/posh-get-windowsfeature.png?w=640" alt="PoSh Get-WindowsFeature"   class="aligncenter size-full wp-image-964" /></a><br />
See that &#8220;Name&#8221; column? You&#8217;ll need that for adding and removing features.</li>
<li><code>install-windowsfeature featurename</code> &#8211; installs the feature named &#8220;featurename&#8221; and subfeatures.  In this case, I&#8217;m installing featurenames &#8220;Multipath-IO&#8221;, &#8220;Failover-Clustering&#8221; and &#8220;NET-Framework-Features&#8221;</li>
<li><code>uninstall-windowsfeature featurename</code> &#8211; uninstalls the feature named &#8220;featurename&#8221; and sub-features.</li>
</ul>
<p>Oh, and that reminds me:</p>
<h2>Help with PowerShell</h2>
<p>Need more help with PowerShell commandlets? Try running <code>update-help</code> &#8211; downloads a whole slew of updates and more detailed help files.</p>
<h2>SysPrep</h2>
<p>The SysPrep utility is in (by default) C:\Windows\System32\SysPrep.  </p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/installation/'>Installation</a>, <a href='http://thelonedba.wordpress.com/tag/powershell/'>PowerShell</a>, <a href='http://thelonedba.wordpress.com/tag/windows-2012/'>Windows 2012</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=963&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/03/14/windows-server-2012-core-server-configuration-addremove-features-sysprep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>

		<media:content url="http://thelonedba.files.wordpress.com/2013/03/posh-get-windowsfeature.png" medium="image">
			<media:title type="html">PoSh Get-WindowsFeature</media:title>
		</media:content>
	</item>
		<item>
		<title>Wrangling Conference Speakers</title>
		<link>http://thelonedba.wordpress.com/2013/03/12/wrangling-conference-speakers/</link>
		<comments>http://thelonedba.wordpress.com/2013/03/12/wrangling-conference-speakers/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 10:16:30 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[SQLSaturday]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=935</guid>
		<description><![CDATA[No, not PA systems, but people. As you may recall, I was the speaker liaison for SQL Saturday 194, being hosted by those lovely SQL South West people. Things went pretty smoothly; however, I do have a few observations on &#8230; <a href="http://thelonedba.wordpress.com/2013/03/12/wrangling-conference-speakers/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=935&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>No, not PA systems, but people.</p>
<p>As you may recall, I was the speaker liaison for SQL Saturday 194, being hosted by those lovely SQL South West people.  Things went pretty smoothly; however, I do have a few observations on things that need to be done to make the process smoother for the next time.</p>
<h3>Conference PowerPoint Template, Logos etc</h3>
<p>Do you have a standard PowerPoint Template?  What about a conference Logo?  What about a standard slide full of sponsor information, or Health &amp; Safety-esque Housekeeping?  If so, these should be made available early on, ideally as part of the notes that you send to the speakers to confirm that they have been successful in applying to speak at your conference.  Or at least on a &#8220;resources&#8221; page that&#8217;s accessible to all speakers.</p>
<h3>PowerPoint slides and other documents</h3>
<p>Do you have an upload site for these?  Do you even have a requirement for this?</p>
<h3>Techie bits</h3>
<p>It helps to know well in advance what the conference venue provides in terms of visual aids &#8211; ie Projectors.  What video inputs / outputs / cables are provided?  Again, if this is available early, then speakers can either ask for something special, or know what they need to bring in order to successfully connect.  Ditto for power supplies for those coming from overseas.</p>
<h3>T-Shirts</h3>
<p>When asking &#8220;what size T-Shirt&#8221;, you never know what people are going to say.  There&#8217;s one chap here who said &#8220;XL&#8221; &#8211; and he&#8217;s half the size I am!  It&#8217;s an idea to send out, with the email requesting T-Shirt sizes, the sizing information from the supplier, so your delegates know what that supplier&#8217;s version of XL is supposed to be.</p>
<h3>Hotel, Accommodation, Travel</h3>
<p>Again, provide these details up front.  Are you handling the hotel bookings for the speakers, or are they?  If it&#8217;s up to the speakers, and there are special discount codes, provide these up front and in big letters so they don&#8217;t get lost?  You&#8217;ll also need to provide details of public transport and local car parks.</p>
<h3>Email format</h3>
<p>Keep emails going to presenters well organised and clearly laid out.  Don&#8217;t just send a slew of text &#8211; format it properly, use headings, make it clear what information is required back from them and by when, and what they need to do for themselves.  I had one speaker email me in a panic because he couldn&#8217;t get a room at the hotel (he&#8217;d failed to quote the booking reference number); I had to chase a couple of others because they&#8217;d failed to notice something requiring their response.</p>
<h2>On the day</h2>
<p>Count them in.</p>
<p>Have an area for them to relax and prepare away from the throng of delegates.  Make sure that this area has plenty of power, space to work, and a separate supply of tea &amp; coffee.</p>
<p>Make sure that they have everything they need, know which room they&#8217;ll be speaking in.  Have someone assigned to the room to deal with problems such as Audio/Visual, lack of pencils etc.  Have that person also responsible for timekeeping in the room and for making sure that the room is kept tidy at the end of each session.</p>
<h3>Disaster Planning</h3>
<p>So, everything is prepared.  However.  What do you do about the speaker who falls ill a couple of days before they are due to present?  Or, worse, the one who can&#8217;t get there on the day?  We were fortunate, in that we could make use of our other speakers to fill in any gaps.  And we were even more fortunate in finding that our guys were more than happy to do that if required.</p>
<p>&nbsp;</p>
<h3>Disclaimer</h3>
<p>This is an on-going document, but is being put out quickly to help others.  There are bound to be things I&#8217;ve forgotten to put in, and I&#8217;ll add them as &amp; when I get round to it.</p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/sqlsaturday/'>SQLSaturday</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=935&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/03/12/wrangling-conference-speakers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>
	</item>
		<item>
		<title>Restoring into a different environment?  Security problem?  Orphaned Users</title>
		<link>http://thelonedba.wordpress.com/2013/02/22/restoring-into-a-different-environment-security-problem-orphaned-users/</link>
		<comments>http://thelonedba.wordpress.com/2013/02/22/restoring-into-a-different-environment-security-problem-orphaned-users/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 19:19:21 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=958</guid>
		<description><![CDATA[Oh, man, it&#8217;s been a fun ten days or so. Mostly not of my doing, thankfully. However, one thing that was definitely down to me was a minor little hiccup with SQL Server security. Y&#8217;see, when you RESTORE a database &#8230; <a href="http://thelonedba.wordpress.com/2013/02/22/restoring-into-a-different-environment-security-problem-orphaned-users/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=958&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Oh, man, it&#8217;s been a fun ten days or so. Mostly not of my doing, thankfully. However, one thing that was definitely down to me was a minor little hiccup with SQL Server security.</p>
<p>Y&#8217;see, when you RESTORE a database into an environment other than that from which you created the BACKUP, chances are you&#8217;re going to have some security issues. In this case, we found that the UAT version of our applications was throwing the following error message:</p>
<blockquote><p><code>Cannot open database "foo" requested by the login. The login failed. Login failed for user 'bar'.</code></p></blockquote>
<p>This is down to the way our non-production environments had been built &#8211; in a hurry, and without doing the SQL Logins necessarily in The Right Way.</p>
<p>So now, every time I rebuild this environment from Production (quarterly), I have to remember to go through checking for &#8220;orphaned users&#8221; &#8211; users which exist in the SQL Server database I&#8217;ve just restored, but not necessarily in the server itself. Or (more likely in my current situation) do exist at the server level, but with the wrong SID (security identifier &#8211; a nasty-looking string of hex garbage).</p>
<p><small><small>For extra fun, I was also fighting against inconsistent collations. A pox on non-existent standards. (Is that even possible?)</small></small></p>
<h2>Identifying Orphaned Users</h2>
<p>This is obviously enough of a routine problem that MS has kindly provided a stored procedure to do the job for us. Yay.</p>
<p><a href="http://msdn.microsoft.com/en-gb/library/ms174378.aspx" target="_blank"><code>sp_change_users_login</code></a> is your friend. Run this, with the @Action parameter (first) set to &#8216;report&#8217;, and you get a list of user IDs that exist within the current database but don&#8217;t exist with the same SID. Hurrah.</p>
<h2>Capturing that output</h2>
<pre>DECLARE @OrphanedUsers TABLE (UserName sysname, UserSID varbinary(85))
INSERT INTO @OrphanedUsers
EXEC sp_change_users_login 'report'</pre>
<h2>Processing the list</h2>
<p>Given that, in my case, I&#8217;m only interested in fixing those users who already exist in my environment, I can identify them by:</p>
<pre>SELECT * FROM @OrphanedUsers
WHERE UserName IN (
    SELECT name FROM master.dbo.syslogins
    )</pre>
<h2>Fixing one orphaned user</h2>
<p>The <code>sp_change_users_login</code> SP takes, as one option for the <code>@Action</code> parameter &#8220;<code>Update_One</code>&#8220;. This is what I&#8217;ll use to fix each individual item identified in the table above. However, as there are several users in the database for which I wish to do this, and I&#8217;m lazy and don&#8217;t want to have to type too much, I&#8217;ll do this:</p>
<pre>DECLARE @FixUsers varchar(max)
SELECT @FixUsers = ''
SELECT @FixUsers = @FixUsers + 'exec sp_change_users_login ''Update_one'', ''' + UserName + ''', ''' + UserName + ''' '
FROM @OrphanedUsers
WHERE UserName IN (
    SELECT name FROM master.dbo.syslogins
    )</pre>
<p>That gives me a variable, @FixUsers, that contains the right series of <a href="http://msdn.microsoft.com/en-us/library/ms188332.aspx" target="_blank"><code>EXECUTE</code></a> statements to fix those users that I need to fix. I can then lob this big lot of <code>EXEC</code> statements at an, erm, <code>EXEC</code> statement:</p>
<pre>EXEC (@FixUsers)</pre>
<p>And the job&#8217;s a good &#8216;un.</p>
<h2>Doing this for all databases</h2>
<p>In my case, though, this isn&#8217;t sufficient. I have multiple databases in this environment (30-odd), several of which suffer this embarrassing problem. Rather than go through each DB manually running this script, why not make use of the undocumented (and therefore highly dangerous) <code>sp_MSforeachDB</code> stored procedure? This does what it says on the tin &#8211; runs a command once for each database on the system, substituting the name of the database wherever you&#8217;ve got a question mark (?) in your script.</p>
<p>Given that I&#8217;m therefore having to build up dynamic SQL, the apostrophes can get a little out of hand. However, here&#8217;s the script I ended up writing and running, run through <a title="Red Gate Software" href="http://www.red-gate.com/" target="_blank">Red-Gate</a>&#8216;s &#8220;<a title="Format SQL" href="http://www.format-sql.com/" target="_blank">format-SQL</a>&#8221; site.</p>
<pre>sp_msforeachdb 
'USE [?]
DECLARE @OrphanedUsers TABLE
    (
      UserName SYSNAME ,
      UserSID VARBINARY(85)
    )
INSERT  INTO @OrphanedUsers
        EXEC sp_change_users_Login ''report''
IF EXISTS ( SELECT  *
            FROM    @OrphanedUsers ) 
    BEGIN
        DECLARE @FixMe NVARCHAR(MAX)
        SELECT  @FixMe = ''''
        SELECT  @FixMe = @FixMe + ''
    exec sp_change_users_login ''''update_one'''', '''''' + UserName + '''''' ,
                '''''' + UserName + '''''' ''
        FROM    @OrphanedUsers
        WHERE   UserName IN (
                SELECT  name 
                FROM    master.dbo.syslogins )
        PRINT @FixMe
        --EXEC (@FixMe)
    END
'</pre>
<p>Uncomment the <code>EXEC (@FixMe)</code> line when you&#8217;re ready.</p>
<p>Now, I had <a href="http://msdn.microsoft.com/en-us/library/ms184391.aspx" title="Collations in SQL Server" target="_blank">collation</a> issues, so the WHERE clause of that innermost SELECT statement had to be</p>
<pre>...
        WHERE   UserName COLLATE SQL_Latin1_General_CP1_CI_AS IN (
                SELECT  name COLLATE SQL_Latin1_General_CP1_CI_AS
                FROM    master.dbo.syslogins )
...</pre>
<p>Deep joy.</p>
<h2>Caveat &#8211; sp_MSforeachDB</h2>
<p>Now, a word of warning. <code>sp_MSforeachDB</code> is an undocumented stored procedure from Microsoft. Because it is undocumented, it is unsupported, and may not work, and may be changed (or dropped) at any point. You&#8217;re best off using something else, such as this more <a title="Aaron Bertrand's MSSQLTips page" href="http://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible-spmsforeachdb/" target="_blank">reliable and flexible replacement for sp_MSforeachDB</a> from Aaron Bertrand (<a title="Aaron's blog" href="http://sqlblog.com/blogs/aaron_bertrand/default.aspx" target="_blank">blog</a>|<a title="Aaron on Twitter" href="https://twitter.com/aaronbertrand" target="_blank">twitter</a>).</p>
<h2>Still to do</h2>
<p>Two things outstanding:</p>
<ol>
<li>Document the proper procedure &#8211; if you&#8217;re impatient, just google &#8220;bcp out syslogins sql server&#8221; to get you started</p>
<li>write a version of this for SQL Server 2000 &#8211; yes, I know it&#8217;s ancient, but some of us still have to support it&#8230;
</ol>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=958&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/02/22/restoring-into-a-different-environment-security-problem-orphaned-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL Saturday 194 Exeter Pre-Con &#8211; PowerShell 3.0 for SQL Server Administrators and Developers</title>
		<link>http://thelonedba.wordpress.com/2013/02/21/sql-saturday-194-exeter-pre-con-powershell-3-0-for-sql-server-administrators-and-developers/</link>
		<comments>http://thelonedba.wordpress.com/2013/02/21/sql-saturday-194-exeter-pre-con-powershell-3-0-for-sql-server-administrators-and-developers/#comments</comments>
		<pubDate>Thu, 21 Feb 2013 18:49:44 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQLBits]]></category>
		<category><![CDATA[SQLSaturday]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=956</guid>
		<description><![CDATA[OK, Yes, it&#8217;s (yet) another post pimping a SQL Saturday 194 Exeter Pre-Con session. This time, André Kamman (blog&#124;twitter)and his day of PowerShell. I&#8217;ve seen André perform at a SQLBits conference, where he gave a session &#8220;RoboDBA&#8221; about PowerShell, and &#8230; <a href="http://thelonedba.wordpress.com/2013/02/21/sql-saturday-194-exeter-pre-con-powershell-3-0-for-sql-server-administrators-and-developers/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=956&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sqlsaturday.com/194/eventhome.aspx" target="_blank"><img class="alignright" alt="" src="http://www.sqlsaturday.com/images/sqlsat194_web.png" width="236" height="115" /></a>OK, Yes, it&#8217;s (yet) another post pimping a SQL Saturday 194 Exeter Pre-Con session. This time, André Kamman (<a title="What's left of Andre's blog" href="http://andrekamman.com/" target="_blank">blog</a>|<a title="Andre on Twitter" href="http://www.twitter.com/AndreKamman" target="_blank">twitter</a>)and his <a title="PreCon on Powershell" href="http://sqlsouthwest.co.uk/SQLSaturday_precon.htm#pc4" target="_blank">day of PowerShell</a>.</p>
<p>I&#8217;ve seen André perform at a SQLBits conference, where he gave a session &#8220;RoboDBA&#8221; about PowerShell, and the joys of administering a SQL Server environment of several hundred instances. My entire collection of notes from the session is as follows:</p>
<blockquote>
<h3>Takeaways</h3>
<ul>
<li>Learn PowerShell</li>
<li>Build own environment to test / play, using:
<ul>
<li>HP MicroServer</li>
<li>MS TechNet</li>
<li>vmWare or MS HyperV</li>
</ul>
</li>
<li>Learn to use LogParser</li>
<li>Do as much as possible with scripting rather than GUIs</li>
</ul>
<p>“There are production DBAs who will be outsourced by PowerShell scripts” – AK</p></blockquote>
<p>Helpful.</p>
<p>Fortunately, the video for his session *is* available on the link above.</p>
<p>His views on PowerShell have been instrumental in getting me started with learning it (albeit slowly).  If you&#8217;re starting out, or still learning, you could do worse than start with a day with André!</p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/powershell/'>PowerShell</a>, <a href='http://thelonedba.wordpress.com/tag/programming/'>Programming</a>, <a href='http://thelonedba.wordpress.com/tag/sqlbits/'>SQLBits</a>, <a href='http://thelonedba.wordpress.com/tag/sqlsaturday/'>SQLSaturday</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=956&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/02/21/sql-saturday-194-exeter-pre-con-powershell-3-0-for-sql-server-administrators-and-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>

		<media:content url="http://www.sqlsaturday.com/images/sqlsat194_web.png" medium="image" />
	</item>
		<item>
		<title>SQL Saturday 194 Exeter Pre-Con &#8211; T-SQL and Internals</title>
		<link>http://thelonedba.wordpress.com/2013/02/18/sql-saturday-194-exeter-pre-con-t-sql-and-internals/</link>
		<comments>http://thelonedba.wordpress.com/2013/02/18/sql-saturday-194-exeter-pre-con-t-sql-and-internals/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 12:59:08 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQLBits]]></category>
		<category><![CDATA[SQLSaturday]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=950</guid>
		<description><![CDATA[OK, Yes, it&#8217;s another post pimping a SQL Saturday 194 Exeter Pre-Con session. This time, a quick look at the Two Daves and their session on T-SQL and Internals. Now, I&#8217;ve not had the pleasure of attending a full day &#8230; <a href="http://thelonedba.wordpress.com/2013/02/18/sql-saturday-194-exeter-pre-con-t-sql-and-internals/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=950&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sqlsaturday.com/194/eventhome.aspx" target="_blank"><img class="alignright" alt="" src="http://www.sqlsaturday.com/images/sqlsat194_web.png" width="236" height="115" /></a>OK, Yes, it&#8217;s another post pimping a SQL Saturday 194 Exeter Pre-Con session.  This time, a quick look at the Two Daves and their session on <a href="http://sqlsouthwest.co.uk/SQLSaturday_precon.htm#pc1" target="_blank">T-SQL and Internals</a>.  Now, I&#8217;ve not had the pleasure of attending a full day session from either of the Daves, let alone the two of them working in tandem; however, I have been to various one hour sessions that they have done.</p>
<p>In alphabetical order: </p>
<ul>
<li>Dave Ballantyne (<a href="http://sqlblogcasts.com/blogs/sqlandthelike/" title="Dave B's blog" target="_blank">blog</a>|<a href="http://www.twitter.com/davebally" title="Dave Bally on Twitter" target="_blank">twitter</a>), founder of the Kentish SQL Server UG, doesn&#8217;t make it to my neck of the woods very often.  But I have heard him speak at one of redgate&#8217;s <a href="http://sqlinthecity.red-gate.com/" title="Red Gate's SQL In The City" target="_blank">SQL In The City</a> events, and at the Leeds SQL Server User Group, where I&#8217;ve found him to be a good presenter of not too technically demanding material &#8211; taking you through the thought processes, and showing the results well.</p>
<li>Dave Morrison (blog|<a href="http://www.twitter.com/tsqlninja" title="Dave M on Twitter" target="_blank">twitter</a>) is the scary member of the tag-team &#8211; capable of attempting to go through an enormous amount of information in a very short time.  I&#8217;m just sorry that there were recording / technical difficulties at his <a href="http://www.sqlbits.com" title="SQL Bits home page" target="_blank">SQL Bits</a> session where he takes us &#8220;<a href="http://www.sqlbits.com/Sessions/Event9/Around_the_world_of_query_plan_operators_in_50_minutes" target="_blank">Round The World of SQL Server Query Plan Operators</a>&#8220;.  This was always going to be an ambitious session&#8230;
</li>
</ul>
<p>The pre-con will be six hours of delving under the hood of T-SQL, finding out how to read and understand the Query Plans that SQL Server generates, and how to take those and manipulate your queries into something that runs better; quicker; faster, and blowing away a few myths about T-SQL.</p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/sql-server-2012/'>SQL Server 2012</a>, <a href='http://thelonedba.wordpress.com/tag/sqlbits/'>SQLBits</a>, <a href='http://thelonedba.wordpress.com/tag/sqlsaturday/'>SQLSaturday</a>, <a href='http://thelonedba.wordpress.com/tag/t-sql/'>T-SQL</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=950&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/02/18/sql-saturday-194-exeter-pre-con-t-sql-and-internals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>

		<media:content url="http://www.sqlsaturday.com/images/sqlsat194_web.png" medium="image" />
	</item>
		<item>
		<title>SQL Saturday Pre-Con &#8211; Mission-Critical Data Platforms on Windows Server 2012</title>
		<link>http://thelonedba.wordpress.com/2013/02/07/sql-saturday-pre-con-mission-critical-data-platforms-on-windows-server-2012/</link>
		<comments>http://thelonedba.wordpress.com/2013/02/07/sql-saturday-pre-con-mission-critical-data-platforms-on-windows-server-2012/#comments</comments>
		<pubDate>Thu, 07 Feb 2013 21:05:37 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQLBits]]></category>
		<category><![CDATA[SQLSaturday]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Windows 2012]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=946</guid>
		<description><![CDATA[OK, my homework for SQL Saturday #194 (Exeter) has slowed somewhat. However, I would like to say a few words about this particular Pre-Con. Christian Bolton &#38; Gavin Payne are just two of the really high-powered consultancy Coeo, a very &#8230; <a href="http://thelonedba.wordpress.com/2013/02/07/sql-saturday-pre-con-mission-critical-data-platforms-on-windows-server-2012/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=946&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sqlsaturday.com/194/eventhome.aspx" target="_blank"><img class="alignright" alt="" src="http://www.sqlsaturday.com/images/sqlsat194_web.png" width="236" height="115" /></a>OK, my homework for SQL Saturday #194 (Exeter) has slowed somewhat. However, I would like to say a few words about this particular Pre-Con.</p>
<p>Christian Bolton &amp; Gavin Payne are just two of the really high-powered consultancy Coeo, a very high-powered bunch, and they are the entire collection of Microsoft Certified Architects in various versions of SQL Server in the UK that aren&#8217;t employees of Microsoft. However, don&#8217;t let that scare you.</p>
<p>I was fortunate to attend Christian Bolton&#8217;s SQLBits Pre-Con in Liverpool, and I was a bit wary about it &#8211; would I be completely overwhelmed? The amount and depth of information Christian presents is spectacular, but the way he takes you through makes it all seem easy, and, best of all, completely logical. The SQLBits session was a full day of SQL Denali (as it then was), and started off with a gentle introduction, and went through the key new areas of Core, Security, ColumnStore, AlwaysOn (as it was called then), XEvents, and included a deep dive into Availability Groups. Phenomenal depth and detail, well organised and well presented. Gave me a good preparation for SQL Server 2012.</p>
<p>While on the subject of Christian&#8217;s skills here, I&#8217;m reminded of a deep-dive session he did for the SQL South West user group about 18 months ago on &#8220;Parallelism / CX Packet WaitTypes&#8221;. The audience wasn&#8217;t just hard-core DBAs, but a mix of DBAs, developers and BI people, and, I think, at least one <s>pointy-hair</s> manager-type. And I think he didn&#8217;t lose a single one on the trip.</p>
<p>As for Gavin, I&#8217;m in a somewhat odd position.  I&#8217;m currently (still) babysitting and taking apart systems that he implemented about ten years ago! I attended his session in Liverpool (again) on monitoring SQL Servers in the virtual environment. Good helpful material that I&#8217;ve found useful in the last year or so.</p>
<p>So. Want to learn about the opportunities that Windows 2012 offers you, the SQL Server DBA? I know I do. I&#8217;m going to try to get into this <a title="SQL Saturday 194 Pre-Con sessions page..." href="http://www.sqlsouthwest.co.uk/sqlsaturday_precon.htm" target="_blank">SQL Saturday pre-con</a> next month, and I would love to have a few other people in the class with me!  Present it to your management this way &#8211; one day of extremely high-powered training, for under £200.  How can they refuse?</p>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/sql-server-2012/'>SQL Server 2012</a>, <a href='http://thelonedba.wordpress.com/tag/sqlbits/'>SQLBits</a>, <a href='http://thelonedba.wordpress.com/tag/sqlsaturday/'>SQLSaturday</a>, <a href='http://thelonedba.wordpress.com/tag/training/'>Training</a>, <a href='http://thelonedba.wordpress.com/tag/windows-2012/'>Windows 2012</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=946&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/02/07/sql-saturday-pre-con-mission-critical-data-platforms-on-windows-server-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>

		<media:content url="http://www.sqlsaturday.com/images/sqlsat194_web.png" medium="image" />
	</item>
		<item>
		<title>Bulk Restores &#8211; response to a question on Ask SQLServerCentral</title>
		<link>http://thelonedba.wordpress.com/2013/01/24/bulk-restores-response-to-a-question-on-ask-sqlservercentral/</link>
		<comments>http://thelonedba.wordpress.com/2013/01/24/bulk-restores-response-to-a-question-on-ask-sqlservercentral/#comments</comments>
		<pubDate>Thu, 24 Jan 2013 12:35:44 +0000</pubDate>
		<dc:creator>thomasrushton</dc:creator>
				<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[AskSSC]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://thelonedba.wordpress.com/?p=938</guid>
		<description><![CDATA[Here&#8217;s the scenario: You&#8217;re rebuilding a DR environment, and have a set of Full, Differential and transaction log backups to restore. How to script this to run with minimal interference? The Approach Assumptions: All your backups are in subdirectories named &#8230; <a href="http://thelonedba.wordpress.com/2013/01/24/bulk-restores-response-to-a-question-on-ask-sqlservercentral/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=938&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s the scenario:  You&#8217;re rebuilding a DR environment, and have a set of Full, Differential and transaction log backups to restore.  How to script this to run with minimal interference?</p>
<h2>The Approach</h2>
<p>Assumptions:</p>
<ul>
<li>All your backups are in subdirectories named for the database, off a root directory.  eg:  M:\MSSQLBackup, containing directories such as M:\MSSQLBackup\MyDB1, M:\MSSQLBackup\MyDB2
<li>File names are of the format DBName_DateTime_Backuptype.bakortrn
</ul>
<p>The basic approach I used when scripting this a while ago was:</p>
<ul>
<li>create a temporary table, and populate it with the files found
<li>iterate through restoring all the most recent FULL backups
<li>iterate through restoring the most recent DIFF backups, dated after the FULL backup
<li>iterate through restoring all the TLog backups dated after the DIFF backup in order
<li>iterate through every database running RECOVERY so the database is online
</ul>
<p>The downside to this approach (and the simplistic way I&#8217;ve coded it) is that it doesn&#8217;t do all RESTOREs for one database before moving on to the next, and it runs in reverse alphabetical order.</p>
<p>An upside to the approach I&#8217;ve used is that there&#8217;s the opportunity for a handy &#8220;how far have I got&#8221; script&#8230;</p>
<p>NB: This is dirty, dirty code.  I&#8217;m sure there are much better, friendlier ways of doing things, but I needed something that was SQL2000-friendly.  Read the disclaimers.</p>
<h2>Step One &#8211; Getting Backup File Details</h2>
<p>First step: Enable xp_cmdshell</p>
<pre>exec sp_configure 'show advanced options', 1
reconfigure with override
exec sp_configure 'xp_cmdshell', 1 -- not necessary for SQL 2000
reconfigure with override
GO</pre>
<p>Next: create a temporary table for the processing results</p>
<pre>IF OBJECT_ID('tempdb.dbo.BackupFiles') IS NOT NULL
  BEGIN
    DROP TABLE tempdb.dbo.BackupFiles
  END
CREATE TABLE tempdb.dbo.BackupFiles (FullFileName  VARCHAR(255), dbname VARCHAR(128) NULL, RestoreDate DATETIME NULL)
</pre>
<p>Next step: Get the files and do some tidying up</p>
<pre>DECLARE @BackupPath varchar(250)
SELECT @BackupPath = 'M:\MSSQL\Backup'
DECLARE @SQLCmd VARCHAR(2000)
SELECT @SQLCmd = 'xp_cmdshell ''dir "' + @BackupPath + '\*.bak" /s /b'''
INSERT INTO tempdb.dbo.BackupFiles (FullFileName)
EXEC (@SQLCmd)
SELECT @SQLCmd = 'xp_cmdshell ''dir "' + @BackupPath + '\*.trn" /s /b'''
INSERT INTO tempdb.dbo.BackupFiles (FullFileName)
EXEC (@SQLCmd)

DELETE FROM tempdb.dbo.backupfiles 
WHERE fullfilename NOT LIKE @BackupPath + '%\%'
OR FullFileName IS NULL
</pre>
<p>Now, convert this data into something more useful &#8211; populating the dbname field with the first chunk of the backup filename:</p>
<pre>UPDATE tempdb.dbo.backupfiles
SET dbname = LEFT(RIGHT(fullfilename, LEN(fullfilename)-LEN(@backuppath)), CHARINDEX('\', RIGHT(fullfilename, LEN(fullfilename)-LEN(@backuppath)))-1)</pre>
<p>Remove anything that looks to be a backup of a system database:</p>
<pre>DELETE FROM tempdb.dbo.backupfiles
WHERE dbname NOT IN (SELECT name FROM sysdatabases WHERE dbid &gt; 4)</pre>
<p>Block anything that&#8217;s relating to a database for which we don&#8217;t have a FULL backup:</p>
<pre>UPDATE tempdb.dbo.backupfiles
SET RestoreDate = '1900-01-01 00:00'
WHERE DBName NOT IN (SELECT DISTINCT DBName FROM tempdb.dbo.backupfiles WHERE FullFileName LIKE '%full%.bak')</pre>
<h2>Restore FULL database Backups</h2>
<pre>DECLARE @DBName VARCHAR(128)
DECLARE @FullFileName VARCHAR(255)
DECLARE @RestoreCommand VARCHAR(2000)
DECLARE @KillCommand varchar(2000)

/* FULL */
WHILE 
(SELECT TOP 1 dbname
FROM tempdb.dbo.BackupFiles
WHERE fullfilename LIKE '%full.bak' AND RestoreDate IS NULL
) IS NOT NULL
  BEGIN
	SELECT @DBName = dbname, @FullFileName = MAX(fullfilename)
	FROM tempdb.dbo.BackupFiles
	WHERE FullFileName LIKE '%full.bak' AND RestoreDate IS NULL
	GROUP BY dbname
	
	/* DO STUFF */
	/* Kill existing connections */
	SELECT @KillCommand = ''
	SELECT @KillCommand = @KillCommand + 'KILL ' + convert(char(15), spid) + '   
'
	FROM sysprocesses WHERE dbid = db_id(@DBName)
	IF @KillCommand  ''
	  BEGIN
	    PRINT @KillCommand
	    EXEC (@KillCommand)
	  END
	  
	/* Restore DBs */ 
        SELECT @RestoreCommand = 'RESTORE DATABASE [' + @DBName + '] FROM DISK = ''' + @FullFileName + ''' WITH NORECOVERY,REPLACE' -- &lt;= build your restore command here.  I&#039;ve simplified this for illustrative purposes
	PRINT @RestoreCommand
	exec (@RestoreCommand)
	
        /* Now flag this backupfile as having been restored, and remove all prior-dated backup files from the temporary table */
	UPDATE TempDB.dbo.BackupFiles
	SET RestoreDate= GETDATE() WHERE dbname = @DBName AND FullFileName = @FullFileName AND RestoreDate IS NULL
	DELETE FROM TempDB.dbo.BackupFiles
	WHERE dbname = @DBName AND RestoreDate IS NULL
	AND ( (FullFileName LIKE &#039;%full.bak&#039;) OR (FullFileName LIKE &#039;%diff.bak&#039;) OR (FullFileName LIKE &#039;%tlog.trn&#039;) ) 
	AND FullFileName &lt; @FullFileName 
	
  END</pre>
<h2>Differentials</h2>
<p>Following a similar process for the DIFF backups:</p>
<pre>WHILE
(SELECT TOP 1 DBName
FROM tempdb.dbo.BackupFiles b
WHERE b.fullfilename LIKE '%diff.bak' AND b.DBName IN (SELECT f.DBName FROM tempdb.dbo.BackupFiles f WHERE FullFilename LIKE '%full.bak' AND RestoreDate IS NOT NULL) AND RestoreDate IS NULL
) IS NOT NULL  
  BEGIN
    SELECT @DBName = dbname, @FullFileName = MAX(FullFileName)
    FROM tempdb.dbo.BackupFiles 
    WHERE fullfilename LIKE '%diff.bak' AND DBName IN (SELECT f.DBName FROM tempdb.dbo.BackupFiles f WHERE FullFilename LIKE '%full.bak' AND RestoreDate IS NOT NULL) AND RestoreDate IS NULL
    GROUP BY DBName
    
    SELECT @RestoreCommand = 'RESTORE DATABASE ['+ @DBName + '] FROM DISK = ''' + @FullFileName + ''' WITH REPLACE,NORECOVERY'
    PRINT @RestoreCommand
    EXEC (@RestoreCommand)
    
    UPDATE TempDB.dbo.BackupFiles
    SET RestoreDate = getdate() WHERE dbname = @DBName AND FullFilename = @FullFileName AND RestoreDate IS NULL
    DELETE FROM TempDB.dbo.BackupFiles
    WHERE dbName = @DBName AND RestoreDate IS NULL AND ( (FullFileName LIKE '%full.bak') OR (FullFileName LIKE '%diff.bak'))
    DELETE FROM TempDB.dbo.BackupFiles
    WHERE dbName = @DBName AND RestoreDate IS NULL AND FullFileName LIKE '%tlog.trn' AND FullFileName &lt; @FullFileName
  END</pre>
<h2>And now for the Transaction Logs</h2>
<p>Aaaand again:</p>
<pre>WHILE EXISTS (SELECT * FROM tempDB.dbo.BackupFiles WHERE RestoreDate IS NULL AND FullFileName LIKE '%tlog.trn')
  BEGIN
    SELECT @DBName = dbname, @FullFileName = MIN(FullFileName)
    FROM tempdb.dbo.BackupFiles
    WHERE FulLFileName LIKE '%tlog.trn' AND RestoreDate IS NULL
    AND DBName IN (SELECT f.DBName FROM tempdb.dbo.Backupfiles f WHERE RestoreDate IS NOT NULL AND ((FullFileName LIKE '%full.bak') OR (FulLFileName LIKE '%diff.bak') ))
    GROUP BY DBName
    
    SELECT @RestoreCommand = 'RESTORE LOG [' + @DBName + '], FROM DISK = ''' + @FullFileName + ''' WITH NORECOVERY' -- Again, Simplified.
    PRINT @RestoreCommand
    EXEC (@RestoreCommand)
    UPDATE TempDB.dbo.BackupFiles
    SET RestoreDate = getdate() WHERE dbName = @DBName AND FullFileName = @FullFileName AND RestoreDate IS NULL
  
  END</pre>
<h2>And the final RECOVERY stage</h2>
<pre>DECLARE @RecoveryCommand varchar(MAX)
SELECT @RecoveryCommand = ''
SELECT @RecoveryCommand = @RecoveryCommand + 'RESTORE DATABASE [' + b.DBName + '] WITH RECOVERY   
'
FROM (SELECT DISTINCT DBName FROM tempdb.dbo.BackupFiles WHERE RestoreDate IS NOT NULL) as b
PRINT @RecoveryCommand
EXEC (@RecoveryCommand)</pre>
<h2>Monitoring</h2>
<p>As I mentioned above, there&#8217;s the option to monitor this process.  The script, for SQL2005 and above, is:</p>
<pre>SELECT  rh.destination_database_name ,
        MIN(rh.restore_date) AS MinStartDate ,
        MIN(bf.RestoreDate) AS MinFinishDate ,
        MAX(rh.restore_date) AS MaxStartDate ,
        MAX(bf.RestoreDate) AS MaxFinishDate ,
        MAX(cbd.NumDone) AS RestoresDone
FROM    msdb..restorehistory rh
        LEFT JOIN tempdb.dbo.BackupFiles bf ON rh.destination_database_name = bf.DBName
        LEFT JOIN ( SELECT  DBName ,
                            COUNT(*) AS NumDone
                    FROM    tempdb.dbo.BackupFiles
                    WHERE   RestoreDate IS NOT NULL
                    GROUP BY DBName
                  ) AS cbd ON bf.DBName = cbd.DBName
WHERE   rh.restore_date &gt;= (select crdate from tempdb..sysobjects where name = 'BackupFiles')
GROUP BY rh.destination_database_name
ORDER BY 2 DESC</pre>
<p>This shows summary information of all the database RESTOREs that have started &amp; completed since the creation of the BackupFiles temporary table.</p>
<h2>Caveats</h2>
<p>Note the following:</p>
<ul>
<li>This script hasn&#8217;t been tested on a brand new environment &#8211; the databases all exist already.
<li>This script was also built for use with SQL2000 as well as SQL2005 and later; I&#8217;ve removed a couple of SQL2000-only bits.
<li>This script was originally built for use with Quest LightSpeed for SQL Server &#8211; I&#8217;ve changed the various @RestoreCommand definitions to show the basic idea, but haven&#8217;t actually tested it.
<li>Don&#8217;t use this in production.  Bad things would happen.
<li>&#8230;particularly as there&#8217;s no error handling.
<li>&#8230;and it doesn&#8217;t do User / login info
<li>This is worth what you paid for it, ie nothing.  No warranty, no liability
<li>This post was lashed together as a response to a <a href="http://ask.sqlservercentral.com/questions/97765/i-need-script-for-continues-backup-and-restore-of.html" title="Original question on AskSSC" target="_blank">Question on AskSSC</a>
</ul>
<br />Filed under: <a href='http://thelonedba.wordpress.com/category/sqlserverpedia-syndication/'>SQLServerPedia Syndication</a> Tagged: <a href='http://thelonedba.wordpress.com/tag/askssc/'>AskSSC</a>, <a href='http://thelonedba.wordpress.com/tag/backup/'>Backup</a>, <a href='http://thelonedba.wordpress.com/tag/disaster-recovery/'>Disaster Recovery</a>, <a href='http://thelonedba.wordpress.com/tag/restore/'>Restore</a>, <a href='http://thelonedba.wordpress.com/tag/t-sql/'>T-SQL</a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thelonedba.wordpress.com&#038;blog=13338276&#038;post=938&#038;subd=thelonedba&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thelonedba.wordpress.com/2013/01/24/bulk-restores-response-to-a-question-on-ask-sqlservercentral/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/68f3945bf478970197d593c700ed353f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">thomasrushton</media:title>
		</media:content>
	</item>
	</channel>
</rss>
