Microsoft. SQL servery/databáze

Definice zdroje Bicep

Typ prostředku serverů/databází je možné nasadit s operacemi, které cílí:

Seznam změněných vlastností v jednotlivých verzích rozhraní API najdete v protokolu změn.

Formát prostředku

Vytvořit Microsoft. Zdroj pro SQL/servery/databáze, přidejte následující Bicep do své šablony.

resource symbolicname 'Microsoft.Sql/servers/databases@2025-02-01-preview' = {
  parent: resourceSymbolicName
  identity: {
    type: 'string'
    userAssignedIdentities: {
      {customized property}: {}
    }
  }
  location: 'string'
  name: 'string'
  properties: {
    autoPauseDelay: int
    availabilityZone: 'string'
    catalogCollation: 'string'
    collation: 'string'
    createMode: 'string'
    elasticPoolId: 'string'
    encryptionProtector: 'string'
    encryptionProtectorAutoRotation: bool
    federatedClientId: 'string'
    freeLimitExhaustionBehavior: 'string'
    highAvailabilityReplicaCount: int
    isLedgerOn: bool
    keys: {
      {customized property}: {}
    }
    licenseType: 'string'
    longTermRetentionBackupResourceId: 'string'
    maintenanceConfigurationId: 'string'
    manualCutover: bool
    maxSizeBytes: int
    minCapacity: int
    performCutover: bool
    preferredEnclaveType: 'string'
    readScale: 'string'
    recoverableDatabaseId: 'string'
    recoveryServicesRecoveryPointId: 'string'
    requestedBackupStorageRedundancy: 'string'
    restorableDroppedDatabaseId: 'string'
    restorePointInTime: 'string'
    sampleName: 'string'
    secondaryType: 'string'
    sourceDatabaseDeletionDate: 'string'
    sourceDatabaseId: 'string'
    sourceResourceId: 'string'
    useFreeLimit: bool
    zoneRedundant: bool
  }
  sku: {
    capacity: int
    family: 'string'
    name: 'string'
    size: 'string'
    tier: 'string'
  }
  tags: {
    {customized property}: 'string'
  }
}

Hodnoty vlastností

Microsoft. SQL/servery/databáze

Name Description Value
identita Identita databáze v Azure Active Directory. DatabaseIdentity
poloha Geografické umístění, ve kterém se nachází zdroj string (povinné)
name Název prostředku string (povinné)
nadřazený objekt V Bicep můžete specifikovat rodičovský zdroj pro poddaný zdroj. Tuto vlastnost je potřeba přidat pouze v případě, že je podřízený prostředek deklarován mimo nadřazený prostředek.

Další informace najdete v tématu Podřízený prostředek mimo nadřazený prostředek.
Symbolický název prostředku typu: servery
properties Vlastnosti prostředku. DatabaseProperties
sku Skladová položka databáze.

Seznam skladových položek se může lišit podle oblasti a nabídky podpory. Pro určení SKU (včetně názvu SKU, úrovně/edice, rodiny a kapacity), které jsou dostupné vašemu předplatnému v Azure regionu, použijte Capabilities_ListByLocation REST API nebo jeden z následujících příkazů:

azurecli<br />az sql db list-editions -l &lt;location&gt; -o table<br />

powershell<br />Get-AzSqlServerServiceObjective -Location &lt;location&gt;<br />
Sku
tags Štítky prostředků Slovník názvů a hodnot značek Viz Značky v šablonách

DatabaseIdentity

Name Description Value
typ Typ identity 'None'
'UserAssigned'
userAssignedIdentities ID prostředků identit přiřazených uživatelem, které se mají použít DatabaseIdentityUserAssignedIdentities

DatabaseIdentityUserAssignedIdentities

Name Description Value

DatabaseKey

Name Description Value

DatabaseProperties

Name Description Value
autoPauseDelay Doba v minutách, po které se databáze automaticky pozastaví. Hodnota -1 znamená, že automatické pozastavení je zakázané. int
availabilityZone Určuje zónu dostupnosti, ke které je databáze připnutá. '1'
'2'
'3'
'NoPreference'
catalogCollation Kolace katalogu metadat. 'DATABASE_DEFAULT'
'SQL_Latin1_General_CP1_CI_AS'
kolace Kolace databáze. řetězec
createMode Určuje režim vytváření databáze.

Výchozí hodnota: běžné vytvoření databáze.

Kopírování: Vytvoří databázi jako kopii existující databáze. sourceDatabaseId musí být zadán jako ID prostředku zdrojové databáze.

Sekundární: Vytvoří databázi jako sekundární repliku existující databáze. sourceDatabaseId musí být zadán jako ID prostředku existující primární databáze.

PointInTimeRestore: Vytvoří databázi obnovením zálohy existující databáze k určitému bodu v čase. sourceDatabaseId musí být zadán jako ID prostředku existující databáze a restorePointInTime musí být zadán.

Obnovení: Vytvoří databázi obnovením geograficky replikované zálohy. sourceDatabaseId musí být zadán jako obnovitelné ID prostředku databáze.

Obnovení: Vytvoří databázi obnovením zálohy odstraněné databáze. sourceDatabaseId musí být zadán. Pokud je sourceDatabaseId původní ID prostředku databáze, musí být zadán sourceDatabaseDeletionDate. Jinak sourceDatabaseId musí být obnovitelné vyřazené ID prostředku databáze a sourceDatabaseDeletionDate se ignoruje. restorePointInTime může být také zadán pro obnovení z dřívějšího bodu v čase.

RestoreLongTermRetentionBackup: Vytvoří databázi obnovením z dlouhodobého trezoru uchovávání. recoveryServicesRecoveryPointResourceId musí být zadán jako ID prostředku bodu obnovení.

Edice DataWarehouse nepodporuje kopírování, sekundární a restoreLongTermRetentionBackup.
'Copy'
'Default'
'OnlineSecondary'
'PointInTimeRestore'
'Recovery'
'Restore'
'RestoreExternalBackup'
'RestoreExternalBackupSecondary'
'RestoreLongTermRetentionBackup'
'Secondary'
elasticPoolId Identifikátor prostředku elastického fondu obsahujícího tuto databázi. řetězec
encryptionProtector Identifikátor URI služby Azure Key Vault databáze, pokud je nakonfigurovaný pro klíče spravované zákazníkem databáze. řetězec
encryptionProtectorAutoRotation Příznak pro povolení nebo zakázání automatické obměna klíče AKV pro ochranu šifrování databáze. bool
federatedClientId ID klienta používaného pro scénář cmk pro různé tenanty na databázi string

