استخدام PowerShell لإنشاء مثيل مدار
ينطبق على: مثيل Azure SQL المُدار
ينشئ مثال البرنامج النصي PowerShell مثيل مدار في شبكة فرعية مخصصة ضمن شبكة ظاهرية جديدة. كما يقوم بتكوين جدول توجيه ومجموعة أمان شبكة اتصال للشبكة الظاهرية. بمجرد تشغيل البرنامج النصي بنجاح، يمكن الوصول إلى المثيل المدار من داخل الشبكة الظاهرية أو من بيئة محلية. راجع تكوين Azure VM للاتصال بمثيل قاعدة بيانات مدارة Azure SQL وتكوين اتصال من نقطة إلى موقع إلى مثيل Azure SQL المدار من بيئة محلية.
هام
للاطلاع على القيود، راجع المناطق المعتمدة وأنواع الاشتراكات المعتمدة.
استخدام Azure Cloud Shell
Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.
لبدء Azure Cloud Shell:
خيار | مثال/ رابط |
---|---|
انقر فوق جربه في الزاوية العلوية اليسرى من كتلة التعليمات البرمجية. تحديد جربه لا يقوم بنسخ التعليمات البرمجية تلقائيًا إلى Cloud Shell. | |
انتقل إلى https://shell.azure.com، أو حدد زر تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. | |
حدد زر Cloud Shell في شريط القوائم في أعلى اليمين في مدخل Azure. |
لتشغيل التعليمة البرمجية في هذا المقال في Azure Cloud Shell:
ابدأ تشغيل Cloud Shell.
حدد الزر نسخ على كتلة التعليمات البرمجية لنسخ التعليمات البرمجية.
ألصق تعليمة البرمجية في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.
اكتب "Enter" لتشغيل الأمر.
إذا اخترت تثبيت PowerShell واستخدامه محلياً، فسيتطلب هذا البرنامج التعليمي إصدار Azure PowerShell 1.4.0 أو أحدث. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. إذا كنت تقوم بتشغيل PowerShell محلياً، تحتاج أيضاً إلى تشغيل Connect-AzAccount
لإنشاء اتصال مع Azure.
نموذج البرنامج النصي
$NSnetworkModels = "Microsoft.Azure.Commands.Network.Models"
$NScollections = "System.Collections.Generic"
Connect-AzAccount
# The SubscriptionId in which to create these objects
$SubscriptionId = ''
# Set the resource group name and location for your managed instance
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "eastus2"
# Set the networking values for your managed instance
$vNetName = "myVnet-$(Get-Random)"
$vNetAddressPrefix = "10.0.0.0/16"
$defaultSubnetName = "myDefaultSubnet-$(Get-Random)"
$defaultSubnetAddressPrefix = "10.0.0.0/24"
$miSubnetName = "myMISubnet-$(Get-Random)"
$miSubnetAddressPrefix = "10.0.0.0/24"
#Set the managed instance name for the new managed instance
$instanceName = "myMIName-$(Get-Random)"
# Set the admin login and password for your managed instance
$miAdminSqlLogin = "SqlAdmin"
$miAdminSqlPassword = "ChangeYourAdminPassword1"
# Set the managed instance service tier, compute level, and license mode
$edition = "General Purpose"
$vCores = 8
$maxStorage = 256
$computeGeneration = "Gen5"
$license = "LicenseIncluded" #"BasePrice" or LicenseIncluded if you have don't have SQL Server licence that can be used for AHB discount
# Set subscription context
Set-AzContext -SubscriptionId $SubscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location -Tag @{Owner="SQLDB-Samples"}
# Configure virtual network, subnets, network security group, and routing table
$networkSecurityGroupMiManagementService = New-AzNetworkSecurityGroup `
-Name 'myNetworkSecurityGroupMiManagementService' `
-ResourceGroupName $resourceGroupName `
-location $location
$routeTableMiManagementService = New-AzRouteTable `
-Name 'myRouteTableMiManagementService' `
-ResourceGroupName $resourceGroupName `
-location $location
$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroupName `
-Location $location `
-Name $vNetName `
-AddressPrefix $vNetAddressPrefix
Add-AzVirtualNetworkSubnetConfig `
-Name $miSubnetName `
-VirtualNetwork $virtualNetwork `
-AddressPrefix $miSubnetAddressPrefix `
-NetworkSecurityGroup $networkSecurityGroupMiManagementService `
-RouteTable $routeTableMiManagementService |
Set-AzVirtualNetwork
$virtualNetwork = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $resourceGroupName
$subnet= $virtualNetwork.Subnets[0]
# Create a delegation
$subnet.Delegations = New-Object "$NScollections.List``1[$NSnetworkModels.PSDelegation]"
$delegationName = "dgManagedInstance" + (Get-Random -Maximum 1000)
$delegation = New-AzDelegation -Name $delegationName -ServiceName "Microsoft.Sql/managedInstances"
$subnet.Delegations.Add($delegation)
Set-AzVirtualNetwork -VirtualNetwork $virtualNetwork
$miSubnetConfigId = $subnet.Id
$allowParameters = @{
Access = 'Allow'
Protocol = 'Tcp'
Direction= 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = 'VirtualNetwork'
DestinationAddressPrefix = '*'
}
$denyInParameters = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$denyOutParameters = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Outbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
Get-AzNetworkSecurityGroup `
-ResourceGroupName $resourceGroupName `
-Name "myNetworkSecurityGroupMiManagementService" |
Add-AzNetworkSecurityRuleConfig `
@allowParameters `
-Priority 1000 `
-Name "allow_tds_inbound" `
-DestinationPortRange 1433 |
Add-AzNetworkSecurityRuleConfig `
@allowParameters `
-Priority 1100 `
-Name "allow_redirect_inbound" `
-DestinationPortRange 11000-11999 |
Add-AzNetworkSecurityRuleConfig `
@denyInParameters `
-Priority 4096 `
-Name "deny_all_inbound" |
Add-AzNetworkSecurityRuleConfig `
@denyOutParameters `
-Priority 4096 `
-Name "deny_all_outbound" |
Set-AzNetworkSecurityGroup
# Create credentials
$secpassword = ConvertTo-SecureString $miAdminSqlPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($miAdminSqlLogin, $secpassword)
# Create managed instance
New-AzSqlInstance -Name $instanceName `
-ResourceGroupName $resourceGroupName -Location $location -SubnetId $miSubnetConfigId `
-AdministratorCredential $credential `
-StorageSizeInGB $maxStorage -VCore $vCores -Edition $edition `
-ComputeGeneration $computeGeneration -LicenseType $license
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
تنظيف عملية النشر
استخدام الأمر التالي لإزالة مجموعة الموارد وجميع الموارد المقترنة بها.
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
شرح البرنامج النصي
يستخدم هذا البرنامج النصي بعض الأوامر التالية. لمزيد من المعلومات حول الأوامر المستخدمة وغيرها في الجدول أدناه، انقر فوق الارتباطات لطلب وثائق معينة.
الأمر | ملاحظات |
---|---|
New-AzResourceGroup | إنشاء مجموعة موارد يتم تخزين جميع الموارد فيها. |
New-AzVirtualNetwork | إنشاء شبكة افتراضية. |
New-AzVirtualNetworkSubnetConfig | إضافة تكوين شبكة فرعية إلى شبكة ظاهرية. |
Get-AzVirtualNetwork | يحصل على شبكة اتصال ظاهرية في مجموعة موارد. |
Set-AzVirtualNetwork | تعيين حالة الهدف لشبكة ظاهرية. |
Get-AzVirtualNetworkSubnetConfig | يحصل على شبكة فرعية في شبكة افتراضية. |
Set-AzVirtualNetworkSubnetConfig | تكوين حالة الهدف لتكوين شبكة فرعية في شبكة ظاهرية. |
New-AzRouteTable | إنشاء جدول توجيه. |
New-AzRouteTable | يحصل على جداول المسار. |
Set-AzRouteTable | تعيين حالة الهدف لجدول مسار. |
New-AzSqlInstance | إنشاء مثيل مُدار. |
Remove-AzResourceGroup | يقوم بحذف مجموعة موارد، بما في ذلك جميع الموارد المتداخلة. |
الخطوات التالية
لمزيدٍ من المعلومات حول Azure PowerShell، راجع وثائق Azure PowerShell.
يمكن العثور على عينات إضافية للبرنامج النصي PowerShell لمثيل Azure SQL المدار في البرامج النصية لـ Azure SQL Managed Instance PowerShell.