Utiliser PowerShell pour créer une instance managéeUse PowerShell to create a managed instance

S’APPLIQUE À : Azure SQL Managed Instance

Cet exemple de script PowerShell crée une instance managée dans un sous-réseau dédié au sein d’un réseau virtuel.This PowerShell script example creates a managed instance in a dedicated subnet within a new virtual network. Il configure également une table de routage et un groupe de sécurité réseau pour le réseau virtuel.It also configures a route table and a network security group for the virtual network. Une fois le script correctement exécuté, l’instance managée est accessible à partir du réseau virtuel ou d’un environnement local.Once the script has been successfully run, the managed instance can be accessed from within the virtual network or from an on-premises environment. Consultez Configurer la machine virtuelle Azure pour qu’elle se connecte à Azure SQL Database Managed Instance et Configurer une connexion point à site à Azure SQL Managed Instance à partir d’un emplacement local.See Configure Azure VM to connect to Azure SQL Database Managed Instance and Configure a point-to-site connection to Azure SQL Managed Instance from on-premises.

Important

Pour connaître les limitations, consultez les régions prises en charge et les types d’abonnement pris en charge.For limitations, see supported regions and supported subscription types.

Utiliser Azure Cloud ShellUse Azure Cloud Shell

Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Pour démarrer Azure Cloud Shell :To start Azure Cloud Shell:

OptionOption Exemple/LienExample/Link
Sélectionnez Essayer dans le coin supérieur droit d’un bloc de code.Select Try It in the upper-right corner of a code block. La sélection de Essayer ne copie pas automatiquement le code dans Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemple Essayer pour Azure Cloud Shell
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Lancer Cloud Shell dans une nouvelle fenêtreLaunch Cloud Shell in a new window
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Bouton Cloud Shell du portail Azure

Pour exécuter le code de cet article dans Azure Cloud Shell :To run the code in this article in Azure Cloud Shell:

  1. Démarrez Cloud Shell.Start Cloud Shell.

  2. Sélectionnez le bouton Copier dans un bloc de code pour copier le code.Select the Copy button on a code block to copy the code.

  3. Collez le code dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux, ou en sélectionnant Cmd+Maj+V sur macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Sélectionnez Entrée pour exécuter le code.Select Enter to run the code.

Si vous choisissez d’installer et d’utiliser PowerShell localement, ce tutoriel nécessite Azure PowerShell 1.4.0 ou ultérieur.If you choose to install and use PowerShell locally, this tutorial requires Azure PowerShell 1.4.0 or later. Si vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Si vous exécutez PowerShell en local, vous devez également lancer Connect-AzAccount pour créer une connexion avec Azure.If you are running PowerShell locally, you also need to run Connect-AzAccount to create a connection with Azure.

Exemple de scriptSample script

$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

Nettoyer le déploiementClean up deployment

Utilisez la commande suivante pour supprimer le groupe de ressources et toutes les ressources associées.Use the following command to remove the resource group and all resources associated with it.

Remove-AzResourceGroup -ResourceGroupName $resourcegroupname

Explication du scriptScript explanation

Ce script utilise certaines des commandes suivantes.This script uses some of the following commands. Pour plus d’informations sur les commandes utilisées et les autres commandes indiquées dans le tableau ci-dessous, cliquez sur les liens afin d’accéder à la documentation correspondante.For more information about used and other commands in the table below, click on the links to command specific documentation.

CommandeCommand NotesNotes
New-AzResourceGroupNew-AzResourceGroup Crée un groupe de ressources dans lequel toutes les ressources sont stockées.Creates a resource group in which all resources are stored.
New-AzVirtualNetworkNew-AzVirtualNetwork Créer un réseau virtuel.Creates a virtual network.
Add-AzVirtualNetworkSubnetConfigAdd-AzVirtualNetworkSubnetConfig Ajoute une configuration de sous-réseau à un réseau virtuel.Adds a subnet configuration to a virtual network.
Get-AzVirtualNetworkGet-AzVirtualNetwork Obtient un réseau virtuel dans un groupe de ressources.Gets a virtual network in a resource group.
Set-AzVirtualNetworkSet-AzVirtualNetwork Définit l’état visé d’un réseau virtuel.Sets the goal state for a virtual network.
Get-AzVirtualNetworkSubnetConfigGet-AzVirtualNetworkSubnetConfig Obtient un sous-réseau dans un réseau virtuel.Gets a subnet in a virtual network.
Set-AzVirtualNetworkSubnetConfigSet-AzVirtualNetworkSubnetConfig Configure l’état visé d’une configuration de sous-réseau dans un réseau virtuel.Configures the goal state for a subnet configuration in a virtual network.
New-AzRouteTableNew-AzRouteTable Crée une table de routage.Creates a route table.
Get-AzRouteTableGet-AzRouteTable Obtient les tables de routage.Gets route tables.
Set-AzRouteTableSet-AzRouteTable Définit l’état visé d’une table de routage.Sets the goal state for a route table.
New-AzSqlInstanceNew-AzSqlInstance Crée une instance managée.Creates a managed instance.
Remove-AzResourceGroupRemove-AzResourceGroup Supprime un groupe de ressources, y compris toutes les ressources imbriquées.Deletes a resource group, including all nested resources.

Étapes suivantesNext steps

Pour plus d’informations sur Azure PowerShell, consultez la documentation Azure PowerShell.For more information on Azure PowerShell, see Azure PowerShell documentation.

Vous trouverez d’autres exemples de scripts PowerShell pour Azure SQL Managed Instance dans Scripts PowerShell Azure SQL Managed Instance.Additional PowerShell script samples for Azure SQL Managed Instance can be found in Azure SQL Managed Instance PowerShell scripts.