{"id":1533,"date":"2014-02-05T09:00:00","date_gmt":"2014-02-05T17:00:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/"},"modified":"2024-01-22T22:49:02","modified_gmt":"2024-01-23T06:49:02","slug":"database-backup-with-memory-optimized-tables","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/","title":{"rendered":"Database Backup with Memory-Optimized Tables"},"content":{"rendered":"<p>The memory-optimized tables are backed up as part of regular database backups so you don\u2019t need to do anything special to manage backups on databases with memory-optimized tables. Like for disk-based tables, the CHECKSUM of data\/delta files is validated as part of database backup to proactively detect any storage corruption. However, as described in the blog <a href=\"http:\/\/blogs.technet.com\/b\/dataplatforminsider\/archive\/2014\/01\/16\/storage-allocation-and-management-for-memory-optimized-tables.aspx\">storage allocation and management<\/a>, the storage used by memory-optimized tables can be much larger than its footprint in the memory. \u00a0A full backup of a database with one or more memory-optimized tables consist of the allocated storage for disk-based tables, active transaction log and the data\/delta file pairs (i.e. checkpoint file pairs) for memory-optimized tables. This blog focuses on the size of database backups that you can expect in database with memory-optimized tables. \u00a0<\/p>\n<h2>Full Database Backup<\/h2>\n<p>For the discussion here, we will focus on the database backups for databases with just durable memory-optimized tables because the backup part for the disk-based tables is the same irrespective of the existence of memory-optimized tables. The data\/delta file pairs, also referred to as Checkpoint File Pairs or CFPs residing in the filegroup could be in various states at a given time. Please refer to <a href=\"http:\/\/blogs.technet.com\/b\/dataplatforminsider\/archive\/2014\/01\/22\/merge-operation-in-memory-optimized-tables.aspx\">merge-operation-in-memory-optimized-tables<\/a> for details. The table below describes what part of the files is backed up both in CTP2 and in RTM. \u00a0<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td width=\"208\" valign=\"top\">  <b>CFP State<\/b>  <\/td>\n<td width=\"208\" valign=\"top\">\n<p><b>Backup in CTP2<\/b><\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p><b>Backup in RTM<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>PRECREATED<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata only<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata only<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>UNDER CONSTRUCTION<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + allocated bytes<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata only<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>ACTIVE<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + allocated bytes<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + used bytes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>MERGE SOURCE<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + allocated bytes<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + used bytes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>MERGE TARGET<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + allocated bytes<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata only<b><\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>REQUIRED FOR BACKUP\/HA<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + allocated bytes<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + used bytes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>IN TRANSITION TO TOMBSTONE<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + allocated bytes<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata only<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"208\" valign=\"top\">\n<p>TOMBSTONE<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata + allocated bytes<\/p>\n<\/td>\n<td width=\"208\" valign=\"top\">\n<p>File metadata only<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>Table &#8211; 1: CFP and Database Backup<\/em><\/p>\n<p>You will find that the size of database backup in SQL Server 2014 RTMis relatively smaller than what you had in CTP2.<\/p>\n<p>Let us walk through a few examples to show the size of the backups. All these examples are based on the following database and the table schema using pre-RTM bits. The state of checkpoint file pairs (i.e. CFPs) in the example here please refer to the blog <a href=\"http:\/\/blogs.technet.com\/b\/dataplatforminsider\/archive\/2014\/01\/23\/state-transition-of-checkpoint-files-in-databases-with-memory-optimized-tables.aspx\">state-transition-of-checkpoint-files-in-databases-with-memory-optimized-tables<\/a>.<\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">CREATE DATABASE<\/span> imoltp<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;color:#0000ff;\">GO<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">ALTER DATABAS<\/span>E imoltp <span style=\"color:#0000ff;\">ADD FILEGROUP<\/span> imoltp_mod <span style=\"color:#ff00ff;\">CONTAINS<\/span> MEMORY_OPTIMIZED_DATA<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">ALTER DATABAS<\/span>E imoltp<span style=\"color:#0000ff;\"> ADD FILE<\/span> (name=<span style=\"color:#ff0000;\">&#8216;imoltp_mod&#8217;<\/span>, <span style=\"color:#0000ff;\">filename<\/span>=<span style=\"color:#ff0000;\">&#8216;c:dataimoltp_mod&#8217;<\/span>)<span style=\"color:#0000ff;\"> TO FILEGROUP<\/span> imoltp_mod<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;color:#0000ff;\">GO<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">use<\/span> imoltp<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;color:#0000ff;\">go<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;color:#339966;\">&#8212; create the table with each row around 8K<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">CREATE TABLE<\/span> dbo.t_memopt (<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 c1 <span style=\"color:#0000ff;\">int<\/span> NOT NULL,<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 c2 <span style=\"color:#0000ff;\">char<\/span>(40) NOT NULL,<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 c3 <span style=\"color:#0000ff;\">char<\/span>(8000) NOT NULL,<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color:#0000ff;\">CONSTRAINT<\/span> [pk_t_memopt_c1] <span style=\"color:#0000ff;\">PRIMARY KEY NONCLUSTERED HASH<\/span> (c1)<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH<\/span> (<span style=\"color:#0000ff;\">BUCKET_COUNT<\/span> = 100000)<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\">) <span style=\"color:#0000ff;\">WITH<\/span> (<span style=\"color:#0000ff;\">MEMORY_OPTIMIZED<\/span> = <span style=\"color:#0000ff;\">ON<\/span>, <span style=\"color:#0000ff;\">DURABILITY<\/span> = SCHEMA_AND_DATA)<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;color:#0000ff;\">Go<\/span><\/p>\n<p>We will use the following query to look at the states of CFPs<\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">select<\/span> file_type_desc, <span style=\"color:#0000ff;\">state<\/span>, state_desc, internal_storage_slot,file_size_in_bytes, file_size_used_in_bytes, inserted_row_count, deleted_row_count, lower_bound_tsn, upper_bound_tsn<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">from<\/span> <span style=\"color:#339966;\">sys<\/span>.dm_db_xtp_checkpoint_files<\/span><\/p>\n<p><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">order by<\/span> file_type_desc, upper_bound_tsn<\/span><\/p>\n<h3>Example-1: Backup a database with no rows in memory-optimized tables<\/h3>\n<ul>\n<li>Checkpoint files \u2013 Since I am running on a machine with &lt; 8 cores with &lt; 16GB of physical memory, I have 8 CFPs in \u2018PRECREATED\u2019 state with 16MB sized data file and 1MB sized delta file. There is 1 CFP in \u2018UNDER CONSTRUCTION\u2019. Please refer to blog <a href=\"http:\/\/blogs.technet.com\/b\/dataplatforminsider\/archive\/2014\/01\/23\/state-transition-of-checkpoint-files-in-databases-with-memory-optimized-tables.aspx\">state-transition-of-checkpoint-files-in-databases-with-memory-optimized-tables<\/a>.<\/li>\n<\/ul>\n<ul>\n<li><i>Backup Command:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP DATABASE<\/span> [imoltp] <span style=\"color:#0000ff;\">TO<\/span> DISK = <span style=\"color:#ff0000;\">N&#8217;C:dataimoltp-empty-data.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-Full Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>,<span style=\"color:#339966;\">STATS<\/span> = 10<\/span><\/p>\n<ul>\n<li>\n<i>Result: <\/i>The size of the full database backup is around 5.3MB.\u00a0 As you can see even though the total storage taken on the disk is (16MB*9) + (1MB*9) = 153MB, but the size of the backup is much smaller. Other thing to note is that even though there are no data rows inserted, still significant storage (i.e. 144 MB) was taken primarily because of the fixed storage overhead.<\/li>\n<\/ul>\n<h3>Example-2: Backup the database after loading 8000 rows<\/h3>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#339966;\">&#8212; load 8000 rows. This should use 5 16MB files<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">declare<\/span> @i <span style=\"color:#0000ff;\">int<\/span> = 0<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">while<\/span> (@i &lt; 8000)<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">begin<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color:#0000ff;\">insert<\/span> t_memopt <span style=\"color:#0000ff;\">values<\/span> (@i, <span style=\"color:#ff0000;\">&#8216;a&#8217;<\/span>, replicate (<span style=\"color:#ff0000;\">&#8216;b&#8217;<\/span>, 8000))<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color:#0000ff;\">set<\/span> @i += 1;<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">end<\/span><\/p>\n<p style=\"margin-left:30px;\">Checkpoint files: Besides 8 CFPs in \u2018PRECREATED\u2019, there are now 5 CFPs \u2018UNDER CONSTRUCTION\u2019, each storing up to 1870 rows, to contain the 8000 data rows just inserted. Please refer to blog <a href=\"http:\/\/blogs.technet.com\/b\/dataplatforminsider\/archive\/2014\/01\/23\/state-transition-of-checkpoint-files-in-databases-with-memory-optimized-tables.aspx\">state-transition-of-checkpoint-files-in-databases-with-memory-optimized-tables<\/a>.<\/p>\n<ul>\n<li><i>Backup Command:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP DATABASE<\/span> [imoltp] <span style=\"color:#0000ff;\">TO\u00a0 DISK<\/span> = N&#8217;C:dataimoltp-full-data.bak&#8217;<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = N&#8217;imoltp-Full Database Backup&#8217;, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<ul>\n<li><i>Output:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 304 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 0 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_mod&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">10 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">20 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed543 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_log&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">100 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">BACKUP DATABASE successfully processed 8847 pages in 1.191 seconds (58.027 MB\/sec).<\/span><\/p>\n<ul>\n<li>\n<i>Result: <\/i>The size of the full database backup is around 73.5MB.\u00a0 Note that the size of the transactional log is 70MB and there is no data actually backed up because the CFPs are either in \u2018PRECREATED\u2019 or \u2018UNDER CONSTRUCTION\u2019 as show in the Table-1. The data is only guaranteed to be in the data\/delta files after CFP transitions into \u2018ACTIVE\u2019 state.<\/li>\n<\/ul>\n<h3>Example-3: Backup the database after taking an explicit checkpoint<\/h3>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#339966;\">&#8212; do an manual checkpoint<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">checkpoint<\/span><\/p>\n<ul>\n<li>Checkpoint files: Besides 8 CFPs in \u2018PRECREATED\u2019, there are now 5 CFPs with state \u2018ACTIVE\u2019. The manual checkpoint transitions the CFPs in \u2018UNDER CONSTRUCTION\u2019 state to \u2018ACTIVE\u2019.<\/li>\n<\/ul>\n<ul>\n<li><i>Backup Command:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; the backup will include full log and the data. So the size is double &#8211; 138MB<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP DATABASE<\/span> [imoltp] <span style=\"color:#0000ff;\">TO<\/span> DISK = <span style=\"color:#ff0000;\">N&#8217;C:dataimoltp-full-data-chkpt.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-Full Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">GO<\/span><\/p>\n<ul>\n<li><i>Output:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 304 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">10 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">20 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 8064 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_mod&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">30 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">40 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 8548 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_log&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">100 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">BACKUP DATABASE successfully processed 16916 pages in 1.872 seconds (70.594 MB\/sec).<\/span><\/p>\n<ul>\n<li>\n<i>Result: <\/i>The size of the full database backup is around 138MB. It consists of 70MB of transaction log and also 66MB (8064 8k pages) of contents from data\/delta files. \u00a0<\/li>\n<\/ul>\n<h3>Example-4: Backup the database after deleting 50% rows and merging the CFPs<\/h3>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; now delete 50% rows<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">declare<\/span> @i<span style=\"color:#0000ff;\"> int<\/span> = 0<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">while<\/span> (@i &lt;= 8000)<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">begin<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color:#0000ff;\">delete<\/span> t_memopt <span style=\"color:#0000ff;\">where<\/span> c1 = @i<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color:#0000ff;\">set<\/span> @i += 2;<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">end<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">checkpoint<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; Do the manual merge. It generates merge-target and other files stay as regular files<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; The transaction range here is picked up by querying the DMV<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; sys.dm_db_xtp_checkpoint_files. Please find the appropriate range for your test.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212;<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">exec<\/span> sys.sp_xtp_merge_checkpoint_files <span style=\"color:#ff0000;\">&#8216;imoltp&#8217;<\/span>,\u00a0 1877, 12004<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">go<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; This installs the merge leading to 5 CFPs as MERGE SOURCE and the merge target<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; transitions to ACTIVE state<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"color:#0000ff;font-family:'courier new', courier;\">Checkpoint<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"color:#0000ff;font-family:'courier new', courier;\">go<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP DATABASE<\/span> [imoltp]<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">TO<\/span> DISK = <span style=\"color:#ff0000;\">N&#8217;C:dataimoltp-full-data-chkpt-del50-merge-chkpt.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-Full Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"color:#0000ff;font-family:'courier new', courier;\">GO<\/span><\/p>\n<ul>\n<li>Checkpoint files: Besides 8 CFPs in \u2018PRECREATED\u2019, there are now 5 CFPs with state \u2018MERGE SOURCE\u2019 and 2 CFPs as \u2018ACTIVE\u2019.<\/li>\n<\/ul>\n<ul>\n<li><i>Backup Command:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; the backup will include full log and the data.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP DATABASE<\/span> [imoltp] <span style=\"color:#0000ff;\">TO<\/span> DISK = <span style=\"color:#ff0000;\">N&#8217;C:dataimoltp-full-data-chkpt.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-Full Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">GO<\/span><\/p>\n<ul>\n<li><i>Output:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 304 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">10 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">20 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 12143 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_mod&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">30 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">40 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 8815 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_log&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">100 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">BACKUP DATABASE successfully processed 21262 pages in 1.794 seconds (92.588 MB\/sec).<\/span><\/p>\n<ul>\n<li>\n<i>Result: <\/i>The size of the full database backup is around 172 MB. It consists of 72MB of transaction log and also 100MB of data\/delta files. The reason the size has grown around 50% even though we have deleted 4000 rows is because \u2018MERGE SOURCE\u2019 CFPs still have all 8000 rows.<\/li>\n<\/ul>\n<h3>Example-5: Backup after MERGE SOURCE CFPs transition to TOMBSTONE state<\/h3>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">checkpoint<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">go<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#339966;\">&#8212; Do the log backup. This log backup is around 71MB<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP<\/span> <span style=\"color:#ff00ff;\">LOG<\/span> [imoltp] <span style=\"color:#0000ff;\">TO<\/span> DISK = <span style=\"color:#ff0000;\">N&#8217;C:dataimoltp-log-1.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-log Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">GO<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">checkpoint<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">go<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; <span style=\"color:#339966;\">Do one more log backup. This backup reduces active transaction log size<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; <span style=\"color:#339966;\">to 7MB<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP<\/span> <span style=\"color:#ff00ff;\">LOG<\/span> [imoltp] <span style=\"color:#0000ff;\">TO<\/span> DISK =<span style=\"color:#ff0000;\"> N&#8217;C:dataimoltp-log-2.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-log Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;color:#0000ff;\">GO<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"color:#0000ff;font-family:'courier new', courier;\">checkpoint<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"color:#0000ff;font-family:'courier new', courier;\">go<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">&#8212; <span style=\"color:#339966;\">do one more log backup<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP<\/span> <span style=\"color:#ff00ff;\">LOG<\/span> [imoltp] <span style=\"color:#0000ff;\">TO<\/span> DISK = <span style=\"color:#ff0000;\">N&#8217;C:dataimoltp-log-3.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-log Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, <span style=\"color:#0000ff;\">NOREWIND<\/span>, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"color:#0000ff;font-family:'courier new', courier;\">GO<\/span><\/p>\n<ul>\n<li>Checkpoint files: Besides 8 CFPs in \u2018PRECREATED\u2019, there are now 6 CFPs \u2018IN TRANSITION TO TOMBSTONE\u2019 and there 5 CFPs \u2018ACTIVE\u2019.<a>[JdB1]<\/a><a>[SA2]<\/a>\u00a0 Only one ACTIVE CFP contains 4000 data rows other ACTIVE CFPs were created due to manual checkpoint. In a production environment, the checkpoints will occur automatically and log backups will be taken as part of regular operational process.<\/li>\n<\/ul>\n<ul>\n<li><i>Backup Command:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:30px;\">Since the CFPs are converted to either TOMBSTONE or are in transition to it, the size of database backup is now 38MB (only 1 copy of data as transaction log has been backed up and freed)<\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">BACKUP DATABASE<\/span> [imoltp]<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">TO<\/span> DISK = <span style=\"color:#ff0000;\">N&#8217;C:dataimoltp-full-data-chkpt-del50-merge-chkpt-logbkup3.bak&#8217;<\/span><\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\"><span style=\"color:#0000ff;\">WITH NOFORMAT<\/span>, <span style=\"color:#0000ff;\">INIT<\/span>, NAME = <span style=\"color:#ff0000;\">N&#8217;imoltp-Full Database Backup&#8217;<\/span>, <span style=\"color:#0000ff;\">SKIP<\/span>, NOREWIND, <span style=\"color:#0000ff;\">NOUNLOAD<\/span>, STATS = 10<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">GO<\/span><\/p>\n<ul>\n<li><i>Output:<\/i><\/li>\n<\/ul>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 288 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">10 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 4128 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_mod&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">Processed 23 pages for database &#8216;imoltp&#8217;, file &#8216;imoltp_log&#8217; on file 1.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">100 percent processed.<\/span><\/p>\n<p style=\"margin-left:60px;\"><span style=\"font-family:'courier new', courier;\">BACKUP DATABASE successfully processed 4439 pages in 0.394 seconds (88.012 MB\/sec).<\/span><\/p>\n<ul>\n<li>\n<i>Result: <\/i>The size of the full database backup is around 38 MB. This is because we have around 32MB of data in ACTIVE CFP. There are no CFPs in \u2018MERGE SOURCE\u2019 or \u2018REQUIRED FOR BACKUP\/HA\u2019 states.<\/li>\n<\/ul>\n<h2>Summary<\/h2>\n<p>The size of backup of databases with one or more memory-optimized tables is typically bigger than the in-memory size of memory-optimized tables but smaller than the on-disk storage. The extra size will depend upon number of Checkpoint File Pairs (i.e. CFPs) in the states \u2018MERGE SOURCE\u2019 and \u2018REQUIRED FOR BACKUP\/HA\u2019 which indirectly depends upon the workload.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The memory-optimized tables are backed up as part of regular database backups so you don\u2019t need to do anything special to manage backups on databases with memory-optimized tables. Like for disk-based tables, the CHECKSUM of data\/delta files is validated as part of database backup to proactively detect any storage corruption.<\/p>\n","protected":false},"author":1457,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[],"product":[],"content-type":[2424],"topic":[],"coauthors":[2487],"class_list":["post-1533","post","type-post","status-publish","format-standard","hentry","content-type-best-practices"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Database Backup with Memory-Optimized Tables - Microsoft SQL Server Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Database Backup with Memory-Optimized Tables - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"The memory-optimized tables are backed up as part of regular database backups so you don\u2019t need to do anything special to manage backups on databases with memory-optimized tables. Like for disk-based tables, the CHECKSUM of data\/delta files is validated as part of database backup to proactively detect any storage corruption.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft SQL Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/sqlserver\" \/>\n<meta property=\"article:published_time\" content=\"2014-02-05T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T06:49:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"SQL Server Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:site\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"SQL Server Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/\",\"@type\":\"Person\",\"@name\":\"SQL Server Team\"}],\"headline\":\"Database Backup with Memory-Optimized Tables\",\"datePublished\":\"2014-02-05T17:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/\"},\"wordCount\":1671,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/\",\"name\":\"Database Backup with Memory-Optimized Tables - Microsoft SQL Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\"},\"datePublished\":\"2014-02-05T17:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Database Backup with Memory-Optimized Tables\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"name\":\"Microsoft SQL Server Blog\",\"description\":\"Official News from Microsoft\u2019s Information Platform\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\",\"name\":\"Microsoft SQL Server Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft SQL Server Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.facebook.com\/sqlserver\",\"https:\/\/x.com\/SQLServer\",\"https:\/\/www.youtube.com\/user\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Database Backup with Memory-Optimized Tables - Microsoft SQL Server Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/","og_locale":"en_US","og_type":"article","og_title":"Database Backup with Memory-Optimized Tables - Microsoft SQL Server Blog","og_description":"The memory-optimized tables are backed up as part of regular database backups so you don\u2019t need to do anything special to manage backups on databases with memory-optimized tables. Like for disk-based tables, the CHECKSUM of data\/delta files is validated as part of database backup to proactively detect any storage corruption.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2014-02-05T17:00:00+00:00","article_modified_time":"2024-01-23T06:49:02+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png","type":"image\/png"}],"author":"SQL Server Team","twitter_card":"summary_large_image","twitter_creator":"@SQLServer","twitter_site":"@SQLServer","twitter_misc":{"Written by":"SQL Server Team","Est. reading time":"7 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/","@type":"Person","@name":"SQL Server Team"}],"headline":"Database Backup with Memory-Optimized Tables","datePublished":"2014-02-05T17:00:00+00:00","dateModified":"2024-01-23T06:49:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/"},"wordCount":1671,"commentCount":0,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/","name":"Database Backup with Memory-Optimized Tables - Microsoft SQL Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website"},"datePublished":"2014-02-05T17:00:00+00:00","dateModified":"2024-01-23T06:49:02+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2014\/02\/05\/database-backup-with-memory-optimized-tables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Database Backup with Memory-Optimized Tables"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","name":"Microsoft SQL Server Blog","description":"Official News from Microsoft\u2019s Information Platform","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization","name":"Microsoft SQL Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft SQL Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/sqlserver","https:\/\/x.com\/SQLServer","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/1533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/users\/1457"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/comments?post=1533"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/1533\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=1533"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=1533"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=1533"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=1533"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=1533"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=1533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}