Vytvoření spravované instance pomocí PowerShellu
Platí pro: Azure SQL Managed Instance
Tento příklad skriptu PowerShellu vytvoří spravovanou instanci ve vyhrazené podsíti v nové virtuální síti. Nakonfiguruje také směrovací tabulku a skupinu zabezpečení sítě pro virtuální síť. Po úspěšném spuštění skriptu je možné ke spravované instanci přistupovat z virtuální sítě nebo z místního prostředí. Viz Konfigurace virtuálního počítače Azure pro připojení ke spravované instanci Azure SQL Database a konfigurace připojení typu point-to-site ke službě Azure SQL Managed Instance z místního prostředí.
Důležité
Omezení najdete v podporovaných oblastech a podporovaných typech předplatného.
Použití služby Azure Cloud Shell
Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.
Spuštění služby Azure Cloud Shell:
Možnost | Příklad nebo odkaz |
---|---|
Zvolte Vyzkoušet v pravém horním rohu bloku kódu. Výběr Vyzkoušet automaticky nekopíruje kód do služby Cloud Shell. | |
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. | |
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. |
Pokud chcete spustit kód uvedený v tomto článku ve službě Azure Cloud Shell, postupujte takto:
Spusťte Cloud Shell.
Vyberte tlačítko Kopírovat na bloku kódu a kód zkopírujte.
Vložte kód do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete Ctrl+Shift+V nebo vyberete Cmd+Shift+V v macOS.
Spusťte kód stisknutím klávesy Enter.
Pokud se rozhodnete nainstalovat a používat PowerShell místně, tento kurz vyžaduje Azure PowerShell 1.4.0 nebo novější. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell. Pokud používáte PowerShell místně, je také potřeba spustit příkaz Connect-AzAccount
pro vytvoření připojení k Azure.
Ukázkový skript
# <SetVariables>
$NSnetworkModels = "Microsoft.Azure.Commands.Network.Models"
$NScollections = "System.Collections.Generic"
# The SubscriptionId in which to create these objects
$SubscriptionId = '<Enter subscription ID>'
# 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 = "MISubnet-$(Get-Random)"
$miSubnetAddressPrefix = "10.0.0.0/24"
#Set the managed instance name for the new managed instance
$instanceName = "mi-name-$(Get-Random)"
# Set the admin login and password for your managed instance
$miAdminSqlLogin = "SqlAdmin"
$miAdminSqlPassword = "ChangeThisPassword!!"
# 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
$dbname = 'SampleDB'
# </SetVariables>
# <CreateResourceGroup>
# Set subscription context
Connect-AzAccount
$subscriptionContextParams = @{
SubscriptionId = $SubscriptionId
}
Set-AzContext @subscriptionContextParams
# Create a resource group
$resourceGroupParams = @{
Name = $resourceGroupName
Location = $location
Tag = @{Owner="SQLDB-Samples"}
}
$resourceGroup = New-AzResourceGroup @resourceGroupParams
# </CreateResourceGroup>
# <CreateVirtualNetwork>
# Configure virtual network, subnets, network security group, and routing table
$networkSecurityGroupParams = @{
Name = 'myNetworkSecurityGroupMiManagementService'
ResourceGroupName = $resourceGroupName
Location = $location
}
$networkSecurityGroupMiManagementService = New-AzNetworkSecurityGroup @networkSecurityGroupParams
$routeTableParams = @{
Name = 'myRouteTableMiManagementService'
ResourceGroupName = $resourceGroupName
Location = $location
}
$routeTableMiManagementService = New-AzRouteTable @routeTableParams
$virtualNetworkParams = @{
ResourceGroupName = $resourceGroupName
Location = $location
Name = $vNetName
AddressPrefix = $vNetAddressPrefix
}
$virtualNetwork = New-AzVirtualNetwork @virtualNetworkParams
$subnetConfigParams = @{
Name = $miSubnetName
VirtualNetwork = $virtualNetwork
AddressPrefix = $miSubnetAddressPrefix
NetworkSecurityGroup = $networkSecurityGroupMiManagementService
RouteTable = $routeTableMiManagementService
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnetConfigParams | 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)
$delegationParams = @{
Name = $delegationName
ServiceName = "Microsoft.Sql/managedInstances"
}
$delegation = New-AzDelegation @delegationParams
$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 = '*'
}
$networkSecurityGroupParams = @{
ResourceGroupName = $resourceGroupName
Name = "myNetworkSecurityGroupMiManagementService"
}
$networkSecurityGroup = Get-AzNetworkSecurityGroup @networkSecurityGroupParams
$allowRuleParams = @{
Access = 'Allow'
Protocol = 'Tcp'
Direction = 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = 'VirtualNetwork'
DestinationAddressPrefix = '*'
}
$denyInRuleParams = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$denyOutRuleParams = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Outbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$networkSecurityGroup |
Add-AzNetworkSecurityRuleConfig @allowRuleParams -Priority 1000 -Name "allow_tds_inbound" -DestinationPortRange 1433 |
Add-AzNetworkSecurityRuleConfig @allowRuleParams -Priority 1100 -Name "allow_redirect_inbound" -DestinationPortRange 11000-11999 |
Add-AzNetworkSecurityRuleConfig @denyInRuleParams -Priority 4096 -Name "deny_all_inbound" |
Add-AzNetworkSecurityRuleConfig @denyOutRuleParams -Priority 4096 -Name "deny_all_outbound" |
Set-AzNetworkSecurityGroup
# </CreateVirtualNetwork>
# <CreateManagedInstance>
# Create credentials
$secpassword = ConvertTo-SecureString $miAdminSqlPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList @($miAdminSqlLogin, $secpassword)
$managedInstanceParams = @{
Name = $instanceName
ResourceGroupName = $resourceGroupName
Location = $location
SubnetId = $miSubnetConfigId
AdministratorCredential = $credential
StorageSizeInGB = $maxStorage
VCore = $vCores
Edition = $edition
ComputeGeneration = $computeGeneration
LicenseType = $license
}
New-AzSqlInstance @managedInstanceParams
# </CreateManagedInstance>
# <CreateDatabase>
$databaseParams = @{
ResourceGroupName = $resourceGroupName
InstanceName = $instanceName
Name = $dbname
Collation = 'Latin1_General_100_CS_AS_SC'
}
New-AzSqlInstanceDatabase @databaseParams
# </CreateDatabase>
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
Vyčištění nasazení
Pomocí následujícího příkazu odeberte skupinu prostředků a všechny přidružené prostředky.
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Vysvětlení skriptu
Tento skript používá některé z následujících příkazů. Další informace o použití a dalších příkazech v následující tabulce potřebujete kliknutím na odkazy na dokumentaci specifickou pro příkazy.
Příkaz | Notes |
---|---|
New-AzResourceGroup | Vytvoří skupinu prostředků, ve které se ukládají všechny prostředky. |
New-AzVirtualNetwork | Vytvoří virtuální síť. |
Add-AzVirtualNetworkSubnetConfig | Přidá do virtuální sítě konfiguraci podsítě. |
Get-AzVirtualNetwork | Získá ve skupině prostředků virtuální síť. |
Set-AzVirtualNetwork | Nastaví stav cíle pro virtuální síť. |
Get-AzVirtualNetworkSubnetConfig | Získá podsíť ve virtuální síti. |
Set-AzVirtualNetworkSubnetConfig | Nakonfiguruje stav cíle pro konfiguraci podsítě ve virtuální síti. |
New-AzRouteTable | Vytvoří směrovací tabulku. |
Get-AzRouteTable | Získá směrovací tabulky. |
Set-AzRouteTable | Nastaví stav cíle pro směrovací tabulku. |
New-AzSqlInstance | Vytvoří spravovanou instanci. |
New-AzSqlInstanceDatabase | Vytvoří databázi pro vaši spravovanou instanci. |
Remove-AzResourceGroup | Odstraní skupinu prostředků včetně všech vnořených prostředků. |
Další kroky
Další informace o Azure PowerShellu najdete v dokumentaci k Azure PowerShellu.
Další ukázky skriptů PowerShellu pro Azure SQL Managed Instance najdete ve skriptech PowerShellu pro Azure SQL Managed Instance.