Azure portalında tek bir veritabanı oluşturmak için bu hızlı başlangıç Azure SQL sayfasında başlar.
SQL Dağıtımını Seç seçeneği sayfasına gidin.
SQL veritabanları'nın altında Kaynak türü'nü Tek veritabanı olarak bırakın ve Oluştur'u seçin.
SQL Veritabanı oluştur formunun Temel Bilgiler sekmesinde, Proje ayrıntıları'nın altında, kullanmak istediğiniz Azure aboneliğini seçin.
Kaynak grubu için Yeni oluştur'u seçin, myResourceGroup yazın ve Tamam'ı seçin.
Veritabanı adı için demo girin.
Sunucu için Yeni oluştur'u seçin. Yeni sunucu formunu aşağıdaki değerlerle doldurun:
- Sunucu adı: mysqlserver girin ve benzersizlik için bazı karakterler ekleyin. Sunucu adlarının yalnızca abonelik içinde benzersiz değil, Azure'daki tüm sunucular için genel olarak benzersiz olması gerektiğinden, kullanılacak tam sunucu adını sağlayamıyoruz. mysqlserver12345 gibi bir şey girdiğinizde portal kullanılabilir olup olmadığını size bildirir.
- Sunucu yöneticisi oturum açma bilgileri: azureuser girin.
- Parola: Gereksinimleri karşılayan bir parola girin. Parolayı onayla kutusuna yeniden girin.
- Konum: Açılan listeden bir konum seçin.
- Azure hizmetlerinin bu sunucuya erişmesine izin ver: Özet depolamaya erişimi etkinleştirmek için bu seçeneği belirleyin.
Tamam'ı seçin.
SQL elastik havuzunu kullanmak istiyor seçeneğini Hayır olarak bırakın.
İşlem + depolama'nın altında Veritabanını yapılandır'ı seçin.
Bu hızlı başlangıçta sunucusuz veritabanı kullanılır. Bu nedenle Sunucusuz'nu ve ardından Uygula'yı seçin.
Ağ sekmesindeki Bağlan ivity yöntemi için Genel uç nokta'yı seçin.
Güvenlik duvarı kuralları için Geçerli istemci IP adresi ekle'yi Evet olarak ayarlayın. Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver seçeneğini Hayır olarak bırakın.
Sayfanın alt kısmındaki İleri: Güvenlik'i seçin.
Güvenlik sekmesindeki Genel Muhasebe bölümünde Kayıt defterini yapılandır seçeneğini belirleyin.
Kayıt defterini yapılandır bölmesinin Kayıt Defteri bölümünde, Bu veritabanındaki gelecekteki tüm tablolar için etkinleştir onay kutusunu seçin. Bu ayar, veritabanındaki gelecekteki tüm tabloların kayıt defteri tabloları olmasını sağlar. Bu nedenle, veritabanındaki tüm veriler herhangi bir kurcalama kanıtı gösterir. Create TABLE'da belirtmeseniz LEDGER = ON
bile, yeni tablolar varsayılan olarak güncelleştirilebilir kayıt defteri tabloları olarak oluşturulur. Bu seçeneği de seçili durumda bırakabilirsiniz. Daha sonra Transact-SQL kullanarak yeni tablolar oluştururken tablo başına kayıt defteri işlevselliğini etkinleştirmeniz gerekir.
Özet Depolama bölümünde Otomatik özet depolamayı etkinleştir otomatik olarak seçilir. Ardından özetlerinizin depolandığı yeni bir Azure Depolama hesabı ve kapsayıcısı oluşturulur.
Uygula’yı seçin.
Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.
Gözden Geçir + oluştur sayfasında, gözden geçirdikten sonra Oluştur'u seçin.
Azure CLI kullanarak bir kaynak grubu, mantıksal veritabanı sunucusu, tek bir kayıt defteri veritabanı oluşturacak ve kayıt defteri özetlerini karşıya yüklemeyi yapılandıracaksınız.
Azure Cloud Shell'i başlatma
Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabuktur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.
Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçin. İsterseniz https://shell.azure.com adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz. Kod bloklarını kopyalamak için Kopyala'yı seçin, Cloud Shell'e yapıştırın ve çalıştırmak için Enter tuşuna basın.
Parametre değerlerini ayarlama
Aşağıdaki değerler, veritabanını ve gerekli kaynakları oluşturmak için sonraki komutlarda kullanılır. Sunucu adlarının ve depolama hesabı adlarının tüm Azure'da genel olarak benzersiz olması gerekir, bu nedenle sunucu adını ve depolama hesabı adını oluşturmak için $RANDOM işlevi kullanılır.
Kaynak adı aboneliğinizde benzersiz olmalıdır. değerini benzersiz bir adla ve <your subscription ID>
Abonelik Kimliğiniz ile değiştirin<your resource group name>
.
Ip adresi aralığındaki 0.0.0.0 değerlerini kendi ortamınızla eşleşecek şekilde değiştirin.
westeurope değerini tercih ettiğiniz Azure bölgesi adıyla değiştirin.
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
Kaynak grubu oluşturma
az group create komutuyla bir kaynak grubu oluşturun. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.
az group create --name $resourceGroupName --location $location
Yönetilen kimlikle sunucu oluşturma
az sql server create komutuyla bir sunucu oluşturun . komutu, sunucuyu atanmış bir yönetilen kimlikle oluşturur.
az sql server create \
--name $serverName \
--resource-group $resourceGroupName \
--location $location \
--admin-user $adminLogin \
--admin-password $adminPassword \
--assign-identity
Bu komut, kimliği bir değişkende depolar ve daha sonra sunucuya kayıt defteri özetlerini karşıya yükleme izinleri vermek için kullanılacaktır.
# 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`
az sql server firewall-rule create komutuyla bir güvenlik duvarı kuralı oluşturun .
az sql server firewall-rule create \
--resource-group $resourceGroupName \
--server $serverName \
-n AllowYourIp \
--start-ip-address $startIP \
--end-ip-address $endIP
Tek bir kayıt defteri veritabanı oluşturma
az sql db create komutuyla bir kayıt defteri veritabanı oluşturun . Aşağıdaki komut, kayıt defteri etkin bir sunucusuz veritabanı oluşturur.
az sql db create \
--resource-group $resourceGroupName \
--server $serverName \
--name $databaseName \
--edition GeneralPurpose \
--family Gen5 \
--capacity 2 \
--compute-model Serverless \
--ledger-on
Depolama hesabı oluşturma
az storage account create komutuyla kayıt defteri özetlerini depolamak için bir depolama hesabı oluşturun .
az storage account create \
--name $storageAccountName \
--resource-group $resourceGroupName \
--location $location \
--sku Standard_GRS \
--kind StorageV2
Sunucuya kayıt defteri özetleri yazma izinleri verme
sunucunun yönetilen kimliğini az role assignment create komutuyla Depolama Blob Veri Katkıda Bulunanı rolüne atayın. Bu, SQL sunucusuna depolama hesabında veritabanı özetlerini yayımlamak için uygun izinleri verir.
az role assignment create \
--assignee-object-id $principalId \
--assignee-principal-type "ServicePrincipal" \
--role "Storage Blob Data Contributor" \
--scope $storageAccountResourceId
Veritabanı özet yüklemelerini etkinleştirme
az sql db ledger-digest-uploads enable komutunu kullanarak veritabanını güncelleştirerek kayıt defteri özetlerini depolama hesabına yüklemeye başlayın.
az sql db ledger-digest-uploads enable \
--name $databaseName \
--resource-group $resourceGroupName \
--server $serverName \
--endpoint $storageAccountURL
Özetlerin silinmesini veya güncelleştirilmesini korumak için az storage container immutability-policy create ve az storage container immutability-policy lock komutlarını kullanarak sqldbledgerdigests kapsayıcısı üzerinde zamana dayalı bir bekletme ilkesi yapılandırmanız önerilir. İlke, korumalı ekleme blobları yazmalarına izin vermelidir. Bu, veritabanı sunucusunun mevcut bir bloba yeni özetler içeren bloklar ekleyebilmesini sağlarken, özetleri silme veya güncelleştirme işlemi belirtilen değişmezlik süresi boyunca devre dışı bırakılır.
Önemli
Aşağıdaki örnek, 1 günlük değişmezlik dönemi değerini kullanır. Üretim ortamında çok daha büyük bir değer kullanmanız gerekir.
Not
Veritabanı özetleri depolama hesabına yüklenmeye başladığında, değiştirilemezlik ilkesinin süresi dolana kadar depolama hesabını silemezsiniz. Bu Hızlı Başlangıçtan hemen sonra kaynakları temizlemeyi planlıyorsanız değiştirilemezlik ilkesini ayarlama işlemi atlanabilir.
Kapsayıcılar için zamana bağlı saklama ilkesi hakkında daha fazla bilgi için bkz . Kapsayıcılar için değişmezlik ilkelerini yapılandırma.
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
Windows PowerShell kullanarak bir kaynak grubu, mantıksal veritabanı sunucusu, tek bir kayıt defteri veritabanı oluşturacak ve kayıt defteri özetlerini karşıya yüklemeyi yapılandıracaksınız.
Azure Cloud Shell'i başlatma
Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabuktur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.
Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçin. İsterseniz https://shell.azure.com adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz. Kod bloklarını kopyalamak için Kopyala'yı seçin, Cloud Shell'e yapıştırın ve çalıştırmak için Enter tuşuna basın.
Parametre değerlerini ayarlama
Aşağıdaki değerler, veritabanını ve gerekli kaynakları oluşturmak için sonraki komutlarda kullanılır. Sunucu adlarının ve depolama hesabı adlarının tüm Azure'da genel olarak benzersiz olması gerektiğinden, sunucu adını ve depolama hesabı adını oluşturmak için Get-Random cmdlet'i kullanılır.
Kaynak adı aboneliğinizde benzersiz olmalıdır. <your resource group name>
yerine benzersiz bir ad yazın.
Ip adresi aralığındaki 0.0.0.0 değerlerini kendi ortamınızla eşleşecek şekilde değiştirin.
westeurope değerini tercih ettiğiniz Azure bölgesi adıyla değiştirin.
# 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
Kaynak grubu oluşturma
New-AzResourceGroup ile bir Azure kaynak grubu oluşturun. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.
Write-host "Creating resource group..."
$resourceGroup = New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
$resourceGroup
Sunucu oluşturma
New-AzSqlServer cmdlet'iyle bir sunucu oluşturun.
Cmdlet, sunucuyu atanmış bir yönetilen kimlikle oluşturur ve daha sonra sunucuya kayıt defteri özetlerini karşıya yükleme izinleri vermeniz gerekir.
İstendiğinde, SQL yöneticisi kullanıcı adınızı ve bir parolayı girin.
Write-host "Creating primary server..."
$server = New-AzSqlServer `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-AssignIdentity `
-SqlAdministratorCredentials (Get-Credential)
$server
Güvenlik duvarı kuralı oluşturma
New-AzSqlServerFirewallRule cmdlet'i ile bir sunucu güvenlik duvarı kuralı oluşturun.
Write-host "Configuring server firewall rule..."
$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIP -EndIpAddress $endIP
$serverFirewallRule
Tek bir kayıt defteri veritabanı oluşturma
New-AzSqlDatabase cmdlet'iyle tek bir kayıt defteri veritabanı oluşturun.
Aşağıdaki örnek sunucusuz bir veritabanı oluşturur.
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
Depolama hesabı oluşturma
New-Az Depolama Account cmdlet'iyle genel muhasebe özetlerini depolamak için bir depolama hesabı oluşturun.
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
Sunucuya kayıt defteri özetleri yazma izinleri verme
Sunucunun yönetilen kimliğini New-AzRoleAssignment cmdlet'iyle Depolama Blob Veri Katkıda Bulunanı rolüne atayın. Bu, SQL sunucusuna depolama hesabında veritabanı özetlerini yayımlamak için uygun izinleri verir.
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
Veritabanı özet yüklemelerini etkinleştirme
Enable-AzSqlDatabaseLedgerDigestUpload cmdlet'ini kullanarak veritabanını güncelleştirerek kayıt defteri özetlerini depolama hesabına yüklemeye başlayın. Veritabanı sunucusu, depolama hesabında sqldbledgerdigests adlı yeni bir kapsayıcı oluşturur ve kapsayıcıya kayıt defteri özetleri yazmaya başlar.
Write-host "Enabling ledger digest upload..."
$ledgerDigestUploadConfig = Enable-AzSqlDatabaseLedgerDigestUpload `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Endpoint $storage.PrimaryEndpoints.Blob
$ledgerDigestUploadConfig
Özetlerin silinmesini veya güncelleştirilmesini korumak için Set-AzRm Depolama ContainerImmutabilityPolicy ve Lock-AzRm Depolama ContainerImmutabilityPolicy cmdlet'lerini kullanarak sqldbledgerdigests kapsayıcısı üzerinde zamana dayalı bir bekletme ilkesi yapılandırmanız önerilir. İlke, korumalı ekleme blobları yazmalarına izin vermelidir. Bu, veritabanı sunucusunun mevcut bir bloba yeni özetler içeren bloklar ekleyebilmesini sağlarken, özetleri silme veya güncelleştirme işlemi belirtilen değişmezlik süresi boyunca devre dışı bırakılır.
Önemli
Aşağıdaki örnek, 1 günlük değişmezlik dönemi değerini kullanır. Üretim ortamında çok daha büyük bir değer kullanmanız gerekir.
Not
Belirtilen değiştirilemezlik süresi boyunca kapsayıcıyı veya depolama hesabını silemezsiniz.
Kapsayıcılar için zamana bağlı saklama ilkesi hakkında daha fazla bilgi için bkz . Kapsayıcılar için değişmezlik ilkelerini yapılandırma.
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
Sonraki adımlar için kaynak grubunu, sunucuyu ve tek veritabanını koruyun. Veritabanınızın kayıt defteri özelliğini farklı yöntemlerle kullanmayı öğreneceksiniz.
Bu kaynakları kullanmayı bitirdiğinizde, oluşturduğunuz kaynak grubunu silin. Bu eylem, içindeki sunucuyu ve tek veritabanını ve depolama hesabını da siler.