首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断何时完成?

如何判断何时完成?
EN

Stack Overflow用户
提问于 2020-11-01 20:24:20
回答 2查看 1.1K关注 0票数 1

我试图将一个.bacpack导入到一个新的Azure数据库中,作为DevOps管道的一部分。我有一个实际执行导入的PowerShell脚本,但是在导入完成后,我需要对数据库进行一些操作。这些都失败了,因为它们在导入完成之前正在运行。

我试图像这样检测导入的完成情况:

代码语言:javascript
复制
$status = New-AzSqlDatabaseImport @newDbParameters

# Wait for database to deploy
$waitCount = 0
$waitDelay = 5
while (($status | Get-AzSqlDatabaseImportExportStatus).Status -eq 'InProgress') {
    $waitCount++
    Write-Progress -Activity "Waiting for database creation." -Status "Count: $waitCount"
    Start-Sleep $waitDelay
}
Write-Progress -Activity "Database to created." -Completed

# Output results
$result = $status | Get-AzSqlDatabaseImportExportStatus
$result
if ($result.Status -eq 'Succeeded') {
    Write-Progress "Database deployed." -Completed
    Write-Host "Database Deployed"
}
else
{
    Write-Host "Database did not deploy '$($result.Status)'-'$($result.ErrorMessage)'"
    Throw $result.ErrorMessage
}

但是,这不起作用,因为状态可以是类似于Running, Progress = 5.00 %的字符串

更新:

为了增加一些更多的细节,我在我的微软提供的发布服务器上的Azure DevOps上运行了这个程序。我在Azure PowerShell任务V5.*中运行它。我在脚本中添加了几行代码,以输出$PSVersionTable和Get Az.Sql。我已经将记录的输出包括在下面。如您所见: PowerShell为V7.0.3,Az模块为4.7.0,Az.Sql为V2.10.0。Running, Progress = 5.00 %肯定是来自Status属性,而不是StatusMessage属性。

代码语言:javascript
复制
2020-11-07T16:01:19.1265632Z ==============================================================================
2020-11-07T16:01:21.1720968Z Generating script.
2020-11-07T16:01:21.2849730Z ========================== Starting Command Output ===========================
2020-11-07T16:01:21.3454648Z ##[command]"C:\Program Files\PowerShell\7\pwsh.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'D:\a\_temp\[REDACTED].ps1'"
2020-11-07T16:01:28.2383178Z Added TLS 1.2 in session.
2020-11-07T16:01:29.0267158Z ##[command]Import-Module -Name C:\Modules\az_4.7.0\Az.Accounts\1.9.5\Az.Accounts.psd1 -Global
2020-11-07T16:01:31.4671842Z ##[command]Clear-AzContext -Scope CurrentUser -Force -ErrorAction SilentlyContinue
2020-11-07T16:01:32.7361261Z ##[command]Clear-AzContext -Scope Process
2020-11-07T16:01:33.9818461Z ##[command]Connect-AzAccount -ServicePrincipal -Tenant *** -Credential System.Management.Automation.PSCredential -Environment AzureCloud @processScope
2020-11-07T16:01:35.6660673Z ##[command] Set-AzContext -SubscriptionId [REDACTED] -TenantId ***
2020-11-07T16:01:37.4234219Z PSVersionTable
2020-11-07T16:01:37.4322960Z 
2020-11-07T16:01:37.4343833Z Name                           Value
2020-11-07T16:01:37.4345708Z ----                           -----
2020-11-07T16:01:37.4346476Z PSVersion                      7.0.3
2020-11-07T16:01:37.4349569Z PSEdition                      Core
2020-11-07T16:01:37.4350222Z GitCommitId                    7.0.3
2020-11-07T16:01:37.4355758Z OS                             Microsoft Windows 10.0.14393
2020-11-07T16:01:37.4356853Z Platform                       Win32NT
2020-11-07T16:01:37.4378974Z PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
2020-11-07T16:01:37.4379723Z PSRemotingProtocolVersion      2.3
2020-11-07T16:01:37.4380231Z SerializationVersion           1.1.0.1
2020-11-07T16:01:37.4380545Z WSManStackVersion              3.0
2020-11-07T16:01:37.4387506Z Az.Sql
2020-11-07T16:01:37.4675347Z 
2020-11-07T16:01:37.4682595Z Name              : Az.Sql
2020-11-07T16:01:37.4684105Z Path              : C:\Modules\az_4.7.0\Az.Sql\2.10.0\Az.Sql.psm1
2020-11-07T16:01:37.4689463Z Description       : Microsoft Azure PowerShell - SQL service cmdlets for Azure Resource Manager in Windows PowerShell 
2020-11-07T16:01:37.4690369Z                     and PowerShell Core.
2020-11-07T16:01:37.4690846Z                     
2020-11-07T16:01:37.4691418Z                     For more information on SQL, please visit the following: 
2020-11-07T16:01:37.4693344Z                     https://learn.microsoft.com/azure/sql-database/
2020-11-07T16:01:37.4694862Z Guid              : f088f4ab-1b59-4836-a6e0-4e14d15800c6
2020-11-07T16:01:37.4697620Z Version           : 2.10.0
2020-11-07T16:01:37.4698325Z ModuleBase        : C:\Modules\az_4.7.0\Az.Sql\2.10.0
2020-11-07T16:01:37.4698841Z ModuleType        : Script
2020-11-07T16:01:37.4699266Z PrivateData       : {PSData}
2020-11-07T16:01:37.4700897Z AccessMode        : ReadWrite
2020-11-07T16:01:37.4703133Z ExportedAliases   : {[Disable-AzSqlServerAdvancedThreatProtection, Disable-AzSqlServerAdvancedThreatProtection], 
2020-11-07T16:01:37.4704800Z                     [Enable-AzSqlServerAdvancedThreatProtection, Enable-AzSqlServerAdvancedThreatProtection], 
2020-11-07T16:01:37.4705980Z                     [Get-AzSqlDatabaseLongTermRetentionPolicy, Get-AzSqlDatabaseLongTermRetentionPolicy], 
2020-11-07T16:01:37.4706882Z                     [Get-AzSqlInstanceTDEProtector, Get-AzSqlInstanceTDEProtector]…}
2020-11-07T16:01:37.4710468Z ExportedCmdlets   : {[Add-AzSqlDatabaseToFailoverGroup, Add-AzSqlDatabaseToFailoverGroup], [Add-AzSqlElasticJobStep, 
2020-11-07T16:01:37.4713706Z                     Add-AzSqlElasticJobStep], [Add-AzSqlElasticJobTarget, Add-AzSqlElasticJobTarget], 
2020-11-07T16:01:37.4714478Z                     [Add-AzSqlInstanceKeyVaultKey, Add-AzSqlInstanceKeyVaultKey]…}
2020-11-07T16:01:37.4715146Z ExportedFunctions : {}
2020-11-07T16:01:37.4715380Z ExportedVariables : {}
2020-11-07T16:01:37.4715705Z NestedModules     : {Microsoft.Azure.PowerShell.Cmdlets.Sql}
2020-11-07T16:01:37.4716908Z 
2020-11-07T16:01:39.8406335Z 
2020-11-07T16:01:39.8412106Z OperationStatusLink          : https://management.azure.com/subscriptions/[REDACTED]/provider
2020-11-07T16:01:39.8414296Z                                s/Microsoft.Sql/locations/uksouth/importExportOperationResults/[REDACTED]
2020-11-07T16:01:39.8415688Z                                [REDACTED]?api-version=2020-02-02-preview
2020-11-07T16:01:39.8416460Z ErrorMessage                 : 
2020-11-07T16:01:39.8417030Z LastModifiedTime             : 11/7/2020 4:01:39 PM
2020-11-07T16:01:39.8417715Z QueuedTime                   : 11/7/2020 4:01:38 PM
2020-11-07T16:01:39.8418302Z RequestType                  : Import
2020-11-07T16:01:39.8418922Z Status                       : Running, Progress = 5.00 %
2020-11-07T16:01:39.8419526Z StatusMessage                : 
2020-11-07T16:01:39.8419842Z PrivateEndpointRequestStatus : {}
2020-11-07T16:01:39.8420140Z 
2020-11-07T16:01:39.8467940Z Database did not deploy 'Running, Progress = 5.00 %'-''
2020-11-07T16:01:40.7865529Z ##[error]ScriptHalted
2020-11-07T16:01:40.9680645Z ##[error]PowerShell exited with code '1'.
2020-11-07T16:01:41.9027974Z ##[section]Finishing: Deploy baseline DB from bacpac
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-22 22:57:38

