functions/azure/Sql/New-BcAdminAzSqlDatabaseCopy.ps1
function New-BcAdminAzSqlDatabaseCopy { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string]$ResourceGroupName, [Parameter(Mandatory = $true)] [string]$ServerName, [Parameter(Mandatory = $true)] [Alias('DatabaseName')] [string]$SourceDatabaseName, [Parameter(Mandatory = $true)] [string]$CopyDatabaseName, [Parameter(Mandatory = $false)] [string]$ElasticPoolName, [Parameter(Mandatory = $false)] [string]$ApiVersion = $BcAdminSession.AzureRestApiVersion ) if (-not (Connect-ToAzure)) { Write-Warning "Not connected to Microsoft Azure! Plase run Connect-ToAzure first!" return $false } $headers = @{ Authorization = $BcAdminSession.AzureRequestHeaderAuthorization "Content-Type" = "application/json" } $uri = "https://management.azure.com/subscriptions/$($BcAdminSession.AzureSubscriptionId)/resourceGroups/$ResourceGroupName/providers/Microsoft.Sql/servers/$ServerName/databases/$($CopyDatabaseName)?api-version=$ApiVersion" $body = @{ location = Get-BcAdminAzSqlDatabaseLocation -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $SourceDatabaseName -ApiVersion $ApiVersion properties = @{ createMode = "Copy" sourceDatabaseId = "/subscriptions/$($BcAdminSession.AzureSubscriptionId)/resourceGroups/$ResourceGroupName/providers/Microsoft.Sql/servers/$ServerName/databases/$SourceDatabaseName" } } if ($ElasticPoolName) { $body.properties.elasticPoolId = "/subscriptions/$($BcAdminSession.AzureSubscriptionId)/resourceGroups/$ResourceGroupName/providers/Microsoft.Sql/servers/$ServerName/elasticPools/$ElasticPoolName" } try { Write-Verbose "Copy database '$SourceDatabaseName' as '$CopyDatabaseName'." $response = Invoke-WebRequest -Uri $uri -Headers $headers -Method Put -Body ($body | ConvertTo-Json) return $response } catch { if ($null -ne $_.ErrorDetails.Message) { try { $response = $_.ErrorDetails.Message | ConvertFrom-Json Write-Warning "$($response.error.code)`n$($response.error.Message)" return $false } catch { Write-Warning $_ return $false } } } } |