<?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>Edwin M SarmientoEdwin M Sarmiento</title>
	<atom:link href="https://www.edwinmsarmiento.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.edwinmsarmiento.com</link>
	<description>Intentional Excellence</description>
	<lastBuildDate>Mon, 13 Apr 2026 21:00:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">84283043</site>		<item>
		<title>The R.E.S.T. for SUCCESS</title>
		<link>https://www.edwinmsarmiento.com/the-r-e-s-t-for-success-4/</link>
		<comments>https://www.edwinmsarmiento.com/the-r-e-s-t-for-success-4/#comments</comments>
		<pubDate>Wed, 18 Jul 2018 03:00:17 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=4155</guid>

				<description><![CDATA[4 Things To Propel You Towards Success Part 4. TRUST &#160; There&#8217;s a reason you&#8217;re at your job today. It&#8217;s the same reason why you were able to swipe your credit card to purchase something from the store the other day. Or why you can drive a car. That&#8217;s because somebody trusted you with something. Your current employer trusted you to do your job well. [&#8230;]]]></description>
					<content:encoded><![CDATA[<p><em id="gnt_postsubtitle" style="color:#770005;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:1.3em;line-height:1.2em;font-weight:normal;font-style:italic;">4 Things To Propel You Towards Success Part 4</em></p> <a href="https://www.edwinmsarmiento.com/the-r-e-s-t-for-success-4/"><img width="500" height="300" src="https://www.edwinmsarmiento.com/wp-content/uploads/2018/03/fig-31-03-2018_15-31-29.jpg" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2018/03/fig-31-03-2018_15-31-29.jpg 500w, https://www.edwinmsarmiento.com/wp-content/uploads/2018/03/fig-31-03-2018_15-31-29-300x180.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2018/03/fig-31-03-2018_15-31-29-82x49.jpg 82w" sizes="(max-width: 500px) 100vw, 500px" /></a><p><div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><em>This blog post is the fourth in a series that covers the four (4) things that you need to propel you towards success, both in business and in life. They were taken from my journal entries back in 2016.</div></em></p>
<div>
<div>
<h1>TRUST</h1>
<p>&nbsp;</p>
<p>There&#8217;s a reason you&#8217;re at your job today. It&#8217;s the same reason why you were able to swipe your credit card to purchase something from the store the other day. Or why you can drive a car.</p>
<p>That&#8217;s because <span style="color: #800000;"><strong>somebody trusted you with something</strong></span>.</p>
<p>Your current employer trusted you to do your job well. The store you bought from trusted the credit card company to pay them for your purchase (the credit card company also trusted you to pay your bills). Your local government agency trusted you to drive safely and responsibly.</p>
<p>Trust is a very important word that has taken you to where you are today. You have built credibility over time that allowed others to trust you. But trust is just one aspect of what I call <span style="color: #800000;"><strong>The H.I.T. to Success</strong></span> (see, I just threw in another acronym).</p>
<h3><span style="color: #0000ff;"><strong>Honesty</strong></span></h3>
<p>The transparency. The truthfulness. The willingness to communicate what you&#8217;re feeling or thinking even when it&#8217;s uncomfortable or contrary to popular belief.</p>
<p>I recall several years ago at a Microsoft MVP Summit discussion, the senior Microsoft executives were honest enough to admit that &#8220;<span style="color: #800000;"><em>they don&#8217;t know everything and that they are willing to try new things</em></span>.&#8221; Everyone in the room applauded, not because what the executives said was exciting. In fact, it  was counter-intuitive to how we perceive executives of large corporations. It was because they were honest about their own experiences.</p>
<p>I tell potential customers when on sales calls that &#8220;they don&#8217;t need my services&#8221; if, based on the initial conversations, I felt that they really don&#8217;t. I tell customers not to upgrade to the latest and greatest version of SQL Server if I don&#8217;t see a benefit to the business (for example, they just recently did a massive upgrade project). And I tell customers what the &#8220;real&#8221; problems are, not those that are &#8220;perceived&#8221; as problems.</p>
<p>One of my favourite stories that I share about honesty was when we, at my previous job, were trying to win a SharePoint upgrade project for a global financial company. The VP of IT Operations for the potential customer hated us and the idea of outsourcing. I told the sales guy to bring me in on the next sales call but be ready for whatever it is that will come out of the conversation.</p>
<p>We had the VP and several of his technical staff during the sales call. He started asking about guarantees: <span style="color: #800000;"><em>&#8220;Can you guarantee 100% success rate?&#8221; &#8220;Can you guarantee 100% on-time and on-schedule delivery of the project?&#8221;</em></span> I asked for permission to respond. <em><span style="color: #0000ff;">&#8220;Sir, we cannot guarantee you anything. Not 100% success rate nor a 100% on-time and on-schedule delivery. And I believe nobody can guarantee you anything. Not even your insurance company. But here&#8217;s what I can guarantee you. I can guarantee you my word. Because I will only tell you what I can and cannot do. If that is not good enough for you, then, I believe we&#8217;re not the right service provider. What I can do is to ask my contacts if they know anyone who can deliver on your demands.&#8221;</span></em></p>
<p>Everyone on the room was shocked when they heard me say that. The sales guy responsible for the account was starting to regret that he brought me on the call. I told him that I was just being honest. Besides, there is no way I would get my team to deliver on a promise that I know we cannot deliver.</p>
<p>We ended up winning the contract. I ended up working on that project.</p>
<h3><span style="color: #0000ff;">Integrity</span></h3>
<p>The courage to do the right thing all the time, regardless of the outcome. The ability to consistently align our actions with our words. Being honest with customers can potentially have negative outcomes. Like that SharePoint upgrade project. That was &#8220;almost a quarter of a million dollars&#8221; worth of contract potentially lost if the customer didn&#8217;t sign. When I had to return the payment from one of my course subscribers because I told him he would get it for free. When I told my former employer that they overpaid me my salary. And when one of my recent consulting projects accidentally sent me more payments last month than what was stated in the contract.</p>
<p>Even for small things such as the grocery clerk mistakenly not charging me for an item. Or that restaurant server that gave me more change than she needed to.</p>
<p>If you exercise integrity and honesty in the small things, it would be easier to do it with big ticket items like that SharePoint upgrade contract.</p>
<h3><span style="color: #0000ff;">Trust</span></h3>
<p>This is a by-product of exercising both honesty and integrity.</p>
<p><strong>It&#8217;s good for personal relationships&#8230;and business, too.</strong></p>
<p>I&#8217;ve had the amazing opportunity to re-connect with friends in the SQL Server community at events like the PASS and MVP Summits. But beyond the usual hugs and high-fives, I felt privileged that some of them chose to share their personal struggles with me &#8211; deciding whether or not to pursue independent consulting because of the fear of the unknown, challenges with family and relationships, pursuing to relocate to start a new job, recovering from surgeries, etc.</p>
<p>I regularly review my previous and existing contracts. All of them were a by-product of referrals and introductions. <strong>That&#8217;s the power of trust.</strong> Because trust is the foundation of successful individuals and organizations. Because people will only do business with people that they know, like and trust &#8211; what I call <span style="color: #800000;"><strong>the KLT Factor</strong></span>.</p>
</div>
</div>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/the-r-e-s-t-for-success-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">4155</post-id>	</item>
		<item>
		<title>The Real Secret to Successfully Upgrade SQL Server Databases</title>
		<link>https://www.edwinmsarmiento.com/the-real-secret-to-successfully-upgrade-sql-server-databases/</link>
		<comments>https://www.edwinmsarmiento.com/the-real-secret-to-successfully-upgrade-sql-server-databases/#comments</comments>
		<pubDate>Fri, 13 Oct 2017 19:08:12 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=3856</guid>

				<description><![CDATA[Given Microsoft&#8217;s recent announcement of SQL Server 2017 general availability, you somehow get an idea of the frequency of releases for future SQL Server versions. This translates to more database upgrade and migration work that SQL Server DBAs have to do. However, keeping up with the latest and greatest version is not practical from a [&#8230;]]]></description>
					<content:encoded><![CDATA[<a href="https://www.edwinmsarmiento.com/the-real-secret-to-successfully-upgrade-sql-server-databases/"><img width="760" height="746" src="https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-760x746.png" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-760x746.png 760w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-300x295.png 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-768x754.png 768w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-1024x1006.png 1024w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-35x35.png 35w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-407x400.png 407w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-82x81.png 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade-600x589.png 600w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/10/DatabaseUpgrade.png 1065w" sizes="(max-width: 760px) 100vw, 760px" /></a><p>Given <a href="https://azure.microsoft.com/en-us/blog/new-azure-advancements-remove-cloud-barriers-for-enterprises-at-ignite-2017/" target="_blank" rel="noopener">Microsoft&#8217;s recent announcement of SQL Server 2017 general availability</a>, you somehow get an idea of the frequency of releases for future SQL Server versions. This translates to more database upgrade and migration work that SQL Server DBAs have to do. However, keeping up with the latest and greatest version is not practical from a business standpoint. What might end up happening is that there would be more frequent installations of service packs and cumulative updates to keep a specific version of SQL Server in a supported configuration.</p>
<p>In my online course <strong><a href="https://LearnSQLServerHADR.com" target="_blank" rel="noopener">Windows Server Failover Clustering for the Smart SQL Server DBA</a></strong>, I walk thru the process of installing service packs on a multi-instance, multi-node SQL Server failover cluster. The process is basically the same if you want to perform an in-place upgrade. Majority of SQL Server DBAs are mostly focused on the actual upgrade process. And, why not? This is where the real action happens. But from my experience, the actual upgrade process is just but a small portion of the overall activity. In fact, what happens before the actual upgrade process determines whether or not the upgrade becomes successful.</p>
<p>Here&#8217;s another thing that I observed in my experience: service pack and cumulative update installations are treated like normal operations tasks. <span style="color: #800000;"><strong>That&#8217;s a huge mistake</strong></span>, especially if you do not have a high availability solution in place. I remember the days of installing service packs on a SQL Server 2000 failover cluster. I think I spent more time &#8220;hoping and praying&#8221; for the entire installation process to succeed than doing the actual work. Otherwise, I&#8217;ll be stuck with rebuilding an entire cluster.</p>
<p>Whether you are installing a service pack or upgrading from a lower version to a higher version of SQL Server, this video will show you the real secret to successfully perform these tasks.</p>
<iframe title="YouTube video player" width="100%" height="353" src="//www.youtube.com/embed/1gktlabdHWg?rel=0" frameborder="0" allowfullscreen></iframe><div style="margin-bottom: 10px; border: 1px #999999 solid; background-color: #eaeaea; padding: 6px 6px 6px 6px;font-family:arial,helvetica,sans-serif;font-size:10px;text-align:center;">If you can&rsquo;t see this video in your RSS reader or email, then <a href="https://www.edwinmsarmiento.com/the-real-secret-to-successfully-upgrade-sql-server-databases/" title="The Real Secret to Successfully Upgrade SQL Server Databases">click here</a>.</div>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/the-real-secret-to-successfully-upgrade-sql-server-databases/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">3856</post-id>	</item>
		<item>
		<title>You Won&#8217;t Find This In My (Or Someone Else&#8217;s) Resume</title>
		<link>https://www.edwinmsarmiento.com/you-wont-find-this-in-my-resume/</link>
		<comments>https://www.edwinmsarmiento.com/you-wont-find-this-in-my-resume/#comments</comments>
		<pubDate>Wed, 15 Mar 2017 03:55:31 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[Leadership Lessons]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[T-SQL Tuesday]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=3466</guid>

				<description><![CDATA[I can guarantee you this. Because no one brags about their failures. The year was 1999. A small business owner approached a young guy &#8211; fresh out of university with no database nor computer programming background &#8211; to write a software for their retail and consumer goods business. The business owner wanted a software that can be [&#8230;]]]></description>
					<content:encoded><![CDATA[<a href="https://www.edwinmsarmiento.com/you-wont-find-this-in-my-resume/"><img width="400" height="400" src="https://www.edwinmsarmiento.com/wp-content/uploads/2017/03/failure-icon-6.png" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2017/03/failure-icon-6.png 400w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/03/failure-icon-6-150x150.png 150w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/03/failure-icon-6-300x300.png 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/03/failure-icon-6-35x35.png 35w, https://www.edwinmsarmiento.com/wp-content/uploads/2017/03/failure-icon-6-82x82.png 82w" sizes="(max-width: 400px) 100vw, 400px" /></a><p style="text-align: center;"><img decoding="async" class="aligncenter size-thumbnail wp-image-2601" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/TSQLTuesday-150x150.jpg" alt="" width="150" height="150" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/TSQLTuesday-150x150.jpg 150w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/TSQLTuesday-35x35.jpg 35w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/TSQLTuesday-82x82.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/TSQLTuesday.jpg 300w" sizes="(max-width: 150px) 100vw, 150px" /></p>
<div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><em>It’s T-SQL Tuesday, the blog party that SQL Server expert Adam Machanic (<a href="http://sqlblog.com/blogs/adam_machanic/" target="_blank">blog</a>|<a href="http://twitter.com/adammachanic" target="_blank">Twitter</a>) started. This <a href="http://www.pontop.dk/single-post/2017/03/07/Announcing-T-SQL-Tuesday-88-%E2%80%93-The-daily-database-related-WTF" target="_blank">month’s episode</a> is hosted by <strong>Kennie Nybo Pontoppidan</strong> (<a href="http://www.pontop.dk/" target="_blank">blog</a>|T<a href="https://twitter.com/kennieNP" target="_blank">witter</a>) and the topic is “daily database-related WTF”. I&#8217;m sure you have had one of those horror stories &#8211; the ones that you&#8217;ve made and those done by others.</em></div>
<h3><strong>I can guarantee you this. <span style="color: #800000;">Because no one brags about their failures.</span></strong></h3>
<hr />
<p>The year was 1999. A small business owner approached a young guy &#8211; fresh out of university with no database nor computer programming background &#8211; to write a software for their retail and consumer goods business. The business owner wanted a software that can be used as a point-of-sale system as well as managing inventory. The young guy declined, explaining that he didn&#8217;t have any background in computer programming nor database design. The business owner insisted: he fully trusted the young guy to deliver.</p>
<p>The young guy learned as much as he can about computer programming and database design. He read books, asked questions on forums and newsgroups. Tried sample codes. A lot of sleepless nights. After 24 days of banging on the keyboard writing code, he had a working prototype. He showed the business owner how it worked. It was very intuitive, easy to use and fully functional. He just got himself one happy customer.</p>
<p>Except&#8230;</p>
<p>The database had only one table&#8230;with <strong>234 columns</strong>. It could have had about 17 tables if the design was properly normalized. What&#8217;s worse, all records were accessed using the RBAR database programming method. One &#8220;row by agonizing row&#8221; at a time.</p>
<p>&nbsp;</p>
<hr />
<p>The year was 2008. A conference room was packed with about four hundred plus people, mostly SQL Server database administrators. The topic: <strong>database recovery techniques</strong>. The speaker was showing a dozen different ways on how to recover from a database disaster &#8211; from somebody accidentally dropping a table to fixing a corrupted data page. The members of the audience were holding their breath. They just saw a disk volume disappear from underneath SQL Server, losing one of the database files in a filegroup. But the transactions kept going. Inserting records into the partitioned table, despite having one of the data files in the missing disk volume, kept going. Everyone in the room tried to guess what&#8217;s going to happen next. How will the database with a missing data file be recovered? Anticipation was building.</p>
<p>Except&#8230;</p>
<p>The speaker didn&#8217;t have a working database backup. How on earth can you recover that missing database file if you don&#8217;t have a working backup? One of the attendees even shouted, &#8220;<em>well, that could be my production database right there.</em>&#8221; And he was right.</p>
<p>&nbsp;</p>
<hr />
<p>The year was 2010. A consultant was working on designing and deploying System Center Operations Manager (OpsMgr) and System Center Configuration Manager (ConfigMgr) for a customer. The goal was to operationalize the enterprise software deployment process and systems monitoring. The servers were prepared, SQL Server was installed, OpsMgr and ConfigMgr configured. The project was in the stabilization phase waiting for the go-live schedule.</p>
<p>Except&#8230;</p>
<p>The consultant received an email alert. The SQL Server machine hosting both the OpsMgr and ConfigMgr databases was taken offline. <strong>And there&#8217;s no way the server is coming back online &#8211; ever</strong>. Because the system has still not reached &#8220;<strong>production phase</strong>,&#8221; only the databases had backups. It turned out that an image of a pre-built Windows XP Professional system was accidentally deployed specifically to the SQL Server machine. The process had a step to reformat the machine and install the Windows XP image. What&#8217;s worse, the deployment process was configured by the consultant himself.</p>
<p>&nbsp;</p>
<hr />
<p>In case you&#8217;re wondering, these three events have one thing common &#8211; <span style="color: #800000;"><strong>ME</strong></span>.</p>
<p>I was the one who wrote the point-of-sale system and designed the database with a single table. I was the speaker who was right in the middle of a database disaster talking about, ironically, recovering from database disasters &#8211; in front of about four hundred plus people. I was the one who automated the deployment of the Windows XP image that took down the SQL Server machine.</p>
<p>But you probably didn&#8217;t notice that I called them <strong>events</strong>. They don&#8217;t define who I am.</p>
<p>I used to try to forget my failures. I was raised in a culture where failure is shameful. Until I realized that every failure contributed to where I am today. When I started seeing failure as a learning event &#8211; not something that defines who I am &#8211; I embraced it. Because it&#8217;s in the failures that I learn the most.</p>
<p>So, don&#8217;t be afraid to fail. Fail fast. Fail forward. Learn as much as you can. Just don&#8217;t make the same mistakes over and over again.</p>
<p>You still won&#8217;t find this in my resume. But I do talk about my failures. In fact, talking about my failures got me <strong><a href="https://www.edwinmsarmiento.com/why-is-this-a-slide-deck-worth-3500/" target="_blank">this wonderful prize</a></strong>.</p>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/you-wont-find-this-in-my-resume/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">3466</post-id>	</item>
		<item>
		<title>Generating the Windows Server Failover Cluster Debug Logs</title>
		<link>https://www.edwinmsarmiento.com/generating-the-wsfc-cluster-logs/</link>
		<comments>https://www.edwinmsarmiento.com/generating-the-wsfc-cluster-logs/#comments</comments>
		<pubDate>Wed, 30 Nov 2016 00:54:19 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[cluster log]]></category>
		<category><![CDATA[Get-ClusterLog]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=3162</guid>

				<description><![CDATA[Troubleshooting Availability of SQL Server Workloads Running on Windows Server Failover Cluster - Part 4. I started this blog post with a warning mainly because I&#8217;ve seen a lot of engineers and database administrators spend so much time figuring out the root cause of why a SQL Server database running on a WSFC is offline &#8211; while it is still offline. I know because I used to be like that. [&#8230;]]]></description>
					<content:encoded><![CDATA[<p><em id="gnt_postsubtitle" style="color:#770005;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:1.3em;line-height:1.2em;font-weight:normal;font-style:italic;">Troubleshooting Availability of SQL Server Workloads Running on Windows Server Failover Cluster - Part 4</em></p> <a href="https://www.edwinmsarmiento.com/generating-the-wsfc-cluster-logs/"><img width="760" height="73" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog-760x73.jpg" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog-760x73.jpg 760w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog-300x29.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog-768x73.jpg 768w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog-518x50.jpg 518w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog-82x8.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog-600x57.jpg 600w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/12/Get-ClusterLog.jpg 826w" sizes="(max-width: 760px) 100vw, 760px" /></a><div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><em><span style="color: #ff0000;"><strong>WARNING</strong></span>: If you&#8217;ve gone thru <a href="https://www.edwinmsarmiento.com/exploring-the-cluster-dependency-report/" target="_blank">part 1</a>, <a href="https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/" target="_blank">part 2</a> and <a href="https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/" target="_blank">part 3</a> of this series of blog posts and your SQL Server databases running on a Windows Server Failover Cluster (WSFC) are still offline and unavailable, I would recommend escalating it to a more senior engineer or calling Microsoft support before reading further. Regardless of whether or not you can fix the issue given a few more minutes, the clock is ticking and your time to meet your recovery objective is running out.</em></div>
<p>I started this blog post with a warning mainly because I&#8217;ve seen a lot of engineers and database administrators spend so much time figuring out the root cause of why a SQL Server database running on a WSFC is offline &#8211; while it is still offline. I know because I used to be like that. I want to find out the real reason why so that I can take proactive steps in preventing it from happening again.</p>
<p>There&#8217;s nothing wrong with finding the root cause of a problem. In fact, we should try our best to &#8220;really&#8221; find out why the problem occurred in the first place. But do you remember the main goal of why we are running SQL Server on a WSFC? <span style="color: #800000;"><strong>It is to keep it highly available</strong></span> (<em>refer to <a href="https://www.edwinmsarmiento.com/exploring-the-cluster-dependency-report/" target="_blank">Focus on The Main Goal of Part 1</a> of this series</em>). You only start doing root cause analysis (RCA) after the issue has been resolved.</p>
<h2>Your Last Option</h2>
<p>If the methods provided in <a href="https://www.edwinmsarmiento.com/exploring-the-cluster-dependency-report/" target="_blank">part 1</a>, <a href="https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/" target="_blank">part 2</a> and <a href="https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/" target="_blank">part 3</a> of this series of blog posts did not work for you and your SQL Server databases are still offline, then, analyzing the cluster debug log maybe your last option. The cluster debug log (or more commonly known as the <span style="color: #0000ff;"><strong>cluster.log</strong></span>) provides a more detailed logging information about what&#8217;s going on in the WSFC. You will have more (and potentially overwhelming) information available to help with the troubleshooting process. Let&#8217;s start with generating the cluster debug log.</p>
<h3>Generating the Cluster Debug Log</h3>
<p>In the past, I&#8217;ve used <a href="https://www.microsoft.com/resources/documentation/windowsnt/4/server/proddocs/en-us/clustsvr/mscsadma.mspx?mfr=true" target="_blank">cluster.exe</a> command to generate the cluster debug logs for analysis. When Windows Server 2008 introduced PowerShell cmdlets for WSFC, I immediately ditched cluster.exe.</p>
<p>You can generate the cluster debug log by running the <strong><a href="https://technet.microsoft.com/en-us/library/ee461045.aspx" target="_blank">Get-ClusterLog</a> </strong>PowerShell cmdlet. This will generate a log file for all (or specific) nodes in the WSFC. By default, it will store the cluster debug log files in the <em>C:\Windows\Cluster\Reports</em> folder.</p>
<p>Being a lazy guy that I am, here are the two parameters that I frequently use with the <strong><a href="https://technet.microsoft.com/en-us/library/ee461045.aspx" target="_blank">Get-ClusterLog</a> </strong>PowerShell cmdlet and why I use them.</p>
<ul>
<li><strong>Destination</strong> &#8211; Didn&#8217;t I say I&#8217;m lazy? I don&#8217;t want to navigate to the default path just to retrieve the generated files. I use the Destination parameter, passing the dot (.) value to store the generated log files wherever I am in the PowerShell command line. This makes it easy for me to open the log files using Notepad &#8211; I can just tab-complete the filename within the PowerShell command window. Below is how I use the Destination parameter.</li>
</ul>
<pre class="brush: powershell; title: ; notranslate">PS C:\&gt; Get-ClusterLog -Destination .
PS C:\&gt; notepad hostname_cluster.log</pre>
<ul>
<li><strong>TimeSpan</strong> &#8211; Sometimes, when I get called in to resolve an availability issue for SQL Server databases running on WSFC, the first thing that I do is run this PowerShell cmdlet and pass the TimeStamp parameter to include the events leading up to the incident. For example, if I get called in at 11:00 AM and the customer tells me that the databases (SQL Server failover clustered instance or Availability Group) have been offline for roughly 30 minutes, I immediately collect &#8211; <span style="color: #ff0000;"><strong>not analyze, just collect</strong> </span>&#8211; the cluster debug log so that I don&#8217;t get overwhelmed with the amount of data that I need to analyze later on when doing the RCA. Below is how I use the TimeSpan parameter, passing 40 (minutes) as a value. I used 40 and not 30 because I assume that the customer may not have immediately reported the issue. The log files will only contain the events that happened in the last 40 minutes. This parameter makes targeting a specific time frame much easier.</li>
</ul>
<pre class="brush: powershell; title: ; notranslate">PS C:\&gt; Get-ClusterLog -Destination . -TimeSpan 40</pre>
<p>One thing to note about the timestamps written in the log files &#8211; they are in UTC format. This is because you can have WSFC nodes in different geographical regions and time zones. Think SQL Server Availability Groups with replicas on a different data center for disaster recovery purposes. So, when you&#8217;re correlating the events in the log, be sure to use the UTC time as a reference. Alternatively, you can use the <strong>-UseLocalTime</strong> parameter to generate the logs using the servers&#8217; local time.</p>
<h3>How I Read The Log Files</h3>
<p>Once the log files are generated, I open one up (the number of log files depend on the number of nodes in the WSFC) using any text editor, Notepad being the most common one because it&#8217;s available on every Windows installation.</p>
<p>Here&#8217;s how I read the log files to start analyzing the issue. Again, I only do this after the issue has been resolved or when all the first three options I mentioned in the earlier blog posts were not enough for me to fix the issue.</p>
<ol>
<li><strong>Hit Ctrl + End.</strong> This will move the cursor the the very end of the log file. Why would i want to do that? Because the log files are generated sequentially, with the earliest event at the top and the latest one at the bottom.</li>
<li><strong>Hit Ctrl + F.</strong> This will open the Find window so I can start searching for specific text. Here are the two that I look for
<ul>
<li>&lt;space&gt;<span style="color: #800000;"><strong>ERR</strong></span>&lt;space&gt;&lt;space&gt; &#8211; note that I included a space before the text ERR and two blank spaces afterwards. I use this to locate the latest error event written in the log without having to go thru some names or keywords that have the ERR text in them, for example, an Availability Group named TERRA. Refer to the screenshot below.</li>
</ul>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3175" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog1.jpg" alt="clusterlog1" width="545" height="325" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog1.jpg 545w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog1-300x179.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog1-518x309.jpg 518w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog1-82x49.jpg 82w" sizes="(max-width: 545px) 100vw, 545px" /></p>
<ul>
<ul>
<li>&lt;space&gt;<span style="color: #800000;"><strong>WARN</strong></span>&lt;space&gt;&lt;space&gt; &#8211; same as with the ERR text. I use this to locate the latest warning event written in the log. Refer to the screenshot below.</li>
</ul>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-3179" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog2-1.jpg" alt="clusterlog2" width="590" height="309" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog2-1.jpg 590w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog2-1-300x157.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog2-1-518x271.jpg 518w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/11/clusterlog2-1-82x43.jpg 82w" sizes="(max-width: 590px) 100vw, 590px" /></li>
<li><strong>Hit Alt + U</strong>. Since I&#8217;m at the end of the file, I want to start searching for the latest entry &#8211; be it for ERR or WARN. This will search the file upwards instead of the default downwards.</li>
<li><strong>Hit Alt + F</strong>. Start the search.</li>
</ol>
<p>As you go thru the cluster debug log, you need to know what the event messages mean so that you don&#8217;t waste time trying to understand everything. I still don&#8217;t know every single event message but I try to focus first on what the ERR or WARN events are telling me to make sense of what happened and why.</p>
<p>In <a href="https://www.edwinmsarmiento.com/analyze-wsfc-cluster-log/" target="_blank">the next blog post</a>, we&#8217;ll look at reading the event messages and how to decipher what those messages mean.</p>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/generating-the-wsfc-cluster-logs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">3162</post-id>	</item>
		<item>
		<title>Reviewing the SQL Server Error Logs to Find the Two Most Common Keywords That Can Cause Availability Issues</title>
		<link>https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/</link>
		<comments>https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/#comments</comments>
		<pubDate>Tue, 18 Oct 2016 18:43:56 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Availability Groups]]></category>
		<category><![CDATA[SQL Server error log]]></category>
		<category><![CDATA[SQL Server Failover Clustered Instances]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=3117</guid>

				<description><![CDATA[Troubleshooting Availability of SQL Server Workloads Running on Windows Server Failover Cluster - Part 2. SQL Server Failover Clustered Instances (FCI) and Availability Groups (AG) depend a lot on Windows Server Failover Clustering (WSFC). Understanding how the underlying WSFC platform works can help us maintain availability of our databases &#160; As I was driving out of my driveway, I noticed something that is considered to be every car owner&#8217;s worst nightmare: the [&#8230;]]]></description>
					<content:encoded><![CDATA[<p><em id="gnt_postsubtitle" style="color:#770005;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:1.3em;line-height:1.2em;font-weight:normal;font-style:italic;">Troubleshooting Availability of SQL Server Workloads Running on Windows Server Failover Cluster - Part 2</em></p> <a href="https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/"><img width="493" height="363" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/10/check-engine-light.jpg" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/10/check-engine-light.jpg 493w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/10/check-engine-light-300x221.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/10/check-engine-light-82x60.jpg 82w" sizes="(max-width: 493px) 100vw, 493px" /></a><p>SQL Server Failover Clustered Instances (FCI) and Availability Groups (AG) depend a lot on Windows Server Failover Clustering (WSFC). Understanding how the underlying WSFC platform works can help us maintain availability of our databases</p>
<p style="text-align: left;"><div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><span style="color: #333333;"><em>This blog post is the second in a series that talks about the process that I follow when troubleshooting availability of SQL Server failover clustered instances and Availability Groups. Note that the focus of this series is primarily on availability &#8211; identifying and dealing with downtime. </em></span></div></p>
<p>&nbsp;</p>
<p>As I was driving out of my driveway, I noticed something that is considered to be every car owner&#8217;s worst nightmare: the <span style="color: #800000;"><strong>check engine light</strong>.</span> And what&#8217;s frustrating about it is that it comes without a warning and no explanation whatsoever.</p>
<p>I&#8217;ve seen this light go off in the past. So, I did what I did before to get it to turn off. I opened the gas tank, cleaned the gas cap and the surrounding area and closed it real tight. That didn&#8217;t work. I was hoping to save a few hundred bucks and a trip to the car mechanic. I was unlucky. I had to take it to the mechanic.</p>
<p>Modern vehicles are equipped with sensors and mini-computers that track what&#8217;s wrong with your car. Your car dealer or mechanic will have devices that can read these sensors and mini-computers to identify the code that is triggered the check engine light. If you really want to know what caused that check engine light to turn on, you have to read the error codes with a scanner tool. See, even cars have error codes.</p>
<h2>The SQL Server Error Log</h2>
<p>The SQL Server error log contains information about the operational aspects of your databases. Depending on how you log operational events, it can contain everything from failed logins, corrupted data pages, failed (and annoyingly successful) backups, out-of-memory issues, etc. Reading the SQL Server error log can be overwhelming, especially if you don&#8217;t know what you&#8217;re looking for.</p>
<p>Troubleshooting availability issues with a SQL Server failover clustered instance (FCI) or Availability Groups (AGs) can feel like reading the codes that triggered your car&#8217;s check engine light. But, hey, you don&#8217;t need any special code reader to do it. You can use any text editor/reader to open the SQL Server error log even when the SQL Server instance is offline. In fact, this is one common misconception about reading the SQL Server error log: <strong>you can read it even when the SQL Server instance is offline</strong>. You just need to know where to find it.</p>
<h2>Two Common Keywords That Identify Potential Availability Issues</h2>
<p>I could list a ton of reasons why a SQL Server FCI or AG is offline. Which is why my first step in troubleshooting availability issues on a SQL Server FCI or AG is to <a href="https://www.edwinmsarmiento.com/exploring-the-cluster-dependency-report/" target="_blank">look at the Cluster Dependency Report</a>. More often than not, you can quickly identify availability issues for a SQL Server FCI using the Cluster Dependency Report. The most common availability issues for a SQL Server FCI are caused by the underlying Windows Server Failover Cluster (WSFC). Just take a look at this <a href="https://msdn.microsoft.com/en-us/library/ms189117.aspx" target="_blank">Failover Cluster Troubleshooting guide</a> to see what I mean.</p>
<p>But what about SQL Server AGs?</p>
<p>Because SQL Server AGs work on the database-level, anything related to availability issues at the database-level can cause issues at the AG-level. Below are two of the common keywords that identify SQL Server AG availability issues. You can use them to filter the results in the SQL Server error log. These are simply meant to give you a sense of how you can use the SQL Server error log to start identifying availability issues.</p>
<h3><em><strong>RESOLVING</strong></em></h3>
<p>This could be caused by a number of different reasons. Here&#8217;s one example.</p>
<p><strong><span style="color: #800000;"><em>Error 983, Severity 14: Unable to access database &#8216;%.*ls&#8217; because its replica role is RESOLVING which does not allow connections</em></span></strong>.</p>
<p>This could be caused by a network communication issue between the primary and the secondary.</p>
<p>Here&#8217;s a tip that helps me simplify this idea: <span style="color: #0000ff;"><strong>Think of this as a typical client-server communication issue with the primary replica acting as the client (sending log records) to the secondary replica and vice versa.</strong></span></p>
<ul>
<li>firewall &#8211; Windows Firewall or otherwise</li>
<li>endpoint permissions &#8211; the SQL Server service account does not have access to the endpoint</li>
<li>bad cable &#8211; you need to keep rats off your data center</li>
<li>corrupted storage on the secondary &#8211; this renders your database offline regardless</li>
<li>offline secondary WSFC node &#8211; this renders your database server offline regardless</li>
<li>large number of VLFs on database that is taking time to analyze during a restart of the secondary &#8211; this is just like any other databases undergoing crash recovery</li>
<li>Transparent Data Encryption enabled on the primary but not on the secondary</li>
</ul>
<p>I could go on and on and list other reasons. But the point is to find this keyword in the SQL Server error log and think of reasons why your primary replica could not connect to the secondary and vice versa.</p>
<p>Now, this does not mean that your SQL Server AG is offline. If the WSFC is properly configured and you have proper quorum, your SQL Server AG will still be online with the primary replica just happily doing its thing. It&#8217;s like being able to drive your car even with the check engine light on.</p>
<h3><em><strong>FAILOVER</strong></em></h3>
<p>This could be related to the previous item <strong>RESOLVING</strong>. Now, you can be as paranoid as I am to get alerted when a SQL Server AG (or FCI) failover occurred so that you can quickly identify what caused it. But you can also be confident that your system just works as expected.</p>
<p>The failover process is initiated by the WSFC. But in order for the WSFC to automatically failover the SQL Server AG from the primary to the secondary replica, the following conditions should be met.</p>
<ul>
<li>The WSFC has quorum and can decide to automatically failover</li>
<li>Maximum failure threshold has not been exceeded</li>
<li>Cluster service on the secondary replica is running and healthy</li>
<li>The secondary replica configured for automatic failover is fully synchronized</li>
</ul>
<p>Noticed that the first three items in the list all pertain the WSFC. The last item applies specifically to the database. Which is why you need to quickly identify and resolve any error messages that contain the keyword <strong>RESOLVING</strong> to guarantee automatic failover.</p>
<p>Here&#8217;s an example error message.</p>
<p><span style="color: #800000;"><em><strong>Error 19406, Severity 10: The state of the local availability replica in availability group &#8216;%.*ls&#8217; has changed from &#8216;%ls&#8217; to &#8216;%ls&#8217;. </strong></em></span></p>
<p>Of course, you won&#8217;t see anything like this when a SQL Server FCI fails over because that is no different from starting a SQL Server instance. The SQL Server error log would be recycled as a side effect of the failover.</p>
<p><strong>NOTE:</strong> Automatic failover is not available on SQL Server AGs when one of the replicas is running a SQL Server FCI because the SQL Server FCI automatic failover takes precedence over the SQL Server AG automatic failover.</p>
<h2>Reading the SQL Server Errror Log</h2>
<p>I&#8217;ve been using the undocumented <strong>sp_readerrorlog</strong> (was xp_readerrorlog) system stored procedure ever since I can remember to search for keywords inside the SQL Server error log. I&#8217;m still not good with SQL Server Management Studio, even SQL Server Enterprise Manager from the good old days of SQL Server 2000 and earlier. To use the <strong>sp_readerrorlog</strong> stored procedure to search the current SQL Server error log for the <strong>RESOLVING</strong> keyword,</p>
<pre class="brush: sql; title: ; notranslate">

--to search for the RESOLVING keyword

--in the current SQL Server error log

sp_readerrorlog 0,1, 'RESOLVING'

</pre>
<p>My friend and SQL Server senior escalation engineer <strong>Balmukund Lakhani</strong> (<a href="https://sqlserver-help.com/" target="_blank">blog </a>| <a href="https://twitter.com/blakhani" target="_blank">Twitter</a>) <a href="https://sqlserver-help.com/2014/12/10/sql-internals-useful-parameters-for-xp_readerrorlog/" target="_blank">wrote about the different parameters</a> that you can use when calling this system stored procedure. This makes it easy for me to search the SQL Server error log to look for these keywords.</p>
<p><span style="color: #800000;"><em><strong>UPDATE: </strong> I&#8217;ve included Rob Sewell&#8217;s (<a style="color: #800000;" href="https://sqldbawithabeard.com" target="_blank">blog</a> | <a style="color: #800000;" href="https://twitter.com/@sqldbawithbeard" target="_blank">Twitter</a>) one-line PowerShell script example below. This just demonstrates how powerful PowerShell is when performing tasks like this.</em></span></p>
<pre class="brush: powershell; title: ; notranslate">
(Get-SQLErrorLog -Server SERVER/INSTANCE).Where{$_.Message -like '*Resolving*' -or $_.Message -like '*Failover*'}
</pre>
<h3>Additional Resources</h3>
<ul>
<li><a href="https://support.microsoft.com/en-us/kb/2833707" target="_blank">Troubleshooting automatic failover problems in SQL Server 2012 AlwaysOn environments</a></li>
<li><a href="http://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56-7BF3C672DF9D/Troubleshooting%20SQL%20Server%20AlwaysOn.pdf" target="_blank">Troubleshoot SQL Server AlwaysOn</a></li>
<li><a href="https://msdn.microsoft.com/en-ca/library/ff878308.aspx" target="_blank">Troubleshoot Always On Availability Groups Configuration (SQL Server)</a></li>
<li><a href="https://msdn.microsoft.com/en-us/library/ms189117.aspx" target="_blank">Failover Cluster Troubleshooting guide</a></li>
<li><a href="https://support.microsoft.com/en-us/help/10179/troubleshooting-alwayson-issues" target="_blank">Troubleshooting AlwaysOn Issues</a></li>
</ul>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/sqlserver-error-log-troubleshooting-ha/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">3117</post-id>	</item>
		<item>
		<title>SQL Server Encrypted Backups: Transparent Data Encryption or Backup Encryption</title>
		<link>https://www.edwinmsarmiento.com/sql-server-encrypted-backups-transparent-data-encryption-or-backup-encryption/</link>
		<comments>https://www.edwinmsarmiento.com/sql-server-encrypted-backups-transparent-data-encryption-or-backup-encryption/#comments</comments>
		<pubDate>Mon, 06 Jul 2015 02:53:25 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[backup encryption]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[transparent data encryption]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=1756</guid>

				<description><![CDATA[This particular question came up while I was delivering a workshop last week on the new features in SQL Server 2014. Since transparent data encryption has been available since SQL Server 2008, why would I still need the backup encryption feature? For one, transparent data encryption is an Enterprise Edition-only feature whereas backup encryption exists in [&#8230;]]]></description>
					<content:encoded><![CDATA[<p>This particular question came up while I was delivering a workshop last week on the new features in SQL Server 2014. Since transparent data encryption has been available since SQL Server 2008, why would I still need the backup encryption feature?</p>
<p>For one, transparent data encryption is an Enterprise Edition-only feature whereas backup encryption exists in Standard Edition (I can stop right here and move on to the next topic of discussion.)  The price tag of an Enterprise Edition license is more than enough justification to consider using backup encryption. I&#8217;ve worked with customers in the past who had to use encryption utilities like <a href="http://truecrypt.sourceforge.net/" target="_blank">TrueCrypt</a> and <a href="https://www.gnupg.org/" target="_blank">GnuPG</a> to encrypt their backups because they do not have Enterprise Edition. When customers have Enterprise Edition, my default recommendation is to use transparent data encryption.  I wrote an <a href="http://www.mssqltips.com/sqlservertip/1507/implementing-transparent-data-encryption-in-sql-server-2008/" target="_blank">article</a> back in 2008 about how we can implement transparent data encryption to provide encryption at rest as well as for the backups we take on the databases.</p>
<h3>So, What&#8217;s The Real Difference?</h3>
<p>Both TDE and backup encryption provides encryption &#8211; the former encrypting the MDF/NDF and LDF files together with the backups taken, the latter just the backups. That also means that, whether you use TDE or backup encryption, your database backups will be encrypted. But with backup encryption, only the backups are secured. Try detaching and re-attaching the database files to a different SQL Server instance and you can easily do so. TDE does not allow you to re-attach database files unless the target SQL Server instance has the certificate used to encrypt the database files. Below is a sample workflow and script to test it out (I&#8217;m *stealing* the code from the script in the <a href="http://www.mssqltips.com/sqlservertip/1507/implementing-transparent-data-encryption-in-sql-server-2008/" target="_blank">article.</a>)</p>
<ol>
<li>Create a database master key on the master database<div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><code style="font-size: 14px;"><span style="color: blue;">USE MASTER<br />
</span><span style="color: black;">GO<br />
</span><span style="color: blue;">CREATE MASTER KEY ENCRYPTION BY </span><span style="color: black;">PASSWORD </span><span style="color: blue;">= </span><span style="color: red;">'mY_P@$$w0rd'<br />
</span></code> </div></li>
<li>Create a certificate protected by the master key<div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><code style="font-size: 14px;"><span style="color: blue;">CREATE </span><span style="color: black;">CERTIFICATE NorthwindCert<br />
</span><span style="color: blue;">WITH </span><span style="color: black;">SUBJECT </span><span style="color: blue;">= </span><span style="color: red;">'My DEK Certificate for Northwind database'</span></code> </div></li>
<li>Create sample databases &#8211; one that is encrypted using TDE and one that isn&#8217;t</li>
</ol>
<p>From here on, you can perform the test. We&#8217;ll use the <strong>Northwind_TDE</strong> database as the one that has TDE enabled and the <strong>Northwind_BackupEncryption</strong> as the one that does not have TDE enabled but backups will be encrypted.</p>
<div style="background-color:#eeeeee;border:1px solid #D6D6D6;font-family:arial,helvetica,sans-serif;font-size:15px;line-height:20px;margin:8px 0 20px;padding:15px 20px;"><code style="font-size: 14px;"><span style="color: green;">--Create database encryption key in the database<br />
</span><span style="color: blue;">USE </span><span style="color: black;">Northwind_TDE<br />
GO<br />
</span><span style="color: blue;">CREATE DATABASE ENCRYPTION KEY<br />
WITH </span><span style="color: black;">ALGORITHM </span><span style="color: blue;">= </span><span style="color: black;">AES_128<br />
</span><span style="color: blue;">ENCRYPTION BY </span><span style="color: black;">SERVER CERTIFICATE NorthwindCert<br />
GO</span></code></p>
<p><span style="color: green;">&#8211;Enable TDE on the database<br />
</span><span style="color: blue;">ALTER DATABASE </span><span style="color: black;">Northwind_TDE<br />
</span><span style="color: blue;">SET ENCRYPTION ON</span> </div>
<p><a href="https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1787" src="https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample.jpg" alt="TDE_Sample" width="1175" height="631" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample.jpg 1175w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample-300x161.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample-1024x550.jpg 1024w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample-760x408.jpg 760w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample-518x278.jpg 518w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample-82x44.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample-600x322.jpg 600w" sizes="(max-width: 1175px) 100vw, 1175px" /></a></p>
<p><strong>NOTE:</strong> Make sure you backup the encryption key immediately after enabling TDE on your databases or encrypting your backups. And, don&#8217;t forget to update your disaster recovery strategies.</p>
<p>Now, because the <strong>Northwind_TDE</strong> database has TDE enabled, you can&#8217;t just detach and re-attach it to any SQL Server instance without first restoring the certificate on the target instance. Doing so will throw this error message.</p>
<p><a href="https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample_error_attach.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1788" src="https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample_error_attach.jpg" alt="TDE_Sample_error_attach" width="615" height="209" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample_error_attach.jpg 615w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample_error_attach-300x102.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample_error_attach-518x176.jpg 518w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample_error_attach-82x28.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2015/06/TDE_Sample_error_attach-600x204.jpg 600w" sizes="(max-width: 615px) 100vw, 615px" /></a></p>
<p>We won&#8217;t have this error message when you try to attach the <strong>Northwind_BackupEncryption</strong> database on a different SQL Server instance because it&#8217;s no different from any other user databases. Again, the only thing encrypted will be the backups, not the database. But this would give you the confidence to store your <a href="https://www.edwinmsarmiento.com/from-backup-tape-to-microsoft-azure/" target="_blank">database backups on Microsoft Azure</a> or any other cloud provider. Or, even better, when you need to transfer backups to initialize Availability Group replication, log shipping, database mirroring or replication for a remote data center. I used to rely on either <a href="http://www.winzip.com/win/en/index.htm" target="_blank">WinZip</a> or <a href="http://www.rarlab.com/" target="_blank">WinRar</a> to compress and encrypt backups to initialize log shipping and database mirroring in previous versions of SQL Server. This meant submitting a separate change request just to install these utilities on the remote SQL Server instance. Now, I have both compression and encryption built into SQL Server for this purpose.</p>
<h3>But What if I Only Have Backup Encryption?</h3>
<p>So, you only have Standard Edition and are concerned about your databases being compromised. Sure, you can encrypt your backups, but what about someone with administrative privilege and malicious intent started detaching and copying those database files? It&#8217;s the same reason I wrote <a href="https://www.edwinmsarmiento.com/regularly-treat-your-databases-to-a-s-p-a" target="_blank">this blog post</a> &#8211; I have the same concerns as you do.</p>
<p>This is where the principle of <a href="https://en.wikipedia.org/wiki/Defense_in_depth_(computing)" target="_blank">defense in-depth</a> comes in. As a SQL Server DBA, it is our responsibility to make sure that our databases are secure. We need to provide layers upon layers of protection to minimize, if not avoid these types of security breaches. Limiting access to both the host operating system and the SQL Server instance, coupled with auditing access can prevent unauthorized access.</p>
<h3>Practice Your Database Recovery Strategies</h3>
<p>The beauty of this feature is that you can restore your databases to lower editions like Web or Express Editions. Although you have a database size limitation of 10 GB for Express Editions, it still is a good opportunity to test restoring databases from encrypted backups to make sure that we still meet our recovery objectives.</p>
<h4><em>Additional Resources:</em></h4>
<ul>
<li><a href="https://msdn.microsoft.com/en-ca/library/dn449489(v=sql.120).aspx" target="_blank">SQL Server 2014 Backup Encryption</a></li>
<li><a href="https://msdn.microsoft.com/en-ca/library/bb934049.aspx" target="_blank">SQL Server Transparent Data Encryption</a></li>
<li><a href="http://www.mssqltips.com/sqlservertip/1507/implementing-transparent-data-encryption-in-sql-server-2008/" target="_blank">Implementing Transparent Data Encryption in SQL Server 2008</a> (still applies to later versions)</li>
</ul>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/sql-server-encrypted-backups-transparent-data-encryption-or-backup-encryption/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">1756</post-id>	</item>
		<item>
		<title>University of the Philippines and the Mindset of Entitlement</title>
		<link>https://www.edwinmsarmiento.com/university-of-the-philippines-and-the-mindset-of-entitlement/</link>
		<comments>https://www.edwinmsarmiento.com/university-of-the-philippines-and-the-mindset-of-entitlement/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 00:35:29 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[Integrity]]></category>
		<category><![CDATA[Leadership Lessons]]></category>
		<category><![CDATA[Positive Mindset]]></category>
		<category><![CDATA[Success]]></category>
		<guid isPermaLink="false">http://bassplayerdocs.wordpress.com/?p=899</guid>

				<description><![CDATA[&#160; University of the Philippines Oblation by randyg &#8220;With rights come responsibilities. If we aren&#8217;t willing to take responsibilities, how dare we claim the rights.&#8221;  I&#8217;m rarely vocal about my political views for &#8220;fear&#8221; of being branded as a leftist (I used the word fear because leaders are not immune to the feeling: they just [&#8230;]]]></description>
					<content:encoded><![CDATA[<a href="https://www.edwinmsarmiento.com/university-of-the-philippines-and-the-mindset-of-entitlement/"><img width="500" height="372" src="https://www.edwinmsarmiento.com/wp-content/uploads/2013/03/Oblation.jpg" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2013/03/Oblation.jpg 500w, https://www.edwinmsarmiento.com/wp-content/uploads/2013/03/Oblation-300x223.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2013/03/Oblation-82x61.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2013/03/Oblation-131x98.jpg 131w" sizes="(max-width: 500px) 100vw, 500px" /></a><p>&nbsp;</p>
<p style="text-align: center;"><strong><em>University of the Philippines Oblation </em></strong><em>by</em><strong><em> <a href="http://www.flickr.com/photos/randyg/">randyg</a></em></strong></p>
<p style="text-align: center;"><em>&#8220;With rights come responsibilities. If we aren&#8217;t willing to take responsibilities, how dare we claim the rights.&#8221; </em></p>
<p>I&#8217;m rarely vocal about my political views for &#8220;<strong>fear</strong>&#8221; of being branded as a leftist (I used the word fear because leaders are not immune to the feeling: they just know how to deal with it.) When I was in the university, I was almost always associated with the leftist primarily because of what I wear and who I hang out with. Most people know me as somebody who&#8217;s passionate about my country &#8211; the Philippines &#8211; even when I was still a kid. And I consider myself as an &#8220;unofficial Philippine ambassador.&#8221;</p>
<p>Last Friday, I noticed several media personnel in the University of the Philippines (UP) (Manila campus.) I wasn&#8217;t aware of any issues surrounding the premiere state university in the country because I try to avoid reading the news. I was intrigued. When I got back home, the first thing that I did was check the <a href="http://ph.news.yahoo.com/up-manila-student-takes-own-life-070555702.html" target="_blank">news</a>. It turns out that there was a freshman university student who committed suicide because she was forced to take a leave of absence for failure to pay tuition fees. This became instant news, especially with the upcoming senatorial elections in May of this year. A friend of mine posted a very intriguing question on Facebook regarding the incident: <strong>is the University of the Philippines for (a) Poor Pinoy students, (b) Academically Excellent Pinoy students or (c) Academically Excellent Poor Pinoy students? </strong>I responded. Not because I wanted to defend my alma mater. I wanted others to understand that there was a much deeper issue that had to be dealt with. It was an issue of the heart. An issue of entitlement. It&#8217;s sad to hear about the loss of a loved one. More sad to realize that people are blaming the system without first looking for answers from within. Some say the student was killed by the system. Others say she was a victim of  a repressive policy that wasn&#8217;t in favor of education as a right. A characteristic of <strong>true leadership</strong> is taking responsibilities for any actions done. Below was my response to the question.<strong> </strong></p>
<p><em>I try to avoid telling others that I went to University of the Philippines (Diliman campus) primarily because (a) I failed &#8220;17 courses&#8221; in my undergraduate program and (b) nobody wanted to hire me because of the former  Now, when the UP system was founded back in 1908, the ultimate goal was to provide a high quality of education to the Filipino people. Nowhere in the original goal did it mention that it was for &#8220;anybody poor.&#8221; The system has evolved into what it is today primarily because it was partly subsidized by the government. With the economic journey of the Philippines after World War II, where it used to be a first-world country in Southeast Asia, most people in the government took advantage of the UP system as a means to advance their political career. Because there was an increase in the population of those living below the poverty line, the UP STFAP was born. The UP STFAP program was conceived in the late 80s, following the People Power revolution. This was the time where there was an increasing gap between the rich and the poor. This created an ever increasing &#8220;entitlement mindset&#8221; among those who are poor-yet-deserving students to go to the UP system. The very reason why tuition in the UP system is way higher than the other state universities is because they subsidize other state universities. So, to answer your question, the UP system is for the academically excellent Filipino students, regardless of economic status. For those who feel that they deserve to go to UP, go ahead and prove that they indeed deserve to go there. I couldn&#8217;t afford a UP education because it was relatively expensive for me. I had a choice between not pursuing a university degree (cheaper,) going to other state universities (a little more costly,) going to other private institutions (most expensive) or going to UP (bordering between cheap and expensive.) I chose to go to UP. I fought to stay in UP. I sacrificed a lot to go to UP. Now, do I deserve to go to UP because I was poor? Absolutely not! But I made a choice to go there, stay there and earn my university degree for there no matter what. I knew how it felt like to go from UP STFAP&#8217;s bracket E1 to bracket A (during my time, the UP STFAP used a numeric system for the brackets.) I knew how it felt like to scour for funds to finish my degree regardless of what my STFAP&#8217;s status was. Education, I believe, should be a right. </em></p>
<p style="text-align: center;"><hr /><p><em>With rights come responsibilities.If we aren’t willing to take responsibilities,how dare we claim the rights.</em><br /><a href='https://x.com/intent/tweet?url=https%3A%2F%2Fwww.edwinmsarmiento.com%2F%3Fp%3D899&#038;text=With%20rights%20come%20responsibilities.If%20we%20aren%E2%80%99t%20willing%20to%20take%20responsibilities%2Chow%20dare%20we%20claim%20the%20rights.&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br /><hr /></p>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/university-of-the-philippines-and-the-mindset-of-entitlement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">899</post-id>	</item>
		<item>
		<title>No Drives Found error installing CentOS 5.2 on VMWare</title>
		<link>https://www.edwinmsarmiento.com/no-drives-found-error-installing-centos-5-2-on-vmware/</link>
		<comments>https://www.edwinmsarmiento.com/no-drives-found-error-installing-centos-5-2-on-vmware/#comments</comments>
		<pubDate>Thu, 21 May 2009 00:46:00 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[VMWare]]></category>
		<guid isPermaLink="false">http://bassplayerdoc.wordpress.com/2009/05/21/no-drives-found-error-installing-centos-5-2-on-vmware</guid>

				<description><![CDATA[Ok, so this is not my typical blog post that talks about anything Microsoft but it still is technology so it makes a good blog post. I was installing CentOS 5.2 on a VMWare Workstation image when I suddenly hit a wall with this error No Drives Found An error has occurred &#8211; no valid [&#8230;]]]></description>
					<content:encoded><![CDATA[<p><span style="font-family:arial;">Ok, so this is not my typical blog post that talks about anything Microsoft but it still is technology so it makes a good blog post.</span></p>
<p>I was installing CentOS 5.2 on a VMWare Workstation image when I suddenly hit a wall with this error</p>
<p><span style="font-weight:bold;font-style:italic;font-family:lucida grande;color:#cc0000;">No Drives Found</span><br />
<span style="font-weight:bold;font-style:italic;font-family:lucida grande;color:#cc0000;">An error has occurred &#8211; no valid devices were found on which to create new file systems. Please check your hardware for the cause of this problem. </span></p>
<p>Now, this isn&#8217;t the first time I&#8217;m installing CentOS on a virtual machine nor on a physical hardware but it definitely is the first time to install version 5.2. Back in the old versions, everything was pretty straight-forward and that I had never encountered this error message before. I was beginning to be tempted to use an iSCSI disk for the installation with another virtualized iSCSI disk but I wouldn&#8217;t want to go down that road unless I will be configuring this virtual machine as a clustered server. Having searched thru a ton of newsgroup and blog posts on similar issues, a few of them mentioned changing the Operating System to <span style="font-size:85%;"><span style="font-weight:bold;">Red Hat Enterprise Linux</span></span> or <span style="font-size:85%;"><span style="font-weight:bold;">Other Linux 2.4.x kernel</span></span> to make it work. I did find a recommendation to change the virtual disk from SCSI (which happens to be the default setting when you configure your virtual machine) to IDE. That did the trick, although I needed to create a new virtual machine in the process which was the quickest way to do it.</p>
<p>So, remember &#8211; use an IDE disk in your VMWare image when installing CentOS 5.2</p>
<div class="blogger-post-footer"><img loading="lazy" alt="" width="1" height="1" /></div>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/no-drives-found-error-installing-centos-5-2-on-vmware/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">188</post-id>	</item>
		<item>
		<title>&gt;The pitfalls of ROBOCOPY</title>
		<link>https://www.edwinmsarmiento.com/the-pitfalls-of-robocopy/</link>
		<comments>https://www.edwinmsarmiento.com/the-pitfalls-of-robocopy/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 04:03:00 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://bassplayerdoc.wordpress.com/2007/10/08/the-pitfalls-of-robocopy</guid>

				<description><![CDATA[&#62;I have been using ROBOCOPY for a lot of reasons &#8211; Home folder replication for disaster recovery purposes, file-copy utility for custom transaction log shipping for SQL Server, etc. It has been a very useful tool for me, especially when you talk about disaster recovery. But what a lot of people do not realize is [&#8230;]]]></description>
					<content:encoded><![CDATA[<p>&gt;<span style="font-family:arial;">I have been using <strong><span style="font-size:85%;">ROBOCOPY</span></strong> for a lot of reasons &#8211; Home folder replication for disaster recovery purposes, file-copy utility for custom transaction log shipping for SQL Server, etc.  It has been a very useful tool for me, especially when you talk about disaster recovery.  But what a lot of people do not realize is that this will become a very big headache if not used properly.  One scenario I have seen is a database log file being replicated over to another server. Database log files are being locked by the service or application responsible for running the database engine.  In this case, depending on how it is configured, <strong><span style="font-size:85%;">ROBOCOPY</span></strong> will try execute the copy command until such time that it can do so.  Now what will happen if it cannot copy the file due to a lock caused by the service? It will enter an infinite loop.  And if you&#8217;re like me who likes to log every activity done by any utility or script, you will configure <strong><span style="font-size:85%;">ROBOCOPY</span></strong> to do so as well. When this happens, the log file generated will become so huge that it would be very difficult to open with Notepad. Just a word of caution when using <strong><span style="font-size:85%;">ROBOCOPY</span></strong> &#8211; DO NOT use the utility on files that are being locked or used by services or applications. </span></p>
<div class="blogger-post-footer"><img width='1' height='1' src='' alt='' /></div>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/the-pitfalls-of-robocopy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">19</post-id>	</item>
	</channel>
</rss>