Para crear una base de datos única en el Azure Portal:
Vaya a la página Seleccione una opción de implementación de SQL.
En Bases de datos SQL, deje Tipo de recurso establecido en Base de datos única y seleccione Crear.
En la pestaña Básico del formulario Crear base de datos SQL, en Detalles del proyecto, seleccione la suscripción de Azure que quiere utilizar.
En Grupo de recursos, seleccione Crear nuevo, escriba miGrupoDeRecursos y seleccione Aceptar.
En Nombre de la base de datos, escriba demo.
En Servidor, seleccione Crear nuevo. Rellene el formulario Nuevo servidor con los siguientes valores:
- Nombre del servidor: Escriba miServidorSql y agregue algunos caracteres para que el nombre sea único. No se puede proporcionar un nombre de servidor exacto para usar porque los nombres de los servidores deben ser globalmente únicos para todos los servidores en Azure, no solo únicos dentro de una suscripción. Escriba algo como mysqlserver12345 y el portal le indicará si está disponible o no.
- Inicio de sesión del administrador del servidor: escriba usuarioazure.
- Contraseña: escriba una contraseña que cumpla los requisitos. Vuelva a escribirla en el cuadro Confirmar contraseña.
- Ubicación: Seleccione una ubicación en la lista desplegable.
- Allow Azure services to access this server (Permitir que los servicios de Azure accedan a este servidor): seleccione esta opción para habilitar el acceso al almacenamiento de resúmenes.
Seleccione Aceptar.
Deje ¿Quiere usar un grupo elástico de SQL? establecido en No.
En Proceso y almacenamiento, seleccione Configurar base de datos.
En este inicio rápido se usa una base de datos sin servidor, por lo que debe seleccionar Sin servidor y, después, seleccionar Aplicar.
En la pestaña Redes, en Método de conectividad, seleccione Punto de conexión público.
En Reglas de firewall, establezca Agregar dirección IP del cliente actual en Sí. Deje la opción Permitir que los servicios y recursos de Azure accedan a este grupo de servidores establecida en No.
Seleccione Siguiente: Seguridad en la parte inferior de la página.
En la pestaña Security (Seguridad), en la sección Ledger (Libro de contabilidad), seleccione la opción Configure ledger (Configurar libro de contabilidad).
En el panel Configure ledger (Configurar libro de contabilidad), en la sección Ledger (Libro de contabilidad), seleccione la casilla Enable for all future tables in this database (Habilitar para todas las tablas futuras de esta base de datos). Esta configuración garantiza que todas las futuras tablas de la base de datos sean tablas de libro de contabilidad. Por esta razón, todos los datos de la base de datos mostrarán cualquier evidencia de alteración. De manera predeterminada, las nuevas tablas se crearán como tablas de libro de contabilidad actualizables, incluso si no se especifica LEDGER = ON
en CREATE TABLE. También puede dejar esta opción sin seleccionar. A continuación, se le requiere que habilite la funcionalidad de libro de contabilidad por cada tabla al crear nuevas tablas mediante Transact-SQL.
En la sección Digest Storage (Almacenamiento de resumen), la opción Enable automatic digest storage (Habilitar el almacenamiento de resumen automático) está seleccionada automáticamente. A continuación, se crean una cuenta y un contenedor de Azure Storage donde se almacenan los resúmenes.
Seleccione Aplicar.
En la parte inferior de la página, seleccione Revisar y crear.
En la página Revisar y crear, después de revisar, seleccione Crear.
Creará un grupo de recursos, un servidor de bases de datos lógico y una base de datos de libro de contabilidad única, y configurará la carga de resúmenes del libro de contabilidad con la CLI de Azure.
Inicio de Azure Cloud Shell
Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.
Para abrir Cloud Shell, seleccione Pruébelo en la esquina superior derecha de un bloque de código. También puede ir a https://shell.azure.com para iniciar Cloud Shell en una pestaña independiente del explorador. Seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, luego, presione Entrar para ejecutarlos.
Establecer Valores de parámetros
Los siguientes valores se usan en los comandos siguientes para crear la base de datos y los recursos necesarios. Los nombres de servidor y los nombres de cuenta de almacenamiento deben ser únicos globalmente en todo Azure, por lo que la función $RANDOM se usa para crear el nombre del servidor y el nombre de la cuenta de almacenamiento.
El nombre del recurso debe ser único en su suscripción. Reemplace <your resource group name>
por un nombre único y <your subscription ID>
por su id. de suscripción.
Reemplace los valores 0.0.0.0 del intervalo de direcciones IP para que coincidan con su entorno específico.
Reemplace westeurope por su nombre de región de Azure preferido.
resourceGroupName="<your resource group name>"
location="westeurope"
serverName="mysqlserver"-$RANDOM
databaseName="myLedgerDatabase"
storageAccountName="mystorage"$RANDOM
subscription="<your subscription ID>"
adminLogin=azureuser
adminPassword=Azure1234567!
serverResourceId="/subscriptions/$subscription/resourceGroups/$resourceGroupName/providers/Microsoft.Sql/servers/$serverName"
# The ip address range that you want to allow to access your server
startIP=0.0.0.0
endIP=0.0.0.0
# Set variables for your digest storage location
storageAccountName="mystorage"$RANDOM
storageAccountURL1="https://"
storageAccountURL3=".blob.core.windows.net"
storageAccountURL=$storageAccountURL1$storageAccountName$storageAccountURL3
storageAccountResourceId="/subscriptions/$subscription/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"
# Show resource names
echo "Resource group name is" $resourceGroupName
echo "Server name is" $serverName
echo "Database name is" $databaseName
echo "Storage account name is" $storageAccountName
Crear un grupo de recursos
Para crear un grupo de recursos, use el comando az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
az group create --name $resourceGroupName --location $location
Creación de un servidor con una identidad administrada
Cree un servidor con el comando az sql server create. El comando crea el servidor con una identidad administrada asignada.
az sql server create \
--name $serverName \
--resource-group $resourceGroupName \
--location $location \
--admin-user $adminLogin \
--admin-password $adminPassword \
--assign-identity
Este comando almacena el id. en una variable, que se usará más adelante para conceder al servidor permisos para cargar resúmenes de libro de contabilidad.
# Retrieves the assigned identity to be used when granting the server access to the storage account
principalId=`az sql server show \
--name $serverName \
--resource-group $resourceGroupName \
--query identity.principalId \
--output tsv`
Cree una regla de firewall con el comandoaz sql server firewall-rule create.
az sql server firewall-rule create \
--resource-group $resourceGroupName \
--server $serverName \
-n AllowYourIp \
--start-ip-address $startIP \
--end-ip-address $endIP
Creación de una base de datos de libro de contabilidad única
Cree una base de datos de libro de contabilidad con el comandoaz sql db create. El comando siguiente crea una base de datos sin servidor con el libro de contabilidad habilitado.
az sql db create \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName \
--edition GeneralPurpose \
--family Gen5 \
--capacity 2 \
--compute-model Serverless \
--ledger-on
Crear una cuenta de almacenamiento
Cree una cuenta de almacenamiento para almacenar resúmenes de libro de contabilidad con el comando az storage account create.
az storage account create \
--name $storageAccountName \
--resource-group $resourceGroupName \
--location $location \
--sku Standard_GRS \
--kind StorageV2
Concesión de permisos al servidor para escribir resúmenes de libro mayor
Asigne la identidad administrada del servidor al rol Colaborador de datos de Storage Blob con el comando az role assignment create. Esto proporciona a SQL server los permisos adecuados para publicar resúmenes de base de datos en la cuenta de almacenamiento.
az role assignment create \
--assignee-object-id $principalId \
--assignee-principal-type "ServicePrincipal" \
--role "Storage Blob Data Contributor" \
--scope $storageAccountResourceId
Habilitación de cargas de resumen de base de datos
Actualice la base de datos para empezar a cargar resúmenes del libro mayor en la cuenta de almacenamiento mediante el comando az sql db ledger-digest-uploads enable.
az sql db ledger-digest-uploads enable \
--name $databaseName \
--resource-group $resourceGroupName \
--server $serverName \
--endpoint $storageAccountURL
Para evitar que los resúmenes se eliminen o actualicen, se recomienda configurar una directiva de retención de duración definida en el contenedor sqldbledgerdigests mediante los comandos az storage container immutability-policy create y az storage container immutability-policy lock. La directiva debe permitir escrituras de blobs de anexión protegidos. Esto garantiza que el servidor de bases de datos pueda agregar bloques que contengan nuevos resúmenes a un blob existente, mientras que la eliminación o actualización de los resúmenes está deshabilitada durante el período de inmutabilidad especificado.
Importante
En el ejemplo siguiente se usa el valor de período de inmutabilidad de 1 día. En un entorno de producción, debe usar un valor mucho mayor.
Nota
Una vez que los resúmenes de base de datos empiecen a cargarse en la cuenta de almacenamiento, no podrá eliminar la cuenta de almacenamiento hasta que la directiva de inmutabilidad expire. Si va a limpiar los recursos inmediatamente después de esta guía de inicio rápido, puede omitir la configuración de la directiva de inmutabilidad.
Para obtener más información sobre la directiva de retención de duración definida para contenedores, consulte Configuración de directivas de inmutabilidad para contenedores.
az storage container immutability-policy create \
--resource-group $resourceGroupName \
--account-name $storageAccountName \
--container-name sqldbledgerdigests \
--period 1 \
--allow-protected-append-writes true
# Retrieves the etag value of the policy to be used when the policy is locked
etag=`az storage container immutability-policy show \
--account-name $storageAccountName \
--container-name sqldbledgerdigests \
--query etag \
--output tsv`
etag="${etag/$'\r'/}"
az storage container immutability-policy lock \
--resource-group $resourceGroupName \
--account-name $storageAccountName \
--container-name sqldbledgerdigests \
--if-match $etag
Creará un grupo de recursos, un servidor de base de datos lógico y una base de datos de libro de contabilidad única, y configurará la carga de resúmenes del libro de contabilidad con Windows PowerShell.
Inicio de Azure Cloud Shell
Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.
Para abrir Cloud Shell, seleccione Pruébelo en la esquina superior derecha de un bloque de código. También puede ir a https://shell.azure.com para iniciar Cloud Shell en una pestaña independiente del explorador. Seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, luego, presione Entrar para ejecutarlos.
Establecer Valores de parámetros
Los siguientes valores se usan en los comandos siguientes para crear la base de datos y los recursos necesarios. Los nombres de servidor y los nombres de cuenta de almacenamiento deben ser únicos globalmente en todo Azure, por lo que el cmdlet Get-Random se usa para crear el nombre del servidor y el nombre de la cuenta de almacenamiento.
El nombre del recurso debe ser único en su suscripción. Reemplace <your resource group name>
por un nombre único.
Reemplace los valores 0.0.0.0 del intervalo de direcciones IP para que coincidan con su entorno específico.
Reemplace westeurope por su nombre de región de Azure preferido.
# Set variables for your server and database
$resourceGroupName = "<your resource group name>"
$location = "westeurope"
$serverName = "mysqlserver-$(Get-Random)"
$databaseName = "myLedgerDatabase"
$storageAccountName = "mystorage$(Get-Random)"
# The ip address range that you want to allow to access your server
$startIP = "0.0.0.0"
$endIP = "0.0.0.0"
# Show resource names
Write-host "Resource group name is" $resourceGroupName
Write-host "Server name is" $serverName
Write-host "Storage account name is" $storageAccountName
Crear un grupo de recursos
Cree un grupo de recursos de Azure con New-AzResourceGroup. Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
Write-host "Creating resource group..."
$resourceGroup = New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
$resourceGroup
Creación de un servidor
Cree un servidor con el cmdlet New-AzSqlServer.
El cmdlet crea el servidor con una identidad administrada asignada, que necesitará más adelante para conceder al servidor permisos para cargar resúmenes de libro de contabilidad.
Cuando se le solicite, escriba su nombre de usuario de administrador de SQL y una contraseña.
Write-host "Creating primary server..."
$server = New-AzSqlServer `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-AssignIdentity `
-SqlAdministratorCredentials (Get-Credential)
$server
Creación de una regla de firewall
Cree una regla de firewall de servidor con el cmdlet New-AzSqlServerFirewallRule.
Write-host "Configuring server firewall rule..."
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIP -EndIpAddress $endIP
$serverFirewallRule
Creación de una base de datos de libro de contabilidad única
Cree una base de datos de libro de contabilidad única con el cmdlet New-AzSqlDatabase.
En el ejemplo siguiente se crea una base de datos sin servidor.
Write-host "Creating a gen5 2 vCore serverless ledger database..."
$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition GeneralPurpose `
-ComputeModel Serverless `
-ComputeGeneration Gen5 `
-VCore 2 `
-MinimumCapacity 2 `
-EnableLedger
$database
Crear una cuenta de almacenamiento
Cree una cuenta de almacenamiento para almacenar resúmenes de libro de contabilidad con el cmdlet New-AzStorageAccount.
Write-host "Creating a storage account for ledger digests..."
$storage = New-AzStorageAccount -ResourceGroupName $resourceGroupName `
-Name $storageAccountName `
-Location $location `
-SkuName Standard_RAGRS `
-Kind StorageV2 `
-AccessTier Hot
$storage
Concesión de permisos al servidor para escribir resúmenes de libro mayor
Asigne la identidad administrada del servidor al rol Colaborador de datos de Storage Blob con el cmdlet New-AzRoleAssignment. Esto proporciona a SQL server los permisos adecuados para publicar resúmenes de base de datos en la cuenta de almacenamiento.
Write-host "Granting the server access to the storage account..."
$assignment = New-AzRoleAssignment `
-ObjectId $server.Identity.PrincipalId `
-RoleDefinitionName "Storage Blob Data Contributor" `
-ResourceGroupName $resourceGroupName `
-ResourceType "Microsoft.Storage/storageAccounts" `
-ResourceName $storageAccountName
$assignment
Habilitación de cargas de resumen de base de datos
Actualice la base de datos para empezar a cargar resúmenes de libro de contabilidad en la cuenta de almacenamiento con el cmdlet Enable-AzSqlDatabaseLedgerDigestUpload. El servidor de bases de datos creará un nuevo contenedor, denominado sqldbledgerdigests, en la cuenta de almacenamiento y empezará a escribir resúmenes de libro de contabilidad en el contenedor.
Write-host "Enabling ledger digest upload..."
$ledgerDigestUploadConfig = Enable-AzSqlDatabaseLedgerDigestUpload `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Endpoint $storage.PrimaryEndpoints.Blob
$ledgerDigestUploadConfig
Para evitar que los resúmenes se eliminen o actualicen, se recomienda configurar una directiva de retención de duración definida en el contenedor sqldbledgerdigests mediante los cmdlets Set-AzRmStorageContainerImmutabilityPolicy y Lock-AzRmStorageContainerImmutabilityPolicy. La directiva debe permitir escrituras de blobs de anexión protegidos. Esto garantiza que el servidor de bases de datos pueda agregar bloques que contengan nuevos resúmenes a un blob existente, mientras que la eliminación o actualización de los resúmenes está deshabilitada durante el período de inmutabilidad especificado.
Importante
En el ejemplo siguiente se usa el valor de período de inmutabilidad de 1 día. En un entorno de producción, debe usar un valor mucho mayor.
Nota
No podrá eliminar el contenedor ni la cuenta de almacenamiento durante el período de inmutabilidad especificado.
Para obtener más información sobre la directiva de retención de duración definida para contenedores, consulte Configuración de directivas de inmutabilidad para contenedores.
Write-host "Configuring a time-based retention policy..."
$immutabilityPerdiod = 1
$containerName = "sqldbledgerdigests"
$policy = Set-AzRmStorageContainerImmutabilityPolicy `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName `
-ContainerName $containerName `
-AllowProtectedAppendWrite $true `
-ImmutabilityPeriod $immutabilityPerdiod
Lock-AzRmStorageContainerImmutabilityPolicy `
-ResourceGroupName $resourceGroupName `
-StorageAccountName $storageAccountName `
-ContainerName $containerName `
-Etag $policy.Etag
Mantenga el grupo de recursos, el servidor y la base de datos única para los pasos siguientes. Aprenderá a usar la característica de libro de contabilidad de la base de datos con distintos métodos.
Cuando haya terminado con estos recursos, elimine el grupo de recursos que ha creado. Esta acción también elimina el servidor y la base de datos única que contiene, así como la cuenta de almacenamiento.