SQL  Server 2019 brings a very exciting new feature that was long  overdue.  Resumable Online Index Creation is one of my favorite new  things. This,  when paired with Resumable Index Rebuilds introduced with SQL Server  2017, really gives database administrators much more control over the  index processes.
Have   you ever started to build a new index on very large table only to have   users call and complain their process is hung, not completing, or sthe   ystem is slow? That’s when you realize you’re the cause because you   tried to sneak in a new index. I have many times; because creating a new   index can impact the performance and can be a problematic process for   users when you have no or little downtime windows available. When you   kill the create process, it rolls back requiring you to start from the   beginning the next time. With resumable Online Index Creation, now you   have the ability to pause and restart the build at the point it was   paused. You can see where this can be very handy.
To use this option for creating the index, you must include "RESUMABLE=ON".
CREATE INDEX MyResumableIndex on MyTable (MyColumn) WITH (ONLINE=ON, RESUMABLE=ON, MAX_DURATION=30)  
Let’s   say you have only two 30-minute windows available to create this new   index over the next two days. You could use the MAX_DURATION option with   the new RESUMABLE=ON to specify the time interval for an index being   built. Once the 30 minutes time is up, the index building automatically   gets paused if it has not completed. When you’re ready the next day,  you  can RESUME right where it left off, allowing you to complete the   process. Very cool.
Another  added benefit is managing transaction  log growth. As we all know,  creating indexes, especially large ones,  can cause hefty log growth  events and can unfortunately lead to running  out of disk space. This  new functionality allows us to better manage  that. We can now pause the  process and truncate or backup the log mid  process building the index  in chunks.
In the  case of when you  create an index only to get complaints from users or  manage your log  growth, you can simply do the below to PAUSE and  restart it when a time  is better, or your transaction log maintenance  has completed.
You can KILL the SPID creating the index or run the below.
ALTER INDEX MyResumableIndex ON MyTable PAUSE;  
To restart -
ALTER INDEX MyResumableIndex on MyTable RESUME; Or simply re-execute your CREATE INDEX statement  
According to MSDN, Resumable online index create supports the follow scenarios:
- Resume   an index creation operation after an index create failure, such as   after a database failover or after running out of disk space.
- Pause   an ongoing index creation operation and resume it later allowing to   temporarily free system resources as required and resume this operation   later.
- Create  large indexes without using as much log space and a  long-running  transaction that blocks other maintenance activities and  allows log  truncation.
Note
 SORT_IN_TEMPDB=ON is not supported when using RESUMABLE=ON
Once  you pause it, how do you know how far the index got and how much is left  to be created? With the Resumable REBUILD Index feature added in SQL  Server 2017, we have also got a new sys.index_resumable_operations  system view. This view shows us the percentage complete, current state,  start time, and last pause time. I am very excited about this new Index  Create feature. I think this is a big WIN for SQL Server 2019.

HostForLIFE.eu SQL Server 2016 Hosting
HostForLIFE.eu     is European Windows Hosting Provider which focuses on Windows   Platform   only. We deliver on-demand hosting solutions including Shared   hosting,   Reseller Hosting, Cloud Hosting, Dedicated Servers, and IT   as a  Service  for companies of all sizes.
 
