LoginSignup
0
0

More than 5 years have passed since last update.

PowershellでSQLDatabaseをAzureStorageにエクスポート

Last updated at Posted at 2016-11-01

本番環境のDBをコピーしてデータのマスキング処理を行ったあとに別の環境にコピーして使うのをイメージしています。

PowerShellでAzureSQLDatabaseのポイントインタイムリストアからのリストア
で作成したDBをエクスポートするように作成しました。

こちらも残念ながらクラシック版です

function Start-CustomSqlDatabaseExport
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [string] $serverAdmin,
        [string] $serverPassword,
        [string] $SourceServerName,

        [string] $StorageAccountName,
        [string] $StorageAccountKey,
        [string] $ContainerName = "コンテナ名",
        [string] $SourceDatabaseName = "リストア後DB"
    )

    if($SourceDatabaseName -eq "引数指定無しの場合")
    {
        $SourceDatabaseName = $SourceDatabaseName + (Get-Date -Format "_yyyyMMdd")
    }
    if($ContainerName -eq "引数指定なしの場合")
    {
        $ContainerName = $ContainerName + (Get-Date -Format "-yyyyMMdd")

        try
        {
            New-AzureStorageContainer -Name $ContainerName -ErrorAction Stop
        }
        catch
        {
            Write-Output "Skipped New-AzureStorageContainer"
        }
    }
    $TargetBlobName = $SourceDatabaseName + (Get-Date -Format "HHmmss") + ".bacpac"

    #SQLDBの資格情報作成
    $securePassword = ConvertTo-SecureString –String $serverPassword –AsPlainText -Force
    $credential = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $serverAdmin, $securePassword
    $SqlConnectionContext = New-AzureSqlDatabaseServerContext -ServerName $SourceServerName -Credential $credential

    #格納先Storageの情報
    $StorageContext = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
    $StorageContainer = Get-AzureStorageContainer -Name $ContainerName -Context $StorageContext

    $exportRequest = Start-AzureSqlDatabaseExport -SqlConnectionContext $SqlConnectionContext -StorageContainer $StorageContainer -DatabaseName $SourceDatabaseName -BlobName $TargetBlobName

    $Counter = 1
    while ($true)
    {
        #終了するまで待機
        $DbExportStatus = Get-AzureSqlDatabaseImportExportStatus -Request $exportRequest -ErrorAction SilentlyContinue
        if ($DbExportStatus.Status -eq 'Completed'){
            break
        }

        sleep -Seconds 10 -Verbose

    }
}
$serverAdmin="serverAdmin"
$serverPassword="serverPassword"
$SourceServerName="databaseservername"
$StorageAccountName="StorageAccountName"
$StorageAccountKey="StorageAccountKey"
Get-AzureSubscription -Current | Set-AzureSubscription -CurrentStorageAccountName $StorageAccountName
Start-CustomSqlDatabaseExport -serverAdmin $serverAdmin -serverPassword $serverPassword -SourceServerName $SourceServerName -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0