private static AzureCredentials GetAzureCredentials(AzureSdkSettings settings) { var clientId = settings.PrincipalClientId; var clientSecret = settings.PrincipalClientSecret; var tenantId = settings.PrincipalTenantId; var environment = settings.AzureEnvironment; return(new AzureCredentialsFactory().FromServicePrincipal(clientId, clientSecret, tenantId, environment)); }
public async Task ExportAsync(AzureSdkSettings settings, CancellationToken cancellationToken) { LogMessage(@"[Step 1] azure authentication"); var credentials = GetAzureCredentials(settings); var azure = await Azure.Authenticate(credentials).WithDefaultSubscriptionAsync(); LogMessage(@"[Step 2] azure sql server connection"); var sqlServerResourceGroupName = settings.SqlServerResourceGroupName; var sqlServerName = settings.SqlServerName; var databaseName = settings.DatabaseName; var ipName = settings.IpName; var ipAddress = settings.IpAddress; var sqlServer = await azure.SqlServers.GetByResourceGroupAsync(sqlServerResourceGroupName, sqlServerName, cancellationToken); await sqlServer.FirewallRules.Define(ipName).WithIPAddress(ipAddress).CreateAsync(cancellationToken); var database = await sqlServer.Databases.GetAsync(databaseName, cancellationToken); LogMessage(@"[Step 3] azure storage account connection"); var storageResourceGroupName = settings.StorageResourceGroupName; var storageName = settings.StorageName; var storageAccount = await azure.StorageAccounts.GetByResourceGroupAsync(storageResourceGroupName, storageName, cancellationToken); LogMessage(@"[Step 4] azure sql server export bacpac"); var storageContainerName = settings.StorageContainerName; var bacPacBlobName = settings.BacPacBlobName; var databaseLogin = settings.DatabaseLogin; var databasePassword = settings.DatabasePassword; await database.ExportTo(storageAccount, storageContainerName, bacPacBlobName) .WithSqlAdministratorLoginAndPassword(databaseLogin, databasePassword) .ExecuteAsync(cancellationToken); }