Constraints:
Minimální délka = 36
Maximální délka = 36
Model = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
freeLimitExhaustionBehavior Určuje chování při vyčerpání měsíčních bezplatných limitů pro bezplatnou databázi.

AutoPause: Databáze se po vyčerpání bezplatných limitů po zbytek měsíce automaticky pozastaví.

BillForUsage: Databáze bude i nadále online po vyčerpání bezplatných limitů a veškeré nadlimitní využití se budou účtovat.
'AutoPause'
'BillOverUsage'
highAvailabilityReplicaCount Počet sekundárních replik přidružených k databázi edice Pro důležité obchodní informace, Premium nebo Hyperscale, které slouží k zajištění vysoké dostupnosti. Neplatí pro databázi Hyperscale v rámci elastického fondu. int
isLedgerOn Bez ohledu na to, jestli se jedná o databázi registru, znamená to, že všechny tabulky v databázi jsou tabulky registru. Poznámka: Hodnotu této vlastnosti nelze po vytvoření databáze změnit. bool
keys ID prostředků identit přiřazených uživatelem, které se mají použít DatabasePropertiesKeys
licenseType Typ licence, který se má použít pro tuto databázi. LicenseIncluded, pokud potřebujete licenci, nebo BasePrice pokud licenci máte a jste způsobilí pro Azure Hybrid Benefit. 'BasePrice'
'LicenseIncluded'
longTermRetentionBackupResourceId Identifikátor prostředku dlouhodobého uchovávání záloh přidružených k vytvoření operace této databáze. řetězec
maintenanceConfigurationId ID konfigurace údržby přiřazené k databázi. Tato konfigurace definuje období, kdy dojde k aktualizacím údržby. řetězec
manualCutover Bez ohledu na to, jestli je potřeba provést ruční přímé přechody řízené zákazníkem během operace aktualizace databáze na úroveň Hyperscale.

Tato vlastnost se vztahuje pouze při škálování databáze z úrovně Pro důležité obchodní informace, Pro obecné účely, Úrovně Premium/Standard na úroveň Hyperscale.

Pokud je zadán ručnícutover, operace škálování bude čekat, až uživatelský vstup aktivuje přímou migraci do databáze Hyperscale.

Pokud chcete aktivovat přímou operaci, zadejte parametr performCutover, pokud je operace škálování ve stavu Čekání.
bool
maxSizeBytes Maximální velikost databáze vyjádřená v bajtech. int
minCapacity Minimální kapacita, kterou databáze bude mít vždy přidělenou, pokud není pozastavená int
performCutover Aktivace ručního přímého přechodu řízeného zákazníkem během čekacího stavu během probíhající operace škálování

Tento parametr vlastnosti se vztahuje pouze na operace škálování, které jsou inicializovány spolu s parametrem manualCutover.

Tato vlastnost se vztahuje pouze v případě, že už probíhá škálování databáze z úrovně Pro důležité obchodní informace, Pro obecné účely, Úrovně Premium/Standard na úroveň Hyperscale.

Při zadání příkazu performCutover se operace škálování aktivuje přímou migraci a provede změnu role na databázi Hyperscale.
bool
preferredEnclaveType Typ enklávy požadované v databázi, tj. výchozí enklávy nebo enklávy VBS. 'Default'
'VBS'
readScale Stav směrování jen pro čtení. Pokud je povoleno, mohou být spojení, která mají aplikační záměr nastavený pouze na čtení ve svém connection string, směrována do readonly sekundární repliky ve stejné oblasti. Neplatí pro databázi Hyperscale v rámci elastického fondu. 'Disabled'
'Enabled'
recoverableDatabaseId Identifikátor prostředku obnovitelné databáze přidružené k operaci vytvoření této databáze. řetězec
recoveryServicesRecoveryPointId Identifikátor prostředku bodu obnovení přidruženého k operaci vytvoření této databáze. řetězec
requestedBackupStorageRedundancy Typ účtu úložiště, který se má použít k ukládání záloh pro tuto databázi. 'Geo'
'GeoZone'
'Local'
'Zone'
restorableDroppedDatabaseId Identifikátor prostředku obnovené vyřazené databáze přidružené k operaci vytvoření této databáze. řetězec
restorePointInTime Určuje bod v čase (formát ISO8601) zdrojové databáze, která se obnoví a vytvoří novou databázi. řetězec
sampleName Název ukázkového schématu, které se má použít při vytváření této databáze. 'AdventureWorksLT'
'WideWorldImportersFull'
'WideWorldImportersStd'
secondaryType Sekundární typ databáze, pokud je sekundární. Platné hodnoty jsou Geo, Named a Standby. 'Geo'
'Named'
'Standby'
sourceDatabaseDeletionDate Určuje čas odstranění databáze. řetězec
sourceDatabaseId Identifikátor prostředku zdrojové databáze přidružené k operaci vytvoření této databáze. řetězec
sourceResourceId Identifikátor prostředku zdroje přidruženého k operaci vytvoření této databáze.

Tato vlastnost je podporována pouze pro edici DataWarehouse a umožňuje obnovení napříč předplatnými.

Pokud je zadán sourceResourceId, sourceDatabaseId, recoverableDatabaseId, restoreableDroppedDatabaseId a sourceDatabaseDeletionDate nesmí být zadán a CreateMode musí být PointInTimeRestore, Restore nebo Recover.

Pokud je createMode PointInTimeRestore, sourceResourceId musí být ID prostředku existující databáze nebo existujícího fondu SQL a restorePointInTime musí být zadán.

Pokud je createMode Restore, sourceResourceId musí být ID prostředku obnovitelné vyřazené databáze nebo obnovitelné vyřazené fondu SQL.

Pokud je createMode Recover, sourceResourceId musí být ID prostředku obnovitelné databáze nebo obnovitelného fondu SQL.

Pokud zdrojové předplatné patří do jiného tenanta než cílového předplatného, musí hlavička x-ms-authorization-auxiliary obsahovat ověřovací token pro zdrojového tenanta. Další podrobnosti o hlavičce x-ms-authorization-auxiliary najdete v tématu /azure/azure-resource-manager/management/authenticate-multi-tenant
řetězec
useFreeLimit Bez ohledu na to, jestli databáze používá bezplatné měsíční limity. Povoleno pro jednu databázi v předplatném. bool
zoneRedundant Bez ohledu na to, jestli je tato databáze zónově redundantní, což znamená, že repliky této databáze budou rozloženy do více zón dostupnosti. bool

