我需要一些帮助来解决二头肌部署问题。在本例中,它是部署一个 sql server 故障转移组,但我对其他二头肌也有类似的问题。
我发现第 24 行第 9 列有错误。如何查看此位置的值?
我在该行(但不是该列)上使用资源 ID。我怎么知道它是否有价值?
资源ID来自上面已有的资源。有没有办法查看传入的databaseName参数的值?
这是错误:
无法处理资源的模板语言表达式 '/subscriptions/ed8e3234-8fcc-4ef0-8438-c12548480e56/resourceGroups/rg-MyProj/providers/Microsoft.Sql/servers/sql-001/failoverGroups/fg-sql-001' 在“24”行和“9”列。 '语言表达式属性数组 索引“1”超出范围。 (代码:无效模板)
这是我的二头肌:
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”超出范围。” (代码:无效模板):
要定义
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
}
]
}
}
部署成功: