<?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 SarmientoImplementing Instant File Initialization on SQL Server with SMB File Share &#8211; Edwin M Sarmiento</title>
	<atom:link href="https://www.edwinmsarmiento.com/implementing-ifi-on-sql-server-with-smb-file-share/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>Implementing Instant File Initialization on SQL Server with SMB File Share</title>
		<link>https://www.edwinmsarmiento.com/implementing-ifi-on-sql-server-with-smb-file-share/</link>
		<comments>https://www.edwinmsarmiento.com/implementing-ifi-on-sql-server-with-smb-file-share/#comments</comments>
		<pubDate>Tue, 26 Apr 2016 17:28:36 +0000</pubDate>
		<dc:creator>Edwin M Sarmiento</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[file share]]></category>
		<category><![CDATA[instant file initialization]]></category>
		<category><![CDATA[SMB]]></category>
		<guid isPermaLink="false">http://www.edwinmsarmiento.com/?p=2634</guid>

				<description><![CDATA[We were taught early on that when you heat water to 212 F (100 C,) it starts to boil. Oh, those memorable science experiments we did in high school. We put a thermometer in a water-filled flask and light up a burner to heat the water in the flask. We watch as the thermometer records the temperature [&#8230;]]]></description>
					<content:encoded><![CDATA[<img width="626" height="626" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937.jpg" class="featured-image wp-post-image" alt="" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937.jpg 626w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937-150x150.jpg 150w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937-300x300.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937-35x35.jpg 35w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937-400x400.jpg 400w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937-82x82.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/descending-temperature-on-thermometer-tool_318-61937-600x600.jpg 600w" sizes="(max-width: 626px) 100vw, 626px" /><p>We were taught early on that when you heat water to 212 F (100 C,) it starts to boil. Oh, those memorable science experiments we did in high school. We put a thermometer in a water-filled flask and light up a burner to heat the water in the flask. We watch as the thermometer records the temperature of the heated water. We see it. We believe it. And we called it science. Until a friend told me otherwise. He lived in the mountains and explained that my statement about the boiling point of water is partially &#8211; not completely &#8211; true. Because the boiling point of water &#8211; or any liquid, for that matter &#8211; is not just dependent on the temperature but also the atmospheric pressure. I wished they taught <a href="https://en.wikipedia.org/wiki/Phase_diagram" target="_blank">Phase Diagrams</a> in high school.</p>
<p>There are a lot of documentation, blog posts, tutorials, etc. about how you can configure <a href="https://msdn.microsoft.com/en-us/library/ms175935.aspx" target="_blank">database instant file initialization</a>. <a href="https://www.mssqltips.com/sqlservertip/1572/configuring-windows-instant-file-initialization-for-sql-server-2005/" target="_blank">I even wrote one back in 2008</a>. It&#8217;s one of those performance hacks that you can implement on your SQL Server database to skip past zeroing out the data files when performing file operations. If you&#8217;ve been working with SQL Server for a while, you know that this is a recommended best practice &#8211; grant the <strong><span style="color: #800000;">Perform Volume Maintenance Task</span></strong> permission to the SQL Server service account.</p>
<h2>Did the Atmospheric Pressure Change?</h2>
<p>SQL Server database files have always been stored on storage subsystems that have direct relationships with the host operating system &#8211; direct attached storage (DAS,) storage area networks (SAN,) volume mount points, shared storage for failover clusters, etc. So, when we refer to file system permissions, we look at the host operating system as a point of reference. Granting the SQL Server service account the <span style="color: #800000;"><strong>Perform Volume Maintenance Task</strong></span> permission? Open the &#8220;<em><strong><span style="color: #800000;">Local</span>&#8221; Security Policy</strong></em> management console (emphasis mine.)</p>
<p><a href="https://msdn.microsoft.com/en-us/library/hh759341.aspx" target="_blank">SQL Server 2012 introduced the option to store database files on a Server Message Block (SMB) file share</a>. This means that you can create databases on a file share &#8211; be it a standalone instance or a failover clustered instance. In the past, we probably wouldn&#8217;t even consider storing database files on SMB file shares due to the latency. But the <a href="https://technet.microsoft.com/library/hh831795.aspx" target="_blank">improvements in the SMB protocol as of Windows Server 2012</a> have made it possible to run low latency workloads like SQL Server.</p>
<p>But this also means that what we used to do to enable database instant file initialization may no longer apply because the file system is no longer considered local to the host operating system. In fact, the installation process will give you an idea about file system permissions when you decide to configure SQL Server to store database files on SMB file shares.</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/SQLServer-SMB.jpg"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-2643" src="https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/SQLServer-SMB.jpg" alt="SQLServer-SMB" width="620" height="164" srcset="https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/SQLServer-SMB.jpg 620w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/SQLServer-SMB-300x79.jpg 300w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/SQLServer-SMB-518x137.jpg 518w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/SQLServer-SMB-82x22.jpg 82w, https://www.edwinmsarmiento.com/wp-content/uploads/2016/04/SQLServer-SMB-600x159.jpg 600w" sizes="(max-width: 620px) 100vw, 620px" /></a></p>
<p>To create the database files on the SMB file share, we need to grant the <span style="color: #800000;"><em><strong>full control share permissions on the remote file system</strong></em></span> or the database creation process will fail.</p>
<h2>Let&#8217;s Change the Temperature</h2>
<p>You can grant the <strong><span style="color: #800000;">Perform Volume Maintenance Task</span></strong> permission to the SQL Server service account all you want on the machine running SQL Server and you won&#8217;t see any difference. That&#8217;s because the permissions that you need to get database instant file initialization going need to apply on the host running the storage subsystem. For example, if you are installing SQL Server on a machine named <strong>SQL01</strong> and the database files will be stored on a file share with host named <strong>HA-FileShare</strong>, here are several things that you need.</p>
<ol>
<li><strong>The machine hosting the file share should to be joined to an Active Directory domain</strong>. From a security perspective, it&#8217;s easier to manage computers and user accounts when they are joined to an Active Directory domain. The machine hosting the file share will have to be joined to an Active Directory domain if you will be installing a SQL Server failover clustered instance.</li>
<li><strong>The SQL Server service account should be granted the Full Control NTFS and share permissions on the file share</strong>. Remember, it will be the SQL Server service account performing the file system operations. So, it needs the appropriate permissions on the file share.</li>
<li><strong>The SQL Server service account should be granted the Perform Volume Maintenance Tasks permission on the remote machine. </strong>That&#8217;s right. When you run the Local Security Policy management console to grant the <span style="color: #800000;"><strong>Perform Volume Maintenance Task</strong></span> permission on the SQL Server service account, you have to do it on the remote machine running the file share. In this example, it should be done on the host <strong>HA-FileShare </strong>not on the host <strong>SQL01.</strong> That&#8217;s because the file system is local to <strong>HA-FileShare</strong>.<strong> </strong></li>
<li><strong>Either restart the SQL Server service or reboot the remote machine</strong>. This is to make sure that the permissions are properly applied. We usually restart the SQL Server service for this to take effect. But since the permissions are applied on a remote machine, you could also reboot the remote machine hosting the file share. I wouldn&#8217;t recommend that approach especially if the file share is hosting other mission-critical applications.</li>
</ol>
<p>New features introduced in SQL Server can force us to learn new things. But understanding how the features work and the fundamentals behind them can help make implementation a lot easier. It&#8217;s one of the reasons I like going back to the basics.</p>
<p style="text-align: center;"><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;"><strong></p>
<h1>IF YOU ENJOYED THIS POST, GET MORE UPDATES STRAIGHT TO YOUR INBOX.</h1>
<p></strong> <br /><CENTER><script>(function() {
	window.mc4wp = window.mc4wp || {
		listeners: [],
		forms: {
			on: function(evt, cb) {
				window.mc4wp.listeners.push(
					{
						event   : evt,
						callback: cb
					}
				);
			}
		}
	}
})();
</script><!-- Mailchimp for WordPress v4.12.2 - https://wordpress.org/plugins/mailchimp-for-wp/ --><form id="mc4wp-form-1" class="mc4wp-form mc4wp-form-2722" method="post" data-id="2722" data-name="Subscribe" ><div class="mc4wp-form-fields"><p>
    <input type="text" name="FNAME" placeholder="First Name" required> &nbsp;&nbsp;
	<input type="email" name="EMAIL" placeholder="Your email address" required /> &nbsp;&nbsp;
	<input type="submit" value="Keep me updated!" />
</p></div><label style="display: none !important;">Leave this field empty if you're human: <input type="text" name="_mc4wp_honeypot" value="" tabindex="-1" autocomplete="off" /></label><input type="hidden" name="_mc4wp_timestamp" value="1780664910" /><input type="hidden" name="_mc4wp_form_id" value="2722" /><input type="hidden" name="_mc4wp_form_element_id" value="mc4wp-form-1" /><div class="mc4wp-response"></div></form><!-- / Mailchimp for WordPress Plugin --></CENTER></div></p>
]]></content:encoded>
			

		<wfw:commentRss>https://www.edwinmsarmiento.com/implementing-ifi-on-sql-server-with-smb-file-share/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
				<post-id xmlns="com-wordpress:feed-additions:1">2634</post-id>	</item>
	</channel>
</rss>