如何使用 Azure 资源管理器模板部署具有地理复制功能的 sql 数据库
How to deploy a sql database with geo replication using azure resource manager templates
我正在尝试创建一个 ARM 模板,该模板将部署一个主数据库和一个活动的异地复制辅助数据库,这两个数据库目前都属于基本层。我正在使用 "createMode": "OnlineSecondary" 创建辅助数据库并且 "sourceDatabaseId" 是已经创建的主数据库,但是我收到错误 "This feature is not available for the selected database's edition (Basic)." 我认为从2016 年 4 月,活动异地复制可用于所有数据库层吗?我是否无法使用 ARM 模板进行设置?
我模板的相关部分是:
{
"name": "[variables('sqlDatabaseName')]",
"type": "databases",
"location": "East US",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', ,variables('sqlServerName'), '-east')]"
],
"tags": {
"displayName": "SqlDatabase"
},
"properties": {
"createMode": "OnlineSecondary",
"sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', concat(variables('sqlServerName'), '-west'), variables('sqlDatabaseName'))]",
"collation": "[parameters('deployinfo_sqlDatabaseCollation')]",
"edition": "[parameters('deployinfo_sqlDatabaseEdition')]",
"maxSizeBytes": "1073741824",
"requestedServiceObjectiveName": "[parameters('deployinfo_sqlDatabaseRequestedServiceObjectiveName')]"
}
}
更新 - 添加了主数据库资源 json
这是主数据库的资源块:
{
"name": "[variables('sqlDatabaseName')]",
"type": "databases",
"location": "West US",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', variables('sqlServerName'), '-west')]"
],
"tags": {
"displayName": "SqlDatabase"
},
"properties": {
"collation": "[parameters('deployinfo_sqlDatabaseCollation')]",
"edition": "[parameters('deployinfo_sqlDatabaseEdition')]",
"maxSizeBytes": "1073741824",
"requestedServiceObjectiveName": "[parameters('deployinfo_sqlDatabaseRequestedServiceObjectiveName')]"
}
}
是的。 Geo-Replication 也可以为 Basic 层配置,是的,您将能够使用 ARM 模板来完成。我目前正在做完全相同的事情并且可以成功完成。我的异地复制数据库模板在第一次尝试时看起来像这样:
{
"type": "databases",
"name": "SecondaryDB",
"apiVersion": "2014-04-01-preview",
"location": "West US",
"tags": {
"displayName": "SqlDatabase"
},
"properties": {
"createMode": "OnlineSecondary",
"sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', 'primaryserver01', 'PrimaryDB')]",
"collation": "SQL_Latin1_General_CP1_CI_AS",
"edition": "Basic",
"maxSizeBytes": "1073741824",
"requestedServiceObjectiveName": "Basic"
},
"dependsOn": ["[concat('Microsoft.Sql/servers/', 'secondaryserver01')]"]}
我最好的猜测是问题出在传递给模板的参数中,尤其是传递给 "edition" 和 "requestedServiceObjectiveName" 的参数。
找到答案了。事实证明,如果您没有指定所需的 sql 服务器版本,它会启动一个不支持活动地理复制的旧版本。我需要将 sql 服务器声明为版本 12.0 才能使复制工作。
我正在尝试创建一个 ARM 模板,该模板将部署一个主数据库和一个活动的异地复制辅助数据库,这两个数据库目前都属于基本层。我正在使用 "createMode": "OnlineSecondary" 创建辅助数据库并且 "sourceDatabaseId" 是已经创建的主数据库,但是我收到错误 "This feature is not available for the selected database's edition (Basic)." 我认为从2016 年 4 月,活动异地复制可用于所有数据库层吗?我是否无法使用 ARM 模板进行设置?
我模板的相关部分是:
{
"name": "[variables('sqlDatabaseName')]",
"type": "databases",
"location": "East US",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', ,variables('sqlServerName'), '-east')]"
],
"tags": {
"displayName": "SqlDatabase"
},
"properties": {
"createMode": "OnlineSecondary",
"sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', concat(variables('sqlServerName'), '-west'), variables('sqlDatabaseName'))]",
"collation": "[parameters('deployinfo_sqlDatabaseCollation')]",
"edition": "[parameters('deployinfo_sqlDatabaseEdition')]",
"maxSizeBytes": "1073741824",
"requestedServiceObjectiveName": "[parameters('deployinfo_sqlDatabaseRequestedServiceObjectiveName')]"
}
}
更新 - 添加了主数据库资源 json
这是主数据库的资源块:
{
"name": "[variables('sqlDatabaseName')]",
"type": "databases",
"location": "West US",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', variables('sqlServerName'), '-west')]"
],
"tags": {
"displayName": "SqlDatabase"
},
"properties": {
"collation": "[parameters('deployinfo_sqlDatabaseCollation')]",
"edition": "[parameters('deployinfo_sqlDatabaseEdition')]",
"maxSizeBytes": "1073741824",
"requestedServiceObjectiveName": "[parameters('deployinfo_sqlDatabaseRequestedServiceObjectiveName')]"
}
}
是的。 Geo-Replication 也可以为 Basic 层配置,是的,您将能够使用 ARM 模板来完成。我目前正在做完全相同的事情并且可以成功完成。我的异地复制数据库模板在第一次尝试时看起来像这样:
{
"type": "databases",
"name": "SecondaryDB",
"apiVersion": "2014-04-01-preview",
"location": "West US",
"tags": {
"displayName": "SqlDatabase"
},
"properties": {
"createMode": "OnlineSecondary",
"sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', 'primaryserver01', 'PrimaryDB')]",
"collation": "SQL_Latin1_General_CP1_CI_AS",
"edition": "Basic",
"maxSizeBytes": "1073741824",
"requestedServiceObjectiveName": "Basic"
},
"dependsOn": ["[concat('Microsoft.Sql/servers/', 'secondaryserver01')]"]}
我最好的猜测是问题出在传递给模板的参数中,尤其是传递给 "edition" 和 "requestedServiceObjectiveName" 的参数。
找到答案了。事实证明,如果您没有指定所需的 sql 服务器版本,它会启动一个不支持活动地理复制的旧版本。我需要将 sql 服务器声明为版本 12.0 才能使复制工作。