首页 > 解决方案 > New-AzureRmSqlDatabaseImport 不接受大于 5GB 的 DatabaseMaxSizeBytes

问题描述

我正在尝试使用 Powershell 中的 New-AzureRmSqlDatabaseImport 从 .bacpac 文件导入数据库。数据库大小约为 8GB。当我将所需参数 DatabaseMaxSizeBytes 设置为大于 5GB 的任何数量时,我收到错误:

Get-AzureRmSqlDatabaseImportExportStatus : BadRequest: The ImportExport operation with 
Request Id 'a824a510-xxxxx' failed due to 'Error encountered during the service operation.
    Could not import package.
Warning SQL0: A project which specifies SQL Server 2008 as the target platform may 
experience compatibility issues with Microsoft Azure SQL Database v12.
Error SQL72014: .Net SqlClient Data Provider: Msg 40619, Level 16, State 1, 
Line 1 The edition 'Premium' does not
support the database data max size '9663676416'.
Error SQL72045: Script execution error.  The executed script:
CREATE DATABASE [$(DatabaseName)] COLLATE SQL_Latin1_General_CP1_CI_AS
(EDITION = 'Premium', SERVICE_OBJECTIVE = 'P1', MAXSIZE = 9 GB)

该命令接受了 5GB 的 DatabaseMaxSizeBytes,但当然,当导入达到 5GB 上限时,该过程失败。

如果我使用 Azure 门户,则数据库导入成功。

标签: azure-sql-database

解决方案


从此处安装最新版本的 SQL PowerShell 模块。

以下脚本有效:

$password = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$userId = "MyEmail@MyEmail"
$cred = New-Object -TypeName System.Management.Automation.PSCredential($userId ,$password)
Login-AzureRmAccount -Credential $cred -TenantId "MyTenantID"

$sourceserver = "DBServer"
$sourceresourcegroupname = "ResourceGroupName"
$sourcedatabasename = "DBName"
$copyDatabaseName = "CopyDatabaseName"

$DBImport = New-AzureRmSqlDatabaseImport -ResourceGroupName $sourceresourcegroupname `
   -ServerName $sourceserver `
   -DatabaseName $sourcedatabasename `
   -DatabaseMaxSizeBytes "21474836480" `
   -StorageKeyType "StorageAccessKey" `
   -StorageKey $(Get-AzureRmStorageAccountKey -ResourceGroupName $sourceresourcegroupname -StorageAccountName devtestdatabase).Value[0] `
   -StorageUri "https://mystorageAccount.blob.core.windows.net/testing/test.bacpac" `
   -Edition "Standard" `
   -ServiceObjectiveName "S9" `
   -AdministratorLogin "adminUserName" `
   -AdministratorLoginPassword $(ConvertTo-SecureString -String "AdminPassword" -AsPlainText -Force)

While ((Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $DBImport.OperationStatusLink).Status -eq "InProgress")
{
    Sleep -Seconds 10   
}

推荐阅读