Как установить PITR для всех баз данных в эластичном пуле баз данных Azure Sql? - PullRequest
0 голосов
/ 18 октября 2018

Я думаю, что у меня возникают проблемы с версией, потому что нужный командлет, кажется, доступен только в 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 Ответ

0 голосов
/ 19 октября 2018

Вы можете попытаться установить 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
}

enter image description here

...