DatabasePropertiesKeys

Name Description Value

DatabaseUserIdentity

Name Description Value

Sku

Name Description Value
kapacita Kapacita konkrétní skladové položky. int
family Pokud má služba různé generace hardwaru, pro stejnou skladovou položku, můžete ji zde zachytit. řetězec
name Název skladové položky, obvykle písmeno + číslo, např. P3. string (povinné)
size Velikost konkrétní skladové položky řetězec
přesunout do jiné vrstvy Úroveň nebo edice konkrétní skladové položky, např. Basic, Premium. řetězec

TrackedResourceTags

Name Description Value

Příklady použití

Vzorky Bicepsu

Základní příklad nasazení MS SQL databáze.

@secure()
@description('The administrator login password for the SQL server')
param administratorLoginPassword string
param resourceName string = 'acctest0001'
param location string = 'westeurope'

resource server 'Microsoft.Sql/servers@2021-02-01-preview' = {
  name: resourceName
  location: location
  properties: {
    administratorLogin: 'mradministrator'
    administratorLoginPassword: administratorLoginPassword
    minimalTlsVersion: '1.2'
    publicNetworkAccess: 'Enabled'
    restrictOutboundNetworkAccess: 'Disabled'
    version: '12.0'
  }
}

resource database 'Microsoft.Sql/servers/databases@2021-02-01-preview' = {
  name: resourceName
  location: location
  parent: server
  properties: {
    autoPauseDelay: 0
    createMode: 'Default'
    elasticPoolId: ''
    highAvailabilityReplicaCount: 0
    isLedgerOn: false
    licenseType: 'LicenseIncluded'
    maintenanceConfigurationId: resourceId('Microsoft.Maintenance/publicMaintenanceConfigurations', 'SQL_Default')
    minCapacity: 0
    readScale: 'Disabled'
    requestedBackupStorageRedundancy: 'Geo'
    zoneRedundant: false
  }
}

Ověřené moduly Azure

Následující Azure ověřené moduly lze použít k nasazení tohoto typu zdroje.

Modul Description
Azure SQL Database AVM Resource Module for Azure SQL Database

Azure Quickstart Samples

Následující šablony Azure Quickstart obsahují Bicep vzorky pro nasazení tohoto typu zdroje.

Soubor Bicep Description
Azure SQL Server s auditem napsaným na Log Analytics Tato šablona vám umožní nasadit Azure SQL server s povoleným auditem pro zápis auditních logů do Log Analytics (OMS workspace)
Vytvořit SQL Server a databázi Tato šablona umožňuje vytvořit sql Database a Server.
Dedikovaný SQL pool s transparentním šifrováním Vytváří SQL Server a dedikovaný SQL pool (dříve SQL DW) s Transparent Data Encryption.
Nasadit sportovní analytiku na Azure architektuře Vytváří Azure storage účet s povoleným ADLS Gen 2, instanci Azure Data Factory s propojenými službami pro storage účet (a Azure SQL Database, pokud je nasazena) a instanci Azure Databricks. Identita AAD pro uživatele, který nasazuje šablonu, a spravovanou identitu instance ADF se udělí roli Přispěvatel dat objektů blob služby Storage v účtu úložiště. Existují také možnosti nasadit instanci Azure Key Vault, Azure SQL Database a Azure Event Hub (pro použití streamování). Když je nasazen Azure Key Vault, identita spravovaná datovou továrnou a identita AAD uživatele nasazujícího šablonu dostanou roli uživatele Key Vault Secrets.
Příklad Private Endpoint Tato šablona ukazuje, jak vytvořit soukromý endpoint směřující na Azure SQL Server
Provisionovat webovou aplikaci s SQL databází Tato šablona zřídí webovou aplikaci, službu SQL Database, nastavení automatického škálování, pravidla upozornění a App Insights. Konfiguruje connection string ve webové aplikaci pro databázi.
Sonarqube Docker Web App na Linuxu s Azure SQL Tato šablona nasazuje Sonarqube do Azure App Service webového aplikačního kontejneru Linuxu s použitím oficiálního obrazu Sonarqube a podpořeného Azure SQL Server.
Web App s Managed Identity, SQL Server a ΑΙ Jednoduchý příklad nasazení Azure infrastruktury pro aplikaci + data + spravovanou identitu + monitoring

Definice prostředku šablony ARM

Typ prostředku serverů/databází je možné nasadit s operacemi, které cílí:

Seznam změněných vlastností v jednotlivých verzích rozhraní API najdete v protokolu změn.

Formát prostředku

Vytvořit Microsoft. Zdroj pro SQL/servery/databáze, přidejte do šablony následující JSON.

{
  "type": "Microsoft.Sql/servers/databases",
  "apiVersion": "2025-02-01-preview",
  "name": "string",
  "identity": {
    "type": "string",
    "userAssignedIdentities": {
      "{customized property}": {
      }
    }
  },
  "location": "string",
  "properties": {
    "autoPauseDelay": "int",
    "availabilityZone": "string",
    "catalogCollation": "string",
    "collation": "string",
    "createMode": "string",
    "elasticPoolId": "string",
    "encryptionProtector": "string",
    "encryptionProtectorAutoRotation": "bool",
    "federatedClientId": "string",
    "freeLimitExhaustionBehavior": "string",
    "highAvailabilityReplicaCount": "int",
    "isLedgerOn": "bool",
    "keys": {
      "{customized property}": {
      }
    },
    "licenseType": "string",
    "longTermRetentionBackupResourceId": "string",
    "maintenanceConfigurationId": "string",
    "manualCutover": "bool",
    "maxSizeBytes": "int",
    "minCapacity": "int",
    "performCutover": "bool",
    "preferredEnclaveType": "string",
    "readScale": "string",
    "recoverableDatabaseId": "string",
    "recoveryServicesRecoveryPointId": "string",
    "requestedBackupStorageRedundancy": "string",
    "restorableDroppedDatabaseId": "string",
    "restorePointInTime": "string",
    "sampleName": "string",
    "secondaryType": "string",
    "sourceDatabaseDeletionDate": "string",
    "sourceDatabaseId": "string",
    "sourceResourceId": "string",
    "useFreeLimit": "bool",
    "zoneRedundant": "bool"
  },
  "sku": {
    "capacity": "int",
    "family": "string",
    "name": "string",
    "size": "string",
    "tier": "string"
  },
  "tags": {
    "{customized property}": "string"
  }
}

