azure-sql-database - 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 门户,则数据库导入成功。
解决方案
从此处安装最新版本的 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
}
推荐阅读
- javascript - 为什么使用 Processing 创建的画布在窗口模式下工作正常,但在浏览器上作为背景运行时却严重滞后?
- c++ - 根据运行时参数避免模板实例化的代码重复
- c# - 读取 CSV 文件 - 面向对象的方式
- c++ - 错误消息:使用复制构造函数和重载赋值运算符
- android-studio - 找不到 appcompat.jar
- android - 如何使用 Python 从 Android 手机关闭 Windows 计算机
- python - Python Asyncio:如何等待某事?
- javascript - 如何只允许单个引导弹出元素
- vue.js - Vue使用来自JSON的数据显示模态点击
- python - 如何使 for 循环保持返回值?