--- title: "REST API: Sync between multiple databases" description: Use a REST API example script to sync between multiple databases. services: sql-database ms.service: sql-database ms.subservice: sql-data-sync ms.custom: sqldbrb=1 ms.devlang: REST API ms.topic: sample author: MaraSteiu ms.author: masteiu ms.reviewer: mathoma ms.date: 03/12/2019 --- # Use REST API to sync data between multiple databases [!INCLUDE[appliesto-sqldb](../../includes/appliesto-sqldb.md)] This REST API example configures SQL Data Sync to sync data between multiple databases. For an overview of SQL Data Sync, see [Sync data across multiple cloud and on-premises databases with SQL Data Sync in Azure](../sql-data-sync-data-sql-server-sql-database.md). > [!IMPORTANT] > SQL Data Sync does not support Azure SQL Managed Instance at this time. ## Create sync group Use the [create or update](/rest/api/sql/syncgroups/createorupdate) template to create a sync group. When creating a sync group, do not pass in the sync schema (table\column) and do not pass in masterSyncMemberName, because at this time sync group does not have table\column information yet. Sample request for creating a sync group: ```http PUT https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187?api-version=2015-05-01-preview ``` ```json { "properties": { "interval": -1, "lastSyncTime": "0001-01-01T08:00:00Z", "conflictResolutionPolicy": "HubWin", "syncDatabaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328", "hubDatabaseUserName": "hubUser" } } ``` Sample response for creating a sync group: Status code: 200 ```json { "properties": { "interval": -1, "lastSyncTime": "0001-01-01T08:00:00Z", "conflictResolutionPolicy": "HubWin", "syncDatabaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328", "hubDatabaseUserName": "hubUser", "syncState": "NotReady" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187", "name": "syncgroupcrud-3187", "type": "Microsoft.Sql/servers/databases/syncGroups" } ``` Status code: 201 ```json { "properties": { "interval": -1, "lastSyncTime": "0001-01-01T08:00:00Z", "conflictResolutionPolicy": "HubWin", "syncDatabaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328", "hubDatabaseUserName": "hubUser", "syncState": "NotReady" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187", "name": "syncgroupcrud-3187", "type": "Microsoft.Sql/servers/databases/syncGroups" } ``` ## Create sync member Use the [create or update](/rest/api/sql/syncmembers/createorupdate) template to create a sync member. Sample request for creating a sync member: ```http PUT https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/syncMembers/syncgroupcrud-4879?api-version=2015-05-01-preview ``` ```json { "properties": { "databaseType": "AzureSqlDatabase", "serverName": "syncgroupcrud-3379.database.windows.net", "databaseName": "syncgroupcrud-7421", "userName": "myUser", "syncDirection": "Bidirectional", "syncState": "UnProvisioned" } } ``` Sample response for creating a sync member: Status code:200 ```json { "properties": { "databaseType": "AzureSqlDatabase", "serverName": "syncgroupcrud-3379.database.windows.net", "databaseName": "syncgroupcrud-7421", "userName": "myUser", "syncDirection": "Bidirectional", "syncState": "UnProvisioned" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/syncMembers/syncgroupcrud-4879", "name": "syncgroupcrud-4879", "type": "Microsoft.Sql/servers/databases/syncGroups/syncMembers" } ``` Status code:201 ```json { "properties": { "databaseType": "AzureSqlDatabase", "serverName": "syncgroupcrud-3379.database.windows.net", "databaseName": "syncgroupcrud-7421", "userName": "myUser", "syncDirection": "Bidirectional", "syncState": "UnProvisioned" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/syncMembers/syncgroupcrud-4879", "name": "syncgroupcrud-4879", "type": "Microsoft.Sql/servers/databases/syncGroups/syncMembers" } ``` ## Refresh schema Once your sync group is created successfully, refresh schema using the following templates. Use the [refresh hub schema](/rest/api/sql/syncgroups/refreshhubschema) template to refresh the schema for the hub database. Sample request for refreshing a hub database schema: ```http POST https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/refreshHubSchema?api-version=2015-05-01-preview ``` Sample response for refreshing a hub database schema: Status code: 200 Status code: 202 Use the [list hub schemas](/rest/api/sql/syncgroups/listhubschemas) template to list the hub database schema. Use the [refresh member schema](/rest/api/sql/syncmembers/refreshmemberschema) template to refresh the member database schema. Use the [list member schema](/rest/api/sql/syncmembers/listmemberschemas) template to list member database schema. Only proceed to the next step once your schema refreshes successfully. ## Update sync group Use the [create or update](/rest/api/sql/syncgroups/createorupdate) template to update your sync group. Update sync group by specifying the sync schema. Include your schema and masterSyncMemberName, which is the name that holds the schema you want to use. Sample request for updating sync group: ```http PUT https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187?api-version=2015-05-01-preview ``` ```json { "properties": { "interval": -1, "lastSyncTime": "0001-01-01T08:00:00Z", "conflictResolutionPolicy": "HubWin", "syncDatabaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328", "hubDatabaseUserName": "hubUser" } } ``` Sample response for updating sync group: ```json { "properties": { "interval": -1, "lastSyncTime": "0001-01-01T08:00:00Z", "conflictResolutionPolicy": "HubWin", "syncDatabaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328", "hubDatabaseUserName": "hubUser", "syncState": "NotReady" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187", "name": "syncgroupcrud-3187", "type": "Microsoft.Sql/servers/databases/syncGroups" } ``` ```json { "properties": { "interval": -1, "lastSyncTime": "0001-01-01T08:00:00Z", "conflictResolutionPolicy": "HubWin", "syncDatabaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328", "hubDatabaseUserName": "hubUser", "syncState": "NotReady" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-3521/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187", "name": "syncgroupcrud-3187", "type": "Microsoft.Sql/servers/databases/syncGroups" } ``` ## Update sync member Use the [create or update](/rest/api/sql/syncmembers/createorupdate) template to update your sync member. Sample request for updating a sync member: ```http PUT https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/syncMembers/syncgroupcrud-4879?api-version=2015-05-01-preview ``` ```json { "properties": { "databaseType": "AzureSqlDatabase", "serverName": "syncgroupcrud-3379.database.windows.net", "databaseName": "syncgroupcrud-7421", "userName": "myUser", "syncDirection": "Bidirectional", "syncState": "UnProvisioned" } } ``` Sample response for updating a sync member: Status code: 200 ```json { "properties": { "databaseType": "AzureSqlDatabase", "serverName": "syncgroupcrud-3379.database.windows.net", "databaseName": "syncgroupcrud-7421", "userName": "myUser", "syncDirection": "Bidirectional", "syncState": "UnProvisioned" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/syncMembers/syncgroupcrud-4879", "name": "syncgroupcrud-4879", "type": "Microsoft.Sql/servers/databases/syncGroups/syncMembers" } ``` Status code: 201 ```json { "properties": { "databaseType": "AzureSqlDatabase", "serverName": "syncgroupcrud-3379.database.windows.net", "databaseName": "syncgroupcrud-7421", "userName": "myUser", "syncDirection": "Bidirectional", "syncState": "UnProvisioned" }, "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/syncMembers/syncgroupcrud-4879", "name": "syncgroupcrud-4879", "type": "Microsoft.Sql/servers/databases/syncGroups/syncMembers" } ``` ## Trigger sync Use the [trigger sync](/rest/api/sql/syncgroups/triggersync) template to trigger a sync operation. Sample request for triggering sync operation: ```http POST https://management.azure.com/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/syncgroupcrud-65440/providers/Microsoft.Sql/servers/syncgroupcrud-8475/databases/syncgroupcrud-4328/syncGroups/syncgroupcrud-3187/triggerSync?api-version=2015-05-01-preview ``` Sample response for triggering sync operation: Status code: 200 ## Next steps For more information about Azure PowerShell, see [Azure PowerShell documentation](/powershell/azure/). Additional SQL Database PowerShell script samples can be found in [Azure SQL Database PowerShell scripts](../powershell-script-content-guide.md). For more information about SQL Data Sync, see: - Overview - [Sync data across multiple cloud and on-premises databases with SQL Data Sync in Azure](../sql-data-sync-data-sql-server-sql-database.md) - Set up Data Sync - Use the Azure portal - [Tutorial: Set up SQL Data Sync to sync data between Azure SQL Database and SQL Server](../sql-data-sync-sql-server-configure.md) - Use PowerShell - [Use PowerShell to sync data between a database in Azure SQL Database and SQL Server](sql-data-sync-sync-data-between-azure-onprem.md) - Data Sync Agent - [Data Sync Agent for SQL Data Sync in Azure](../sql-data-sync-agent-overview.md) - Best practices - [Best practices for SQL Data Sync in Azure](../sql-data-sync-best-practices.md) - Monitor - [Monitor SQL Data Sync with Azure Monitor logs](../monitor-tune-overview.md) - Troubleshoot - [Troubleshoot issues with SQL Data Sync in Azure](../sql-data-sync-troubleshoot.md) - Update the sync schema - Use Transact-SQL - [Automate the replication of schema changes in SQL Data Sync in Azure](../sql-data-sync-update-sync-schema.md) - Use PowerShell - [Use PowerShell to update the sync schema in an existing sync group](update-sync-schema-in-sync-group.md) For more information about SQL Database, see: - [SQL Database overview](../sql-database-paas-overview.md) - [Database Lifecycle Management](/previous-versions/sql/sql-server-guides/jj907294(v=sql.110))