Мне нужна помощь в устранении неполадок при развертывании бицепса. В данном случае речь идет о развертывании группы аварийного переключения сервера sql, но у меня аналогичные проблемы с другими бицепсами.
Я вижу, что у меня ошибка в строке 24, столбце 9. Как мне узнать, какие значения находятся в этом месте?
Я использую идентификатор ресурса в этой строке (но не в этом столбце). Как я могу определить, имеет ли оно вообще ценность?
Идентификатор ресурса взят из существующего ресурса, указанного выше. Есть ли возможность увидеть значение переданного параметра DatabaseName?
Вот ошибка:
Невозможно обработать выражения языка шаблонов для ресурса. '/subscriptions/ed8e3234-8fcc-4ef0-8438-c12548480e56/resourceGroups/rg-MyProj/providers/Microsoft.Sql/servers/sql-001/failoverGroups/fg-sql-001' в строке «24» и столбце «9». 'Массив свойств языкового выражения индекс '1' выходит за пределы.' (Код: InvalidTemplate)
А вот мой бицепс:
01: param failoverGroupName string
02: param primarySqlServerName string
03: param secondarySqlServerName string
04: param databaseName string
05: param secondaryResourceGroup string
06:
07: resource primary 'Microsoft.Sql/servers@2022-08-01-preview' existing = {
08: name: primarySqlServerName
09: }
10:
11: resource secondary 'Microsoft.Sql/servers@2022-08-01-preview' existing = {
12: name: secondarySqlServerName
13: scope: resourceGroup(secondaryResourceGroup)
14: }
15:
16: resource db 'Microsoft.Sql/servers/databases@2022-08-01-preview' existing = {
17: name: databaseName
18: }
19:
20: resource sqlServerFailoverGroup 'Microsoft.Sql/servers/failoverGroups@2023-05-01-preview' = {
21: name: failoverGroupName
22: parent: primary
23: properties: {
24: databases: array(db.id)
25: readWriteEndpoint: {
26: failoverPolicy: 'Automatic'
27: failoverWithDataLossGracePeriodMinutes: 60
28: }
29: readOnlyEndpoint: {
30: failoverPolicy: 'Enabled'
31: }
32: partnerServers: [
33: {
34: id: secondary.id
35: }
36: ]
37: }
38: }
39:
Невозможно обработать шаблонные языковые выражения для ресурса. «Индекс массива свойств языковых выражений «1» выходит за пределы». (Код: InvalidTemplate):
Чтобы определить свойство databases
, вам необходимо использовать функцию resourceId
для ссылки на базу данных, существующую на определенном сервере SQL, как показано ниже.
databases: [
resourceId('Microsoft.Sql/servers/databases', primarySqlServerName,databaseName)
]
Полный код бицепса:
param failoverGroupName string = 'latestfover'
param primarySqlServerName string = 'jahser'
param secondarySqlServerName string = 'secondserverj'
param databaseName string = 'newdb'
param secondaryResourceGroup string = 'v-jahnavi-Mindtree'
resource primary 'Microsoft.Sql/servers@2022-08-01-preview' existing = {
name: primarySqlServerName
}
resource secondary 'Microsoft.Sql/servers@2022-08-01-preview' existing = {
name: secondarySqlServerName
scope: resourceGroup(secondaryResourceGroup)
}
resource db 'Microsoft.Sql/servers/databases@2022-08-01-preview' existing = {
name: databaseName
}
resource sqlServerFailoverGroup 'Microsoft.Sql/servers/failoverGroups@2023-05-01-preview' = {
name: failoverGroupName
parent: primary
properties: {
databases: [
resourceId('Microsoft.Sql/servers/databases', primarySqlServerName,databaseName)
]
readWriteEndpoint: {
failoverPolicy: 'Automatic'
failoverWithDataLossGracePeriodMinutes: 60
}
readOnlyEndpoint: {
failoverPolicy: 'Enabled'
}
partnerServers: [
{
id: secondary.id
}
]
}
}
Развертывание выполнено успешно:
Спасибо. Я видел эти примеры и начал с этого. У меня всегда были ошибки, и в конце концов я отказался от этого. Я просто попробовал еще раз, и это сработало. Должно быть, я неправильно указал переменную. Этот ответ меня спас. Я отмечу это как ответ, но технически это не ответило на мой вопрос об устранении неполадок и просмотре значений переменных. Тем не менее, это отличная помощь, поэтому я отмечу это как ответ.