diff --git a/src/azure-cli/azure/cli/command_modules/sql/custom.py b/src/azure-cli/azure/cli/command_modules/sql/custom.py index 7e89ace23a1..88a443c1881 100644 --- a/src/azure-cli/azure/cli/command_modules/sql/custom.py +++ b/src/azure-cli/azure/cli/command_modules/sql/custom.py @@ -5208,24 +5208,32 @@ def managed_db_log_replay_stop( ''' restore_details_client = get_sql_managed_database_restore_details_operations(cmd.cli_ctx, None) + try: + # Determine if managed DB was created using log replay service + # Raises RestoreDetailsNotAvailableOrExpired exception if there are no restore details + restore_details = restore_details_client.get( + database_name=database_name, + managed_instance_name=managed_instance_name, + resource_group_name=resource_group_name, + restore_details_name=RestoreDetailsName.DEFAULT) - # Determine if managed DB was created using log replay service, raise exception if not - restore_details = restore_details_client.get( - database_name=database_name, - managed_instance_name=managed_instance_name, - resource_group_name=resource_group_name, - restore_details_name=RestoreDetailsName.DEFAULT) + # Type must be LRSRestore in order to proceed with stop-log-replay, else raise exception + if restore_details.type_properties_type.lower() == 'lrsrestore': + return client.begin_delete( + database_name=database_name, + managed_instance_name=managed_instance_name, + resource_group_name=resource_group_name) - # If type is present, it must be lrsrestore in order to proceed with stop-log-replay - if (hasattr(restore_details, 'type_properties_type') and restore_details.type_properties_type.lower() != 'lrsrestore'): raise CLIError( f'Cannot stop the log replay as database {database_name} on the instance {managed_instance_name} ' f'in the resource group {resource_group_name} was not created with log replay service.') - - return client.begin_delete( - database_name=database_name, - managed_instance_name=managed_instance_name, - resource_group_name=resource_group_name) + except Exception as ex: + # Map RestoreDetailsNotAvailableOrExpired to a more descriptive error + if (ex and 'RestoreDetailsNotAvailableOrExpired' in str(ex)): + raise CLIError( + f'Cannot stop the log replay as database {database_name} on the instance {managed_instance_name} ' + f'in the resource group {resource_group_name} was not created with log replay service.') + raise ex def managed_db_log_replay_complete_restore(