Usare PowerShell con un modello di Azure Resource Manager per creare un'istanza gestitaUse PowerShell with an Azure Resource Manager template to create a managed instance

SI APPLICA A: Istanza gestita di SQL di Azure

È possibile creare un'istanza gestita usando la libreria di Azure PowerShell e i modelli di Azure Resource Manager.You can create a managed instance by using the Azure PowerShell library and Azure Resource Manager templates.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Nota

Questo articolo è stato aggiornato per usare il nuovo modulo Az di Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. È comunque possibile usare il modulo AzureRM, che continuerà a ricevere correzioni di bug almeno fino a dicembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Per altre informazioni sul nuovo modulo Az e sulla compatibilità di AzureRM, vedere Introduzione del nuovo modulo Az di Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Usare Azure Cloud ShellUse Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Per avviare Azure Cloud Shell:To start Azure Cloud Shell:

OpzioneOption Esempio/CollegamentoExample/Link
Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Avviare Cloud Shell in una nuova finestraLaunch Cloud Shell in a new window
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Avviare Cloud Shell.Start Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.Select the Copy button on a code block to copy the code.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in 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. Premere INVIO per eseguire il codice.Select Enter to run the code.

Se si sceglie di installare e usare PowerShell in locale, per questa esercitazione è necessario Azure PowerShell 1.4.0 o versione successiva.If you choose to install and use PowerShell locally, this tutorial requires Azure PowerShell 1.4.0 or later. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Se si esegue PowerShell in locale, eseguire Connect-AzAccount per creare una connessione ad Azure.If you are running PowerShell locally, run Connect-AzAccount to create a connection to Azure.

Con i comandi di Azure PowerShell è possibile avviare la distribuzione usando un modello di Azure Resource Manager predefinito.Azure PowerShell commands can start deployment using a predefined Azure Resource Manager template. Nel modello possono essere specificate le proprietà seguenti:The following properties can be specified in the template:

  • Nome istanza gestitaManaged instance name
  • Nome utente e password dell'amministratore SQL.SQL administrator username and password.
  • Dimensioni dell'istanza (numero di core e dimensioni massime di archiviazione).Size of the instance (number of cores and max storage size).
  • Rete virtuale e subnet in cui verrà inserita l'istanza.VNet and subnet where the instance will be placed.
  • Regole di confronto a livello di server dell'istanza (anteprima).Server-level collation of the instance (preview).

Il nome dell'istanza, il nome utente dell'amministratore SQL, la rete virtuale/subnet e le regole di confronto non possono essere modificati in un secondo momento.Instance name, SQL administrator username, VNet/subnet, and collation cannot be changed later. Altre proprietà dell'istanza possono invece essere modificate.Other instance properties can be changed.

PrerequisitiPrerequisites

Questo esempio presuppone che sia stato creato un ambiente di rete valido o che sia stata modificata una rete virtuale esistente per l'istanza gestita.This sample assumes that you have created a valid network environment or modified an existing VNet for your managed instance. Se necessario, è possibile preparare l'ambiente di rete usando un modello di Azure Resource Manager separato.You can prepare the network environment using a separate Azure Resource Manager template, if necessary.

L'esempio usa i cmdlet New-AzureRmResourceGroupDeployment e Get-AzureRmVirtualNetwork per assicurarsi che siano installati i moduli di PowerShell seguenti:The sample uses the cmdlets New-AzResourceGroupDeployment and Get-AzVirtualNetwork, so make sure that you have installed the following PowerShell modules:

Install-Module Az.Network
Install-Module Az.Resources

Modello di Azure Resource ManagerAzure Resource Manager template

Salvare lo script seguente in un file JSON e prendere nota del percorso del file:Save the following script into a .json file, and note the file location:

{
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.1",
    "parameters": {
        "instance": {
            "type": "string"
        },
        "user": {
            "type": "string"
        },
        "pwd": {
            "type": "securestring"
        },
        "subnetId": {
            "type": "string"
        }
    },
    "resources": [
        {
            "name": "[parameters('instance')]",
            "location": "West Central US",
            "tags": {
                "Description":"GP Instance with custom instance collation - Serbian_Cyrillic_100_CS_AS"
            },
            "sku": {
                "name": "GP_Gen5",
                "tier": "GeneralPurpose"
            },
            "properties": {
                "administratorLogin": "[parameters('user')]",
                "administratorLoginPassword": "[parameters('pwd')]",
                "subnetId": "[parameters('subnetId')]",
                "storageSizeInGB": 256,
                "vCores": 8,
                "licenseType": "LicenseIncluded",
                "hardwareFamily": "Gen5",
                "collation": "Serbian_Cyrillic_100_CS_AS"
            },
            "type": "Microsoft.Sql/managedInstances",
            "identity": {
                "type": "SystemAssigned"
            },
            "apiVersion": "2015-05-01-preview"
        }
    ]
}

Aggiornare lo script di PowerShell seguente con il percorso di file corretto del file JSON salvato in precedenza e cambiare i nomi degli oggetti nello script:Update the following PowerShell script with the correct file path for the .json file you saved previously, and change the names of the objects in the script:

$subscriptionId = "ed827499-xxxx-xxxx-xxxx-xxxxxxxxxx"
Select-AzSubscription -SubscriptionId $subscriptionId

# Managed instance properties
$resourceGroup = "rg_mi"
$location = "West Central US"
$name = "managed-instance-name"
$user = "miSqlAdmin"
$secpasswd = ConvertTo-SecureString "<Put some strong password here>" -AsPlainText -Force

# Network configuration
$vNetName = "my_vnet"
$vNetResourceGroup = "rg_mi_vnet"
$subnetName = "ManagedInstances"
$vNet = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroup
$subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$subnetId = $subnet.Id

# Deploy instance using Azure Resource Manager template:
New-AzResourceGroupDeployment  -Name MyDeployment -ResourceGroupName $resourceGroup  `
                                    -TemplateFile 'C:\...\create-managed-instance.json' `
                                    -instance $name -user $user -pwd $secpasswd -subnetId $subnetId

Al termine dell'esecuzione dello script, è possibile accedere all'istanza gestita da tutti i servizi di Azure e dall'indirizzo IP configurato.Once the script completes, the managed instance can be accessed from all Azure services and the configured IP address.

Passaggi successiviNext steps

Per altre informazioni su Azure PowerShell, vedere la documentazione di Azure PowerShell.For more information on Azure PowerShell, see Azure PowerShell documentation.

Esempi di script di PowerShell aggiuntivi per Istanza gestita di SQL di Azure sono disponibili in Script di PowerShell per Istanza gestita di SQL di Azure.Additional PowerShell script samples for Azure SQL Managed Instance can be found in Azure SQL Managed Instance PowerShell scripts.