Hodnoty vlastností

Microsoft. SQL/servery/databáze

Name Description Value
apiVersion Verze rozhraní API 2025-02-01-preview
identita Identita databáze v Azure Active Directory. DatabaseIdentity
poloha Geografické umístění, ve kterém se nachází zdroj string (povinné)
name Název prostředku string (povinné)
properties Vlastnosti prostředku. DatabaseProperties
sku Skladová položka databáze.

Seznam skladových položek se může lišit podle oblasti a nabídky podpory. Pro určení SKU (včetně názvu SKU, úrovně/edice, rodiny a kapacity), které jsou dostupné vašemu předplatnému v Azure regionu, použijte Capabilities_ListByLocation REST API nebo jeden z následujících příkazů:

azurecli<br />az sql db list-editions -l &lt;location&gt; -o table<br />

powershell<br />Get-AzSqlServerServiceObjective -Location &lt;location&gt;<br />
Sku
tags Štítky prostředků Slovník názvů a hodnot značek Viz Značky v šablonách
typ Typ prostředku 'Microsoft. SQL/servery/databáze'

DatabaseIdentity

Name Description Value
typ Typ identity 'None'
'UserAssigned'
userAssignedIdentities ID prostředků identit přiřazených uživatelem, které se mají použít DatabaseIdentityUserAssignedIdentities

DatabaseIdentityUserAssignedIdentities

Name Description Value

DatabaseKey

Name Description Value

DatabaseProperties

Name Description Value
autoPauseDelay Doba v minutách, po které se databáze automaticky pozastaví. Hodnota -1 znamená, že automatické pozastavení je zakázané. int
availabilityZone Určuje zónu dostupnosti, ke které je databáze připnutá. '1'
'2'
'3'
'NoPreference'
catalogCollation Kolace katalogu metadat. 'DATABASE_DEFAULT'
'SQL_Latin1_General_CP1_CI_AS'
kolace Kolace databáze. řetězec
createMode Určuje režim vytváření databáze.

Výchozí hodnota: běžné vytvoření databáze.

Kopírování: Vytvoří databázi jako kopii existující databáze. sourceDatabaseId musí být zadán jako ID prostředku zdrojové databáze.

Sekundární: Vytvoří databázi jako sekundární repliku existující databáze. sourceDatabaseId musí být zadán jako ID prostředku existující primární databáze.

PointInTimeRestore: Vytvoří databázi obnovením zálohy existující databáze k určitému bodu v čase. sourceDatabaseId musí být zadán jako ID prostředku existující databáze a restorePointInTime musí být zadán.

Obnovení: Vytvoří databázi obnovením geograficky replikované zálohy. sourceDatabaseId musí být zadán jako obnovitelné ID prostředku databáze.

Obnovení: Vytvoří databázi obnovením zálohy odstraněné databáze. sourceDatabaseId musí být zadán. Pokud je sourceDatabaseId původní ID prostředku databáze, musí být zadán sourceDatabaseDeletionDate. Jinak sourceDatabaseId musí být obnovitelné vyřazené ID prostředku databáze a sourceDatabaseDeletionDate se ignoruje. restorePointInTime může být také zadán pro obnovení z dřívějšího bodu v čase.

RestoreLongTermRetentionBackup: Vytvoří databázi obnovením z dlouhodobého trezoru uchovávání. recoveryServicesRecoveryPointResourceId musí být zadán jako ID prostředku bodu obnovení.

Edice DataWarehouse nepodporuje kopírování, sekundární a restoreLongTermRetentionBackup.
'Copy'
'Default'
'OnlineSecondary'
'PointInTimeRestore'
'Recovery'
'Restore'
'RestoreExternalBackup'
'RestoreExternalBackupSecondary'
'RestoreLongTermRetentionBackup'
'Secondary'
elasticPoolId Identifikátor prostředku elastického fondu obsahujícího tuto databázi. řetězec
encryptionProtector Identifikátor URI služby Azure Key Vault databáze, pokud je nakonfigurovaný pro klíče spravované zákazníkem databáze. řetězec
encryptionProtectorAutoRotation Příznak pro povolení nebo zakázání automatické obměna klíče AKV pro ochranu šifrování databáze. bool
federatedClientId ID klienta používaného pro scénář cmk pro různé tenanty na databázi string

Constraints:
Minimální délka = 36
Maximální délka = 36
Model = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
freeLimitExhaustionBehavior Určuje chování při vyčerpání měsíčních bezplatných limitů pro bezplatnou databázi.

AutoPause: Databáze se po vyčerpání bezplatných limitů po zbytek měsíce automaticky pozastaví.

BillForUsage: Databáze bude i nadále online po vyčerpání bezplatných limitů a veškeré nadlimitní využití se budou účtovat.
'AutoPause'
'BillOverUsage'
highAvailabilityReplicaCount Počet sekundárních replik přidružených k databázi edice Pro důležité obchodní informace, Premium nebo Hyperscale, které slouží k zajištění vysoké dostupnosti. Neplatí pro databázi Hyperscale v rámci elastického fondu. int
isLedgerOn Bez ohledu na to, jestli se jedná o databázi registru, znamená to, že všechny tabulky v databázi jsou tabulky registru. Poznámka: Hodnotu této vlastnosti nelze po vytvoření databáze změnit. bool
keys ID prostředků identit přiřazených uživatelem, které se mají použít DatabasePropertiesKeys
licenseType Typ licence, který se má použít pro tuto databázi. LicenseIncluded, pokud potřebujete licenci, nebo BasePrice pokud licenci máte a jste způsobilí pro Azure Hybrid Benefit. 'BasePrice'
'LicenseIncluded'
longTermRetentionBackupResourceId Identifikátor prostředku dlouhodobého uchovávání záloh přidružených k vytvoření operace této databáze. řetězec
maintenanceConfigurationId ID konfigurace údržby přiřazené k databázi. Tato konfigurace definuje období, kdy dojde k aktualizacím údržby. řetězec
manualCutover Bez ohledu na to, jestli je potřeba provést ruční přímé přechody řízené zákazníkem během operace aktualizace databáze na úroveň Hyperscale.

