Как установить PITR для всех баз данных в эластичном пуле баз данных Azure Sql?
Я думаю, что у меня проблемы с версией, потому что нужный командлет, кажется, доступен только в AzureRM.Sql
версия модуля 4.7.0-preview
,
Я хочу установить политику хранения PITR для многих баз данных в эластичном пуле на 35 дней. По умолчанию мой пул vCore имеет политику хранения 7 дней, что недостаточно. У меня есть сотни баз данных, поэтому нужно установить их все с помощью PowerShell.
Если я получу список баз для обновления с Get-AzureRmSqlElasticPoolDatabase
а затем попробуйте запустить Set-AzureRmSqlDatabaseBackupShortTermRetentionPolicy
Я получаю эту ошибку при запуске последнего:
import-module : The following error occurred while loading the extended type data file: Error in TypeData "Microsoft.Azure.Commands.Sql.Replication.Model.AzureSqlDatabaseCopyModel": The member DefaultDisplayPropertySet is already present.
Error in TypeData "Microsoft.Azure.Commands.Sql.Replication.Model.AzureReplicationLinkModel": The member DefaultDisplayPropertySet is already present.
At line:1 char:1
+ import-module azurerm.sql
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Import-Module], RuntimeException
+ FullyQualifiedErrorId : FormatXmlUpdateException,Microsoft.PowerShell.Commands.ImportModuleCommand
Вещи, которые я пробовал
Я попытался удалить модуль и повторно импортировать его. Та же ошибка Я попытался импортировать требуемую версию модуля и получить список базы данных с помощью первой команды, но затем я получил эту ошибку:
Get-AzureRmSqlElasticPoolDatabase : The 'Get-AzureRmSqlElasticPoolDatabase' command was found in the module 'AzureRM.Sql', but the module could not be loaded. For more information, run 'Import-Module AzureRM.Sql'.
At line:1 char:8
+ $dbs = Get-AzureRmSqlElasticPoolDatabase -ElasticPoolName $settings.E ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-AzureRmSqlElasticPoolDatabase:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoloadMatchingModule
Если я импортирую модуль AzureRm с import-module azurerm.sql
Я получаю эту ошибку:
import-module : The following error occurred while loading the extended type data file: Error in TypeData "Microsoft.Azure.Commands.Sql.Replication.Model.AzureSqlDatabaseCopyModel": The member DefaultDisplayPropertySet is already present.
Error in TypeData "Microsoft.Azure.Commands.Sql.Replication.Model.AzureReplicationLinkModel": The member DefaultDisplayPropertySet is already present.
At line:1 char:1
+ import-module azurerm.sql
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Import-Module], RuntimeException
+ FullyQualifiedErrorId : FormatXmlUpdateException,Microsoft.PowerShell.Commands.ImportModuleCommand
Модули
Get-Module AzureRm -ListAvailable | select Name, Version
:
Name Version
---- -------
AzureRM 6.10.0
Get-Module AzureRm.Sql -ListAvailable | select Name, Version
:
Name Version
---- -------
AzureRM.Sql 4.11.5
AzureRM.Sql 4.7.0
AzureRM.Sql 4.4.0
$PSVersionTable
:
Name Value
---- -----
PSVersion 5.1.17134.228
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.228
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Любые идеи о том, как заставить это работать?
1 ответ
Вы можете попробовать установить 4.11.4-preview
версия AzureRM.Sql
модуль, перейдите по этой ссылке, используйте Install-Module -Name AzureRM.Sql -RequiredVersion 4.11.4-preview -AllowPrerelease
в среде администратора powershell.
После его установки нет необходимости импортировать модуль, вы можете выполнить команду прямо. Если вы хотите проверить модуль, если установка прошла успешно, перейдите к C:\Program Files\WindowsPowerShell\Modules\AzureRM.Sql
, вы найдете 4.11.4
папка.
Затем попробуйте в примере команды установить PITR для всех баз данных в Elastic Pool, он отлично работает на моей стороне.(Вы можете выполнить Get-Help Set-AzureRmSqlDatabaseBackupShortTermRetentionPolicy
чтобы получить использование команды)
$dbs = Get-AzureRmSqlElasticPoolDatabase -ResourceGroupName "joywebapp" -ServerName "joydb" -ElasticPoolName "joyelastic"
foreach($db in $dbs){
Set-AzureRmSqlDatabaseBackupShortTermRetentionPolicy -ResourceGroupName $db.ResourceGroupName -ServerName $db.ServerName -DatabaseName $db.DatabaseName -RetentionDays 35
}