changelog-sync-to-tag-sql

changelog-sync-to-tag-sql is a helper command that produces the raw SQL that Liquibase would run when using the changelog-sync-to-tag command to mark all undeployed changesets associated with the specified tag as executed in your database.

Uses

The changelog-sync-to-tag-sql command is typically used when you want to inspect the SQL Liquibase will use to baseline a new database environment.

It is best practice to inspect any SQL that Liquibase would run when using the changelog-sync-to-tag command so you can review any changes the command would make to your database before running it. The changelog-sync-to-tag command marks all changesets starting with the first changeset at the top of the changelog file and moving down to the changeset up to and including the tag.

Note: If you don’t have any tag specified in your changelog file, add it by using the tagDatabase Change Type as follows:

<changeSet id="13.1" author="liquibase">
<tagDatabase tag="version_2.0"/>
</changeSet>

Running the changelog-sync-to-tag-sql command

Before running the changelog-sync-to-tag-sql command, specify the driver, classpath, and URL in the Liquibase properties file. For more information, see Specifying Properties in a Connection Profile. You can also specify these properties in your command line.

Next, run the changelog-sync-to-tag-sql command:

liquibase --changelog-file=mychangelog.xml changelog-sync-to-tag-sql version1

Note: Enter the name of the changelog and the tag that you want to use in place of mychangelog.xml and version1.

changelog-sync-to-tag-sql global attributes

Attribute Definition Requirements
--changelog-file The root changelog Required
--url The JDBC database connection URL Required
--username The database username Required*
--password The database password Required*
--output-file* The attribute that specifies the file path to where the changelog-sync-to-tag SQL will be written Optional

*If not specified, the changelog-sync-to-tag-sql output goes to STDOUT.

Note: The username and password attributes are not required for connections and systems which use alternate means of authentication.

changelog-sync-to-tag-sql command attributes

Attribute Definition Requirements
tag The tag you can add to changesets to determine which changesets in the changelog to evaluate based on their tags. Required

changelog-sync-to-tag-sql example output

When successful, the changelog-sync-to-tag-sql command produces the following output:

Liquibase Pro 4.3.2 by Datical licensed to support until Wed Sep 22 23:59:59 CDT 2021
####################################################
##   _     _             _ _                      ##
##  | |   (_)           (_) |                     ##
##  | |    _  __ _ _   _ _| |__   __ _ ___  ___   ##
##  | |   | |/ _` | | | | | '_ \ / _` / __|/ _ \  ##
##  | |___| | (_| | |_| | | |_) | (_| \__ \  __/  ##
##  \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___|  ##
##              | |                               ##
##              |_|                               ##
##                                                ##
##  Get documentation at docs.liquibase.com       ##
##  Get certified courses at learn.liquibase.com  ##
##  Free schema change activity reports at        ##
##      https://hub.liquibase.com                 ##
##                                                ##
####################################################
Starting Liquibase at 11:28:52 (version 4.3.2 #44 built at 2021-03-23 14:01+0000)
-- *********************************************************************
-- SQL to add all changesets to database history table
-- *********************************************************************
-- Change Log: dbchangelog.xml
-- Ran at: 3/29/21 11:28 AM
-- Against: SCHEMA1@jdbc:oracle:thin:@localhost:1521:ORCL
-- Liquibase version: 4.3.2
-- *********************************************************************

-- Lock Database
UPDATE SCHEMA1.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = 'WIN-20E107KB4TN (172.30.3.88)', LOCKGRANTED = TO_TIMESTAMP('2021-03-29 11:28:53.632', 'YYYY-MM-DD HH24:MI:SS.FF') WHERE ID = 1 AND LOCKED = 0;

-- Release Database Lock
UPDATE SCHEMA1.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

Liquibase command 'changelog-sync-to-tag-sql' was executed successfully.