Tato vlastnost se vztahuje pouze při škálování databáze z úrovně Pro důležité obchodní informace, Pro obecné účely, Úrovně Premium/Standard na úroveň Hyperscale.

Pokud je zadán ručnícutover, operace škálování bude čekat, až uživatelský vstup aktivuje přímou migraci do databáze Hyperscale.

Pokud chcete aktivovat přímou operaci, zadejte parametr performCutover, pokud je operace škálování ve stavu Čekání.
bool
maxSizeBytes Maximální velikost databáze vyjádřená v bajtech. int
minCapacity Minimální kapacita, kterou databáze bude mít vždy přidělenou, pokud není pozastavená int
performCutover Aktivace ručního přímého přechodu řízeného zákazníkem během čekacího stavu během probíhající operace škálování

Tento parametr vlastnosti se vztahuje pouze na operace škálování, které jsou inicializovány spolu s parametrem manualCutover.

Tato vlastnost se vztahuje pouze v případě, že už probíhá škálování databáze z úrovně Pro důležité obchodní informace, Pro obecné účely, Úrovně Premium/Standard na úroveň Hyperscale.

Při zadání příkazu performCutover se operace škálování aktivuje přímou migraci a provede změnu role na databázi Hyperscale.
bool
preferredEnclaveType Typ enklávy požadované v databázi, tj. výchozí enklávy nebo enklávy VBS. 'Default'
'VBS'
readScale Stav směrování jen pro čtení. Pokud je povoleno, mohou být spojení, která mají aplikační záměr nastavený pouze na čtení ve svém connection string, směrována do readonly sekundární repliky ve stejné oblasti. Neplatí pro databázi Hyperscale v rámci elastického fondu. 'Disabled'
'Enabled'
recoverableDatabaseId Identifikátor prostředku obnovitelné databáze přidružené k operaci vytvoření této databáze. řetězec
recoveryServicesRecoveryPointId Identifikátor prostředku bodu obnovení přidruženého k operaci vytvoření této databáze. řetězec
requestedBackupStorageRedundancy Typ účtu úložiště, který se má použít k ukládání záloh pro tuto databázi. 'Geo'
'GeoZone'
'Local'
'Zone'
restorableDroppedDatabaseId Identifikátor prostředku obnovené vyřazené databáze přidružené k operaci vytvoření této databáze. řetězec
restorePointInTime Určuje bod v čase (formát ISO8601) zdrojové databáze, která se obnoví a vytvoří novou databázi. řetězec
sampleName Název ukázkového schématu, které se má použít při vytváření této databáze. 'AdventureWorksLT'
'WideWorldImportersFull'
'WideWorldImportersStd'
secondaryType Sekundární typ databáze, pokud je sekundární. Platné hodnoty jsou Geo, Named a Standby. 'Geo'
'Named'
'Standby'
sourceDatabaseDeletionDate Určuje čas odstranění databáze. řetězec
sourceDatabaseId Identifikátor prostředku zdrojové databáze přidružené k operaci vytvoření této databáze. řetězec
sourceResourceId Identifikátor prostředku zdroje přidruženého k operaci vytvoření této databáze.

Tato vlastnost je podporována pouze pro edici DataWarehouse a umožňuje obnovení napříč předplatnými.

Pokud je zadán sourceResourceId, sourceDatabaseId, recoverableDatabaseId, restoreableDroppedDatabaseId a sourceDatabaseDeletionDate nesmí být zadán a CreateMode musí být PointInTimeRestore, Restore nebo Recover.

Pokud je createMode PointInTimeRestore, sourceResourceId musí být ID prostředku existující databáze nebo existujícího fondu SQL a restorePointInTime musí být zadán.

Pokud je createMode Restore, sourceResourceId musí být ID prostředku obnovitelné vyřazené databáze nebo obnovitelné vyřazené fondu SQL.

Pokud je createMode Recover, sourceResourceId musí být ID prostředku obnovitelné databáze nebo obnovitelného fondu SQL.

Pokud zdrojové předplatné patří do jiného tenanta než cílového předplatného, musí hlavička x-ms-authorization-auxiliary obsahovat ověřovací token pro zdrojového tenanta. Další podrobnosti o hlavičce x-ms-authorization-auxiliary najdete v tématu /azure/azure-resource-manager/management/authenticate-multi-tenant
řetězec
useFreeLimit Bez ohledu na to, jestli databáze používá bezplatné měsíční limity. Povoleno pro jednu databázi v předplatném. bool
zoneRedundant Bez ohledu na to, jestli je tato databáze zónově redundantní, což znamená, že repliky této databáze budou rozloženy do více zón dostupnosti. bool

DatabasePropertiesKeys

Name Description Value

DatabaseUserIdentity

Name Description Value

Sku

Name Description Value
kapacita Kapacita konkrétní skladové položky. int
family Pokud má služba různé generace hardwaru, pro stejnou skladovou položku, můžete ji zde zachytit. řetězec
name Název skladové položky, obvykle písmeno + číslo, např. P3. string (povinné)
size Velikost konkrétní skladové položky řetězec
přesunout do jiné vrstvy Úroveň nebo edice konkrétní skladové položky, např. Basic, Premium. řetězec

TrackedResourceTags

Name Description Value

Příklady použití

šablony pro rychlý start pro Azure

Následující Azure Šablony Quickstart nasazují tento typ zdroje.

Template Description
Azure SQL Server s auditem napsaným na Log Analytics

Nasadit do Azure
Tato šablona vám umožní nasadit Azure SQL server s povoleným auditem pro zápis auditních logů do Log Analytics (OMS workspace)
Vytvořit SQL Server a databázi

Nasadit do Azure
Tato šablona umožňuje vytvořit sql Database a Server.
Dedikovaný SQL pool s transparentním šifrováním

Nasadit do Azure
Vytváří SQL Server a dedikovaný SQL pool (dříve SQL DW) s Transparent Data Encryption.
Nasadit nový SQL Elastic Pool

Nasadit do Azure
Tato šablona vám umožní nasadit nový SQL Elastic Pool s nově přiřazeným SQL Server a novými SQL databázemi, které k němu přiřadíte.
Nasadit sportovní analytiku na Azure architektuře