这似乎是Az.Sql模块2.10.0版中引入的一个问题。我能够通过将Azure DevOps任务上的DevOps字段设置为4.6.0来修复这个问题。这个版本的Az模块包含2.9.1版的Az.Sql。

显然这是修正了Azure Powershell版本5.3.0,虽然我没有亲自检查。

票数 1
EN

Stack Overflow用户

发布于 2020-11-03 01:23:55

命令Get-AzSqlDatabaseImportExportStatus将返回对象AzureSqlDatabaseImportExportStatusModel。该对象具有一些属性。其属性状态将返回Succeeded InProgress。其属性StatusMessage将返回progress(如Running, Progress = 5.00 %)。有关更多细节,请参阅这里这里

例如

代码语言:javascript
复制
# Set the resource group name and location for your server
$resourceGroupName = ""
$location = ""
# Set an admin login and password for your server
$adminSqlLogin = ""
$password = ""
# Set server name - the logical server name has to be unique in the system
$serverName = ""
# The sample database name
$databaseName = "myImportedDatabase"
# The storage account name and storage container name
$storageAccountName = ""
$storageContainerName = ""
# BACPAC file name
$bacpacFilename = ""

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName $resourceGroupName `
    -ServerName $serverName `
    -DatabaseName $databaseName `
    -DatabaseMaxSizeBytes "262144000" `
    -StorageKeyType "StorageAccessKey" `
    -StorageKey $(Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName).Value[0] `
    -StorageUri "https://$storageaccountname.blob.core.windows.net/$storageContainerName/$bacpacFilename" `
    -Edition "Standard" `
    -ServiceObjectiveName "S3" `
    -AdministratorLogin "$adminSqlLogin" `
    -AdministratorLoginPassword $(ConvertTo-SecureString -String $password -AsPlainText -Force)
# Check import status and wait for the import to complete
# Wait for database to deploy

$waitDelay = 5
while (($importRequest | Get-AzSqlDatabaseImportExportStatus).Status -eq 'InProgress') {
    ($importRequest | Get-AzSqlDatabaseImportExportStatus).StatusMessage
    Start-Sleep $waitDelay
}


# Output results
$result = $importRequest | Get-AzSqlDatabaseImportExportStatus
$result
if ($result.Status -eq 'Succeeded') {
    
    Write-Host "Database Deployed"
}
else
{
    Write-Host "Database did not deploy '$($result.Status)'-'$($result.ErrorMessage)'"
    Throw $result.ErrorMessage
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64636603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档