SQL Azure — операция ImportExport завершилась неудачно из-за недопустимых учетных данных хранилища

Когда я запускаю свой скрипт ниже, он продолжает давать сбой с ошибкой «Операция ImportExport не удалась из-за недопустимых учетных данных хранилища». Ключ доступа и SAS кажутся правильными, когда я регистрируюсь на портале. Может кто-нибудь указать мне в правильном направлении

    param(
        [string]$SubscriptionId,
        [string]$ResourceGroupName,
        [string]$storageRG,
        [string]$ServerName,
        [string]$DatabaseName,
        [string]$StorageAccountName,
        [string]$StorageContainerName,
        [string]$StorageAccountKey,
        [string]$ImportBacpacFilename,
        [string]$AdministratorLogin, 
        [string]$AdministratorLoginPassword
    )

    Add-Type -AssemblyName System.Web

    try {
        # Set the subscription context
        Write-Verbose "Setting subscription context..."
        Select-AzSubscription -SubscriptionId $SubscriptionId

        # Get the storage account
        Write-Verbose "Getting storage account..."
        $StorageAccount = Get-AzStorageAccount -ResourceGroupName $storageRG -Name $StorageAccountName

        # Get the storage account context
        Write-Verbose "Getting storage account context..."
        $StorageAccountContext = $StorageAccount.Context

        # Generate the SAS token for the storage container
        $StartTime = Get-Date
        $ExpiryTime = $StartTime.AddHours(6)
        $SasTokenRaw = New-AzStorageContainerSASToken -Name $StorageContainerName -Permission rw -StartTime $StartTime -ExpiryTime $ExpiryTime -Context $StorageAccountContext
        $SasToken = [System.Web.HttpUtility]::UrlEncode($SasTokenRaw)
        $StorageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $storageRG -Name $StorageAccountName)[0].Value
        # Build the destination URL
        $Sourceurl = "https://$StorageAccountName.blob.core.windows.net/$StorageContainerName/$ImportBacpacFilename$SasToken"
        # Import the Azure SQL Database to the Blob Storage container
        $ImportRequest = New-AzSqlDatabaseImport -DatabaseName $DatabaseName -ResourceGroupName $ResourceGroupName -StorageKeyType StorageAccessKey -StorageKey $StorageAccountKey -StorageUri $Sourceurl -Edition Standard -ServiceObjectiveName S0 -DatabaseMaxSizeBytes 5000000 -AdministratorLogin $AdministratorLogin -AdministratorLoginPassword (ConvertTo-SecureString $AdministratorLoginPassword -AsPlainText -Force)-ServerName $ServerName

        # Check the status of the import operation
        $ImportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $ImportRequest.OperationStatusLink
        [System.Console]::Write("Importing")
        while ($ImportStatus.Status -eq "InProgress") {
            Start-Sleep -s 30
            $ImportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $ImportStatus.OperationStatusLink
            [System.Console]::Write(".")
        }
        [System.Console]::Write("")
        $ImportStatus
        if ($ImportStatus.Status -eq "Succeeded") {
            Write-Host "Import completed successfully!"
        }
        else {
            Write-Host "Import failed. Status: $($ImportStatus.Status)"
        }
    }
    catch {
        Write-Error "An error occurred: $_"
    }

}

Какую базу данных вы используете в бэкэнде? Проверьте файлы журнала базы данных для получения дополнительной информации. Если SQL Server, то подключитесь к SQL Server Management Studio для управления файлами журналов.

jdweng 18.04.2023 13:37

Я обновил сценарий и, кажется, работает, когда я запускаю его, показывая, что импорт успешно завершен. Однако, когда я захожу на портал, я не вижу импортированную базу данных.

KayMan 18.04.2023 14:18

Вы не сообщаете статус запроса IMPORT. Если это не удается, вы теряете сообщение об ошибке, потому что вы переопределяете состояние с помощью команды Get-AzSqlDatabaseImportExportStatus.

jdweng 18.04.2023 14:39

@jdweng Должен ли я удалить первую команду Get-AzSqlDatabaseImportExportStatus?

KayMan 18.04.2023 14:49

Удаление одного перед циклом while должно работать.

jdweng 18.04.2023 16:10
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
5
350
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я воспроизвел в своей среде и получил ожидаемые результаты, как показано ниже, и я следовал Microsoft-Document и Micrsoft-Document2:

Во-первых, у меня есть ключ доступа, как показано ниже:

(Get-AzStorageAccountKey -ResourceGroupName "resource group name" -Name "name of storage account")[0].Value

Затем используйте команду ниже:

New-AzSqlDatabaseExport -ResourceGroupName "resource group name" -DatabaseName "databasename" -StorageKeytype StorageAccessKey -StorageKey "PVggweeFl6SqaVjzHX3eKD7Qs7BWFqRpAG2AW/CvyLBYB/QezI+ASt9Ms02w= = " -StorageUri "https://storageaccountname.blob.core.windows.net/rconatinername/blobaname" -AdministratorLogin "emo" -AdministratorLoginPassword $(ConvertTo-SecureString "Password" -AsPlainText -Force) -ServerName "servername"

Вывод на портале:

Здесь вам не нужен токен SAS и попробуйте выполнить описанный выше процесс.

Для всех (как и я), которые находят эту страницу через Google. Ошибка «Недопустимые учетные данные хранилища» также появляется, когда вы указываете недопустимый URL-адрес для большого двоичного объекта, содержащего экспорт.

Чтобы проверить это, попробуйте загрузить большой двоичный объект с ключом своей учетной записи через интерфейс командной строки. Это пример команды для проверки URI:

az storage blob download --blob-url  https://$storageAccount.blob.core.windows.net/$storageContainer/$backupName.bacpac --account-key $yourStorageKey

Другие вопросы по теме