Nasadit do Azure
Vytváří Azure storage účet s povoleným ADLS Gen 2, instanci Azure Data Factory s propojenými službami pro storage účet (a Azure SQL Database, pokud je nasazena) a instanci Azure Databricks. Identita AAD pro uživatele, který nasazuje šablonu, a spravovanou identitu instance ADF se udělí roli Přispěvatel dat objektů blob služby Storage v účtu úložiště. Existují také možnosti nasadit instanci Azure Key Vault, Azure SQL Database a Azure Event Hub (pro použití streamování). Když je nasazen Azure Key Vault, identita spravovaná datovou továrnou a identita AAD uživatele nasazujícího šablonu dostanou roli uživatele Key Vault Secrets.
HDInsight s vlastním Ambari + Hive Metastore DB ve VNET

Nasadit do Azure
Tato šablona umožňuje vytvořit cluster HDInsight ve stávající virtuální síti s novou databází SQL, která slouží jako vlastní databáze Ambari i metastore Hive. Musíte mít existující server SQL, účet úložiště a virtuální síť.
Příklad Private Endpoint

Nasadit do Azure
Tato šablona ukazuje, jak vytvořit soukromý endpoint směřující na Azure SQL Server
Provisionovat webovou aplikaci s SQL databází

Nasadit do Azure
Tato šablona zřídí webovou aplikaci, službu SQL Database, nastavení automatického škálování, pravidla upozornění a App Insights. Konfiguruje connection string ve webové aplikaci pro databázi.
Remote Desktop Služby s vysokou dostupností

Nasadit do Azure
Tento vzorový kód ARM šablony nasadí laboratoř Remote Desktop Services 2019 Session Collection s vysokou dostupností. Cílem je nasadit plně redundantní, vysoce dostupné řešení pro Remote Desktop Services s využitím Windows Server 2019.
Sonarqube Docker Web App na Linuxu s Azure SQL

Nasadit do Azure
Tato šablona nasazuje Sonarqube do Azure App Service webového aplikačního kontejneru Linuxu s použitím oficiálního obrazu Sonarqube a podpořeného Azure SQL Server.
Web App s Managed Identity, SQL Server a ΑΙ

Nasadit do Azure
Jednoduchý příklad nasazení Azure infrastruktury pro aplikaci + data + spravovanou identitu + monitoring
WebApp spotřebovává Azure SQL Private Endpoint

Nasadit do Azure
Tato šablona ukazuje, jak vytvořit webovou aplikaci, která využívá soukromý endpoint směřující na Azure SQL Server

Definice prostředku Terraformu (poskytovatel AzAPI)

Typ prostředku serverů/databází je možné nasadit s operacemi, které cílí:

  • skupiny prostředků

Seznam změněných vlastností v jednotlivých verzích rozhraní API najdete v protokolu změn.

Formát prostředku

Vytvořit Microsoft. Zdroj pro SQL/servery/databáze, přidejte následující Terraform do své šablony.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.Sql/servers/databases@2025-02-01-preview"
  name = "string"
  parent_id = "string"
  identity {
    type = "string"
    identity_ids = [
      "string"
    ]
  }
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = {
    properties = {
      autoPauseDelay = int
      availabilityZone = "string"
      catalogCollation = "string"
      collation = "string"
      createMode = "string"
      elasticPoolId = "string"
      encryptionProtector = "string"
      encryptionProtectorAutoRotation = bool
      federatedClientId = "string"
      freeLimitExhaustionBehavior = "string"
      highAvailabilityReplicaCount = int
      isLedgerOn = bool
      keys = {
        {customized property} = {
        }
      }
      licenseType = "string"
      longTermRetentionBackupResourceId = "string"
      maintenanceConfigurationId = "string"
      manualCutover = bool
      maxSizeBytes = int
      minCapacity = int
      performCutover = bool
      preferredEnclaveType = "string"
      readScale = "string"
      recoverableDatabaseId = "string"
      recoveryServicesRecoveryPointId = "string"
      requestedBackupStorageRedundancy = "string"
      restorableDroppedDatabaseId = "string"
      restorePointInTime = "string"
      sampleName = "string"
      secondaryType = "string"
      sourceDatabaseDeletionDate = "string"
      sourceDatabaseId = "string"
      sourceResourceId = "string"
      useFreeLimit = bool
      zoneRedundant = bool
    }
    sku = {
      capacity = int
      family = "string"
      name = "string"
      size = "string"
      tier = "string"
    }
  }
}

Hodnoty vlastností

Microsoft. SQL/servery/databáze

Name Description Value
identita Identita databáze v Azure Active Directory. DatabaseIdentity
poloha Geografické umístění, ve kterém se nachází zdroj string (povinné)
name Název prostředku string (povinné)
parent_id ID prostředku, který je nadřazený pro tento prostředek. ID prostředku typu: servery
properties Vlastnosti prostředku. DatabaseProperties
sku Skladová položka databáze.

Seznam skladových položek se může lišit podle oblasti a nabídky podpory. Pro určení SKU (včetně názvu SKU, úrovně/edice, rodiny a kapacity), které jsou dostupné vašemu předplatnému v Azure regionu, použijte Capabilities_ListByLocation REST API nebo jeden z následujících příkazů:

azurecli<br />az sql db list-editions -l &lt;location&gt; -o table<br />

powershell<br />Get-AzSqlServerServiceObjective -Location &lt;location&gt;<br />
Sku
tags Štítky prostředků Slovník názvů a hodnot značek
typ Typ prostředku "Microsoft. Sql/servers/databases@2025-02-01-preview"

DatabaseIdentity

Name Description Value
typ Typ identity 'None'
'UserAssigned'
userAssignedIdentities ID prostředků identit přiřazených uživatelem, které se mají použít DatabaseIdentityUserAssignedIdentities

DatabaseIdentityUserAssignedIdentities

Name Description Value

DatabaseKey

Name Description Value

DatabaseProperties

Name Description Value
autoPauseDelay Doba v minutách, po které se databáze automaticky pozastaví. Hodnota -1 znamená, že automatické pozastavení je zakázané. int
availabilityZone Určuje zónu dostupnosti, ke které je databáze připnutá. '1'
'2'
'3'
'NoPreference'
catalogCollation Kolace katalogu metadat. 'DATABASE_DEFAULT'
'SQL_Latin1_General_CP1_CI_AS'
kolace Kolace databáze. řetězec
createMode Určuje režim vytváření databáze.

