استكشاف قاعدة بيانات SQL مفردة

مكتمل

سنُلقي نظرة على عدة طرق لنشر قاعدة بيانات Azure SQL Database أحادية.

النشر عبر البوابة

عملية إنشاء قاعدة بيانات أحادية من خلال مدخل Microsoft Azure هي عملية مُباشرة. في أثناء وجودك في المدخل، من يسار قائمة التنقل، اختر "SQL Databases". في مربع الحوار المُنزلق الناتج انقر فوق "Create":

The Azure portal Azure SQL Database Deployment screen

في جزء الصورة المُوضح أدناه، ستلاحظ أنه تم توفير الاشتراك بالفعل لأجلك. سيتعين عليك توفير المعلومات التالية:

  • Resource Group – إذا وُجدت أي مجموعة موارد ترغب في استخدامها، فإنه يمكنك تحديدها من القائمة المنسدلة. يمكنك النقر فوق خيار "Create new" إذا كنت ترغب في إنشاء مجموعة موارد جديدة لـAzure SQL Database.
  • Database Name – يجب توفير اسم قاعدة البيانات.
  • Server – يجب أن تتواجد كل قاعدة بيانات على خادم منطقي. إذا كان لديك واحد بالفعل موجود في المنطقة المناسبة، يمكنك اختيار استخدامه. وإلا، يمكنك النقر على رابط Create new واتّبع التعليمات لإنشاء خادم منطقي جديد لاستضافة قاعدة البيانات.
  • هل تريد استخدام تجمُع مرِن من SQL؟ – تحديد ما إذا كنت ستستخدم التجمع المرن أم لا.
  • حساب + تخزين – تحديد موارد الحساب المناسبة المطلوبة. افتراضيًا، سيكون Gen5 و2vCore بسعة تخزين 32 GB حتى يتم تحديد شيء آخر. انقر فوق تكوين قاعدة بيانات لعرض خيارات تكوين بديلة.

Create SQL Database blade of Azure portal

تُوضح الصورة أدناه جزء البوابة التي يمكنك من خلالها تكوين خيارات قاعدة البيانات. ستلاحظ هنا أن مستوى الخدمة هو الغرض العام "General Purpose"، ومستوى الحساب هو توفير "Provisioned". يُشير "Provisioned" إلى أن موارد الحساب يتم تخصيصها مُسبقًا وتُصدر فواتيرها كل ساعة استنادًا إلى عدد vCores المُكونة. الخيار الآخر هو بدون خادم، الذي تمت مناقشته من قبل. يُحاسب نظام بدون خادم بالثانية بناءً على عدد vCores المستخدمة.

Service Tier selection in Azure portal

نشر Azure SQL Database عبر PowerShell/CLI

يمكنك كذلك نشر قاعدة بياناتك باستخدام Azure PowerShell أو Azure CLI. تُظهر الصورة أدناه مثال PowerShell حيث تقوم بإنشاء مجموعة موارد جديدة، وتحديد مسؤول يسمى SqlAdmin ثم إنشاء قاعدة خادم وقاعدة بيانات وجدار حماية جديدة.

# Connect-AzAccount

# The SubscriptionId in which to create these objects
$SubscriptionId = ''

# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "westus2"

# Set an admin login and password for your server
$adminSqlLogin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"

# Set server name - the logical server name has to be unique in the system
$serverName = "server-$(Get-Random)"

# The sample database name
$databaseName = "mySampleDatabase"

# The ip address range that you want to allow to access your server
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"

# Set subscription
Set-AzContext -SubscriptionId $subscriptionId

# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location

# Create a server with a system wide unique server name
$server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
 -ServerName $serverName `
 -Location $location `
 -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))

# Create a server firewall rule that allows access from the specified IP range

$serverFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
 -ServerName $serverName `
 -FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp

# Create a blank database with an S0 performance level

$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
 -ServerName $serverName `
 -DatabaseName $databaseName `
 -RequestedServiceObjectiveName "S0" `
 -SampleName "AdventureWorksLT"

يمكن كذلك استخدام Azure CLI لنشر Azure SQL Database كما مُوضح أدناه:

#!/bin/bash

# set execution context (if necessary)
az account set --subscription <replace with your subscription name or id>

# Set the resource group name and location for your server
resourceGroupName=myResourceGroup-$RANDOM
location=westus2

# Set an admin login and password for your database
adminlogin=ServerAdmin
password=`openssl rand -base64 16`

# password=<EnterYourComplexPasswordHere1>

# The logical server name has to be unique in all of Azure 
servername=server-$RANDOM

# The ip address range that you want to allow to access your DB
startip=0.0.0.0
endip=0.0.0.0

# Create a resource group
az group create \
 --name $resourceGroupName \
 --location $location

# Create a logical server in the resource group
az sql server create \
 --name $servername \
 --resource-group $resourceGroupName \
 --location $location \
 --admin-user $adminlogin \
 --admin-password $password

# Configure a firewall rule for the server

az sql server firewall-rule create \
 --resource-group $resourceGroupName \
 --server $servername \
 -n AllowYourIp \
 --start-ip-address $startip \
 --end-ip-address $endip

# Create a database in the server
az sql db create \
 --resource-group $resourceGroupName \
 --server $servername 
 --name mySampleDatabase \
 --sample-name AdventureWorksLT \
 --edition GeneralPurpose \
 --family Gen4 \
 --capacity 1 \

# Echo random password
echo $password

نشر Azure SQL Database باستخدام قوالبAzure Resource Manager

هناك طريقة أخرى لنشر الموارد كما ذكرنا سابقًا باستخدام قالب Azure Resource Manager. يمنحك قالب Resource Manager تحكمًا أكثر دقة على مواردك، وتوفر Microsoft مستودع GitHub يسمى "Azure-Quickstart-Templates"، والذي يستضيف قوالب Azure Resource Manager يُمكنك الرجوع إليها في عمليات النشر الخاصة بك. فيما يلي مثال PowerShell لنشر قالب يستند إلى GitHub:

#Define Variables for parameters to pass to template
$projectName = Read-Host -Prompt "Enter a project name"
$location = Read-Host -Prompt "Enter an Azure location (i.e. centralus)"
$adminUser = Read-Host -Prompt "Enter the SQL server administrator username"
$adminPassword = Read-Host -Prompt "Enter the SQl server administrator password" -AsSecureString
$resourceGroupName = "${projectName}rg"

#Create Resource Group and Deploy Template to Resource Group
New-AzResourceGroup -Name $resourceGroupName -Location $location

New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
 -TemplateUri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-sql-logical-server/azuredeploy.json" `
 -administratorLogin $adminUser -administratorLoginPassword $adminPassword

Read-Host -Prompt "Press [ENTER] to continue ..."