Я не уверен, как отлаживать это, считая, что это не проблема с командлетом. Я пытаюсь заменить автоматизированный экспорт SQL на рабочий процесс автоматизации, но я не могу заставить Start-AzureSqlDatabaseExport работать - он продолжает получать следующие предупреждения и сообщения об ошибках.Start-AzureSqlDatabaseExport Ссылка на объект не установлена в экземпляр объекта
d4fc0004-0c0b-443e-ad1b-310af7fd4e2a: [локальный]: Id сеанса клиента: 'c12c92eb-acd5-424d-97dc-84c4e9c4f914-2017-01-04 19: 00: 23Z'
d4fc0004 -0c0b-443e-ad1b-310af7fd4e2a: [локальный]: Запрос клиента Id: 'd534f5fd-0fc0-4d68-8176-7508b35aa9d8-2017-01-04 19: 00: 33Z'
Start-AzureSqlDatabaseExport: Object ссылка не установлена в экземпляр объекта.
В DBBackup: 11 символ: 11 + + CategoryInfo: NotSpecified: (:) [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
}
}
}
Это говорит мне, что это не признает. Я не перешел на использование групп ресурсов - может быть, проблема? Я просто использовал группу ресурсов по умолчанию. Сообщение об ошибке: New-AzureRmSqlDatabaseExport: Термин «Нью-AzureRmSqlDatabaseExport» не распознается как имя командлета, функции, файла сценария или исполняемой программой. Проверьте правильность написания имени или если путь был включен, проверьте правильность пути и повторите попытку. – fsbf
Проверьте, установлен ли модуль AzureRM. Get-Module -ListAvailable AzureRM *. Если не. Устанавливайте модуль AzureRM и Install-AzureRM. Повторите попытку New-AzureRmSqlDatabaseExport –
Я пытаюсь сделать это из Automation на этом этапе. Я вижу, что версия на моей локальной PowerShell для AzureRM.Sql - 2.4.0, но это 1.0.3, когда я запускаю ее из Automation. – fsbf