Výchozí hodnota: běžné vytvoření databáze.

Kopírování: Vytvoří databázi jako kopii existující databáze. sourceDatabaseId musí být zadán jako ID prostředku zdrojové databáze.

Sekundární: Vytvoří databázi jako sekundární repliku existující databáze. sourceDatabaseId musí být zadán jako ID prostředku existující primární databáze.

PointInTimeRestore: Vytvoří databázi obnovením zálohy existující databáze k určitému bodu v čase. sourceDatabaseId musí být zadán jako ID prostředku existující databáze a restorePointInTime musí být zadán.

Obnovení: Vytvoří databázi obnovením geograficky replikované zálohy. sourceDatabaseId musí být zadán jako obnovitelné ID prostředku databáze.

Obnovení: Vytvoří databázi obnovením zálohy odstraněné databáze. sourceDatabaseId musí být zadán. Pokud je sourceDatabaseId původní ID prostředku databáze, musí být zadán sourceDatabaseDeletionDate. Jinak sourceDatabaseId musí být obnovitelné vyřazené ID prostředku databáze a sourceDatabaseDeletionDate se ignoruje. restorePointInTime může být také zadán pro obnovení z dřívějšího bodu v čase.

RestoreLongTermRetentionBackup: Vytvoří databázi obnovením z dlouhodobého trezoru uchovávání. recoveryServicesRecoveryPointResourceId musí být zadán jako ID prostředku bodu obnovení.

Edice DataWarehouse nepodporuje kopírování, sekundární a restoreLongTermRetentionBackup.
'Copy'
'Default'
'OnlineSecondary'
'PointInTimeRestore'
'Recovery'
'Restore'
'RestoreExternalBackup'
'RestoreExternalBackupSecondary'
'RestoreLongTermRetentionBackup'
'Secondary'
elasticPoolId Identifikátor prostředku elastického fondu obsahujícího tuto databázi. řetězec
encryptionProtector Identifikátor URI služby Azure Key Vault databáze, pokud je nakonfigurovaný pro klíče spravované zákazníkem databáze. řetězec
encryptionProtectorAutoRotation Příznak pro povolení nebo zakázání automatické obměna klíče AKV pro ochranu šifrování databáze. bool
federatedClientId ID klienta používaného pro scénář cmk pro různé tenanty na databázi string

Constraints:
Minimální délka = 36
Maximální délka = 36
Model = ^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$
freeLimitExhaustionBehavior Určuje chování při vyčerpání měsíčních bezplatných limitů pro bezplatnou databázi.

AutoPause: Databáze se po vyčerpání bezplatných limitů po zbytek měsíce automaticky pozastaví.

BillForUsage: Databáze bude i nadále online po vyčerpání bezplatných limitů a veškeré nadlimitní využití se budou účtovat.
'AutoPause'
'BillOverUsage'
highAvailabilityReplicaCount Počet sekundárních replik přidružených k databázi edice Pro důležité obchodní informace, Premium nebo Hyperscale, které slouží k zajištění vysoké dostupnosti. Neplatí pro databázi Hyperscale v rámci elastického fondu. int
isLedgerOn Bez ohledu na to, jestli se jedná o databázi registru, znamená to, že všechny tabulky v databázi jsou tabulky registru. Poznámka: Hodnotu této vlastnosti nelze po vytvoření databáze změnit. bool
keys ID prostředků identit přiřazených uživatelem, které se mají použít DatabasePropertiesKeys
licenseType Typ licence, který se má použít pro tuto databázi. LicenseIncluded, pokud potřebujete licenci, nebo BasePrice pokud licenci máte a jste způsobilí pro Azure Hybrid Benefit. 'BasePrice'
'LicenseIncluded'
longTermRetentionBackupResourceId Identifikátor prostředku dlouhodobého uchovávání záloh přidružených k vytvoření operace této databáze. řetězec
maintenanceConfigurationId ID konfigurace údržby přiřazené k databázi. Tato konfigurace definuje období, kdy dojde k aktualizacím údržby. řetězec
manualCutover Bez ohledu na to, jestli je potřeba provést ruční přímé přechody řízené zákazníkem během operace aktualizace databáze na úroveň Hyperscale.

Tato vlastnost se vztahuje pouze při škálování databáze z úrovně Pro důležité obchodní informace, Pro obecné účely, Úrovně Premium/Standard na úroveň Hyperscale.

Pokud je zadán ručnícutover, operace škálování bude čekat, až uživatelský vstup aktivuje přímou migraci do databáze Hyperscale.

Pokud chcete aktivovat přímou operaci, zadejte parametr performCutover, pokud je operace škálování ve stavu Čekání.
bool
maxSizeBytes Maximální velikost databáze vyjádřená v bajtech. int
minCapacity Minimální kapacita, kterou databáze bude mít vždy přidělenou, pokud není pozastavená int
performCutover Aktivace ručního přímého přechodu řízeného zákazníkem během čekacího stavu během probíhající operace škálování

Tento parametr vlastnosti se vztahuje pouze na operace škálování, které jsou inicializovány spolu s parametrem manualCutover.

Tato vlastnost se vztahuje pouze v případě, že už probíhá škálování databáze z úrovně Pro důležité obchodní informace, Pro obecné účely, Úrovně Premium/Standard na úroveň Hyperscale.

Při zadání příkazu performCutover se operace škálování aktivuje přímou migraci a provede změnu role na databázi Hyperscale.
bool
preferredEnclaveType Typ enklávy požadované v databázi, tj. výchozí enklávy nebo enklávy VBS. 'Default'
'VBS'
readScale Stav směrování jen pro čtení. Pokud je povoleno, mohou být spojení, která mají aplikační záměr nastavený pouze na čtení ve svém connection string, směrována do readonly sekundární repliky ve stejné oblasti. Neplatí pro databázi Hyperscale v rámci elastického fondu. 'Disabled'
'Enabled'
recoverableDatabaseId Identifikátor prostředku obnovitelné databáze přidružené k operaci vytvoření této databáze. řetězec
recoveryServicesRecoveryPointId Identifikátor prostředku bodu obnovení přidruženého k operaci vytvoření této databáze. řetězec
requestedBackupStorageRedundancy Typ účtu úložiště, který se má použít k ukládání záloh pro tuto databázi. 'Geo'
'GeoZone'
'Local'
'Zone'
restorableDroppedDatabaseId Identifikátor prostředku obnovené vyřazené databáze přidružené k operaci vytvoření této databáze. řetězec
restorePointInTime Určuje bod v čase (formát ISO8601) zdrojové databáze, která se obnoví a vytvoří novou databázi. řetězec
sampleName Název ukázkového schématu, které se má použít při vytváření této databáze. 'AdventureWorksLT'
'WideWorldImportersFull'
'WideWorldImportersStd'
secondaryType Sekundární typ databáze, pokud je sekundární. Platné hodnoty jsou Geo, Named a Standby. 'Geo'
'Named'
'Standby'
sourceDatabaseDeletionDate Určuje čas odstranění databáze. řetězec
sourceDatabaseId Identifikátor prostředku zdrojové databáze přidružené k operaci vytvoření této databáze. řetězec
sourceResourceId Identifikátor prostředku zdroje přidruženého k operaci vytvoření této databáze.

