我不确定如何调试它,假设它不是cmdlet的问题。我试图用自动化工作流替换自动SQL导出,但我似乎无法使Start-AzureSqlDatabaseExport工作 - 它不断收到以下警告和错误消息。
d4fc0004-0c0b-443e-ad1b-310af7fd4e2a:[localhost]:客户会话ID:' c12c92eb-acd5-424d-97dc-84c4e9c4f914-2017-01-04 19:00:23Z'
d4fc0004-0c0b-443e-ad1b-310af7fd4e2a:[localhost]:客户请求ID:' d534f5fd-0fc0-4d68-8176-7508b35aa9d8-2017-01-04 19:00:33Z'
Start-AzureSqlDatabaseExport:对象引用未设置为对象的实例。
在DBBackup:11 char:11 + + CategoryInfo:未指定:(:) [Start-AzureSqlDatabaseExport],NullReferenceException + FullyQualifiedErrorId:Microsoft.WindowsAzure.Commands.SqlDatabase.Database.Cmdlet.StartAzureSqlDatabaseExport
这似乎与其他一些问题相似,但似乎没有答案或不适用。我确实在Powershell环境中有类似的程序。我用Azure的自动导出替换了这个程序,现在看来这是一个糟糕的选择!我使用sqlcontext和databasename代替数据库尝试了很多变体。
我的代码中的敏感部分已替换为****:
workflow DBBackup {
param(
[parameter(Mandatory=$true)]
[string] $dbcode
)
$cred = Get-AutomationPSCredential -Name "admindbcredentials"
$VerbosePreference = "Continue"
inlineScript {
$dbcode = $using:dbcode
$cred = $using:cred
if ($dbcode -eq $null)
{
Write-Output "Database code must be specified"
}
Else
{
$dbcode = $dbcode.ToUpper()
$dbsize = 1
$dbrestorewait = 10
$dbserver = "kl8p7d444a"
$stacct = $dbcode.ToLower()
$stkey = "***storagekey***"
Write-Verbose "DB Server '$dbserver' DB Code '$dbcode'"
Write-Verbose "Storage Account '$stacct'"
$url = "https://$dbserver.database.windows.net"
$sqlctx = New-AzureSqlDatabaseServerContext -ManageUrl $url -Credential $cred
# $sqlctx = New-AzureSqlDatabaseServerContext -ManageUrl $url -Credential $cred
$stctx = New-AzureStorageContext -StorageAccountName $stacct -StorageAccountKey $stkey
$dbname = "FSUMS_" + $dbcode
$dt = Get-Date
$timestamp = $dt.ToString("yyyyMMdd") + "_" + $dt.ToString("HHmmss")
$bkupname = $dbname + "_" + $timestamp + ".bacpac"
$stcon = Get-AzureStorageContainer -Context $stctx -Name "backups"
$db = Get-AzureSqlDatabase -Context $sqlctx -DatabaseName $dbname
Write-Verbose "Backup $dbname to $bkupname in storage account $stacct"
Start-AzureSqlDatabaseExport $sqlctx -DatabaseName $dbname -StorageContainer $stcon -BlobName $bkupname
}
}
}
答案 0 :(得分:0)
请尝试使用New-AzureRmSqlDatabaseExport
。此命令将返回导出状态对象。如果需要同步导出,可以在循环中检查“导出状态”。
答案 1 :(得分:0)
添加以下行更正了问题:
在inlineScript之前的工作流程中:
$cred = Get-AutomationPSCredential -Name "admincredentials"
(where admincredentials was an asset with my admin login credentials)
并在inlineScript中:
Add-AzureAccount $cred
Select-AzureSubscription "My subscription"
有些Runbook似乎不需要这样,但最好总是包含它。