2013-03-31 7 views
4

Нам нужно сделать резервную копию базы данных azure и сохранить ее на blob, чтобы ее можно было восстановить. Я видел этот блог, но он использует командлеты третьей стороны.Резервное копирование базы данных Azure на blob с использованием Powershell

http://weblogs.thinktecture.com/cweyer/2011/01/automating-backup-of-a-sql-azure-database-to-azure-blob-storage-with-the-help-of-powershell-and-task-scheduler.html

Может кто-то пожалуйста, руководство/помощь как выше, может быть достигнуто с помощью PowerShell.

ответ

0

Резервное копирование в хранилище WA Blob не поддерживается Azure DB, а служба выполняет автоматическое резервное копирование для вас с возможностью PITR. Вы найдете следующую документацию полезную:

http://msdn.microsoft.com/en-us/library/azure/hh852669.aspx

http://msdn.microsoft.com/en-us/library/azure/jj650016.aspx

Надеется, что это помогает.

0

Сначала получите вашу Azure Настройка автоматизации сделана (см here).

Редактируйте сценарий удара и сохраните его как .ps1 файл. Когда вы запустите его для в первый раз, он спросит вас и вашу учетную запись автоматизации Azur, и ваши учетные данные вашей базы данных. Во время этого процесса он будет надежно сохранять ваши учетные данные в локальном файле (см. here, как это делается). По истечении этого времени в палатах он использует сохраненные учетные данные.

.psl файл и зашифрованные файлы учетных должны храниться в одном каталоге

После того, как вы счастливы, вы можете запланировать его для запуска в планировщик задач.

function Get-MyCredential 
{ 
param(
$CredPath, 
[switch]$Help 
) 
$HelpText = @" 

    Get-MyCredential 
    Usage: 
    Get-MyCredential -CredPath `$CredPath 

    If a credential is stored in $CredPath, it will be used. 
    If no credential is found, Export-Credential will start and offer to 
    Store a credential at the location specified. 

"@ 
    if($Help -or (!($CredPath))){write-host $Helptext; Break} 
    if (!(Test-Path -Path $CredPath -PathType Leaf)) { 
     Export-Credential (Get-Credential) $CredPath 
    } 
    $cred = Import-Clixml $CredPath 
    $cred.Password = $cred.Password | ConvertTo-SecureString 
    $Credential = New-Object System.Management.Automation.PsCredential($cred.UserName, $cred.Password) 
    Return $Credential 
} 


function Export-Credential($cred, $path) { 
     $cred = $cred | Select-Object * 
     $cred.password = $cred.Password | ConvertFrom-SecureString 
     $cred | Export-Clixml $path 
} 

#Create a directory with you azure server name to isolate configurations 
$FileRootPath = "C:\PowerShellScripts\AzureServerName" 

Write-Host "Getting Azure credentials" 
$AzureCred = Get-MyCredential ($FileRootPath + "AzureSyncred.txt") 

#Use Azure Automation Account 
#(If You do not have it will not work with other accounts) 
Add-AzureAccount -Credential $AzureCred 
Select-AzureSubscription -SubscriptionId "myAzureSubscriptionId" 

#DO NOT use tcp:myServerName.database.windows.net,1433 but only myServerName 
$ServerName = "myServerName" 
$Date = Get-Date -format "yyyy-MM-dd-HH-mm" 
$DatabaseName = "myTargetDatabaseName" 
$BlobName = $Date + "-" + $DatabaseName.bacpac" 

$StorageName = "myStorageAccountName" 
$ContainerName = "myContainerNameToStoreBacpacFiles" 
$StorageKey = "myStorageAccountKey" 

Write-Host "Getting database user credential" 
#DO NOT use [email protected] but only myDatabaseUsername 
$credential = Get-MyCredential ($FileRootPath + "DbSyncred.xml") 

Write-Host "Connecting to Azure database" 
$SqlCtx = New-AzureSqlDatabaseServerContext -ServerName $ServerName -Credential $credential 
Write-Host "Connecting to Blob storage" 
$StorageCtx = New-AzureStorageContext -StorageAccountName $StorageName -StorageAccountKey $StorageKey 
$Container = Get-AzureStorageContainer -Name $ContainerName -Context $StorageCtx 
Write-Host "Exporting data to blob" 
$exportRequest = Start-AzureSqlDatabaseExport -SqlConnectionContext $SqlCtx -StorageContainer $Container -DatabaseName $DatabaseName -BlobName $BlobName 

Get-AzureSqlDatabaseImportExportStatus -Request $exportRequest 

# use the below script in powershell to execute the script 
# powershell -ExecutionPolicy ByPass –File C:\PowerShellScripts\AzureServerName\mySavedScript.ps1 –noexit 
Смежные вопросы