Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance

Returns the minimum version on the client that is valid for use in obtaining change tracking information from the specified table, when you're using the CHANGETABLE function.

Transact-SQL syntax conventions




Is the object ID of the table. table_object_id is an int.

Return Type



Use this function to validate the value of the last_sync_version parameter for CHANGETABLE. If last_sync_version is less than the value that is reported by this function, the results that are returned from a later call to CHANGETABLE might not be valid.

CHANGE_TRACKING_MIN_VALID_VERSION uses the following information to determine the return value:

  • When the table was enabled for change tracking.

  • When the background cleanup task ran to remove change tracking information older than the retention period specified for the database.

  • If the table was truncated, this removes all change tracking information that is associated with the table.

The function returns NULL if any one of the following conditions is true:

  • Change tracking isn't enabled for the database.

  • The specified table object ID isn't valid for the current database.

  • Insufficient permission to the table specified by the object ID.


The following example determines whether a specified version is a valid version. The example obtains the minimum valid version of the dbo.Employees table, and then compares this to the value of the @last_sync_version variable. If the value of @last_sync_version is lower than the value of @min_valid_version, the list of changed rows won't be valid.


You would usually obtain the value from a table or other location where you stored the last version number that was used to synchronize data.

-- The tracked change is tagged with the specified context   
DECLARE @min_valid_version bigint, @last_sync_version bigint;  
SET @min_valid_version =   
SET @last_sync_version = 11  
IF (@last_sync_version < @min_valid_version)  
-- Error � do not obtain changes  
-- Obtain changes using CHANGETABLE(CHANGES ...)  

See also

Change Tracking Functions (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)