Tato vlastnost je podporována pouze pro edici DataWarehouse a umožňuje obnovení napříč předplatnými.

Pokud je zadán sourceResourceId, sourceDatabaseId, recoverableDatabaseId, restoreableDroppedDatabaseId a sourceDatabaseDeletionDate nesmí být zadán a CreateMode musí být PointInTimeRestore, Restore nebo Recover.

Pokud je createMode PointInTimeRestore, sourceResourceId musí být ID prostředku existující databáze nebo existujícího fondu SQL a restorePointInTime musí být zadán.

Pokud je createMode Restore, sourceResourceId musí být ID prostředku obnovitelné vyřazené databáze nebo obnovitelné vyřazené fondu SQL.

Pokud je createMode Recover, sourceResourceId musí být ID prostředku obnovitelné databáze nebo obnovitelného fondu SQL.

Pokud zdrojové předplatné patří do jiného tenanta než cílového předplatného, musí hlavička x-ms-authorization-auxiliary obsahovat ověřovací token pro zdrojového tenanta. Další podrobnosti o hlavičce x-ms-authorization-auxiliary najdete v tématu /azure/azure-resource-manager/management/authenticate-multi-tenant
řetězec
useFreeLimit Bez ohledu na to, jestli databáze používá bezplatné měsíční limity. Povoleno pro jednu databázi v předplatném. bool
zoneRedundant Bez ohledu na to, jestli je tato databáze zónově redundantní, což znamená, že repliky této databáze budou rozloženy do více zón dostupnosti. bool

DatabasePropertiesKeys

Name Description Value

DatabaseUserIdentity

Name Description Value

Sku

Name Description Value
kapacita Kapacita konkrétní skladové položky. int
family Pokud má služba různé generace hardwaru, pro stejnou skladovou položku, můžete ji zde zachytit. řetězec
name Název skladové položky, obvykle písmeno + číslo, např. P3. string (povinné)
size Velikost konkrétní skladové položky řetězec
přesunout do jiné vrstvy Úroveň nebo edice konkrétní skladové položky, např. Basic, Premium. řetězec

TrackedResourceTags

Name Description Value

Příklady použití

Ukázky Terraformu

Základní příklad nasazení MS SQL databáze.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
    azurerm = {
      source = "hashicorp/azurerm"
    }
  }
}

provider "azurerm" {
  features {
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westeurope"
}

variable "administrator_login_password" {
  type        = string
  description = "The administrator login password for the SQL server"
  sensitive   = true
}

data "azurerm_client_config" "current" {
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "server" {
  type      = "Microsoft.Sql/servers@2021-02-01-preview"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      administratorLogin            = "mradministrator"
      administratorLoginPassword    = var.administrator_login_password
      minimalTlsVersion             = "1.2"
      publicNetworkAccess           = "Enabled"
      restrictOutboundNetworkAccess = "Disabled"
      version                       = "12.0"
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

data "azapi_resource_id" "publicMaintenanceConfiguration" {
  type      = "Microsoft.Maintenance/publicMaintenanceConfigurations@2023-04-01"
  parent_id = "/subscriptions/${data.azurerm_client_config.current.subscription_id}"
  name      = "SQL_Default"
}

resource "azapi_resource" "database" {
  type      = "Microsoft.Sql/servers/databases@2021-02-01-preview"
  parent_id = azapi_resource.server.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      autoPauseDelay                   = 0
      createMode                       = "Default"
      elasticPoolId                    = ""
      highAvailabilityReplicaCount     = 0
      isLedgerOn                       = false
      licenseType                      = "LicenseIncluded"
      maintenanceConfigurationId       = data.azapi_resource_id.publicMaintenanceConfiguration.id
      minCapacity                      = 0
      readScale                        = "Disabled"
      requestedBackupStorageRedundancy = "Geo"
      zoneRedundant                    = false
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

Základní příklad nasazení MS SQL databáze.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
    azurerm = {
      source = "hashicorp/azurerm"
    }
  }
}

provider "azurerm" {
  features {
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westeurope"
}

variable "administrator_login_password" {
  type        = string
  description = "The administrator login password for the SQL server"
  sensitive   = true
}

data "azurerm_client_config" "current" {
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "server" {
  type      = "Microsoft.Sql/servers@2021-02-01-preview"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      administratorLogin            = "mradministrator"
      administratorLoginPassword    = var.administrator_login_password
      minimalTlsVersion             = "1.2"
      publicNetworkAccess           = "Enabled"
      restrictOutboundNetworkAccess = "Disabled"
      version                       = "12.0"
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

data "azapi_resource_id" "publicMaintenanceConfiguration" {
  type      = "Microsoft.Maintenance/publicMaintenanceConfigurations@2023-04-01"
  parent_id = "/subscriptions/${data.azurerm_client_config.current.subscription_id}"
  name      = "SQL_Default"
}

resource "azapi_resource" "database" {
  type      = "Microsoft.Sql/servers/databases@2021-02-01-preview"
  parent_id = azapi_resource.server.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      autoPauseDelay                   = 0
      createMode                       = "Default"
      elasticPoolId                    = ""
      highAvailabilityReplicaCount     = 0
      isLedgerOn                       = false
      licenseType                      = "LicenseIncluded"
      maintenanceConfigurationId       = data.azapi_resource_id.publicMaintenanceConfiguration.id
      minCapacity                      = 0
      readScale                        = "Disabled"
      requestedBackupStorageRedundancy = "Geo"
      zoneRedundant                    = false
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}