Partager via


Invoke-SqlNotebook

Exécute un fichier de notebook SQL (.ipynb) et génère le notebook matérialisé.

Syntaxe

Invoke-SqlNotebook
      [-ServerInstance <Object>]
      [-Database <Object>]
      [-Username <Object>]
      [-Password <Object>]
      [-Credential <PSCredential>]
      [-InputFile <Object>]
      [-InputObject <Object>]
      [-OutputFile <Object>]
      [-AccessToken <PSObject>]
      [-TrustServerCertificate]
      [-Encrypt <String>]
      [-HostNameInCertificate <String>]
      [-Force]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-SqlNotebook
      [-ConnectionString <Object>]
      [-InputFile <Object>]
      [-InputObject <Object>]
      [-OutputFile <Object>]
      [-Force]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-SqlNotebook
      -InputFile <Object>
      [-OutputFile <Object>]
      [-Force]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-SqlNotebook
      -InputObject <Object>
      [-OutputFile <Object>]
      [-Force]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]

Description

L’applet de commande Invoke-SqlNotebook exécute un fichier SQL Notebook (.ipynb) et génère le notebook matérialisé.

Le notebook est exécuté sur ServerInstance et la base de données fournie.

Lorsque l’applet de commande est exécutée, le fichier Notebook résultant se trouve à l’emplacement défini par l’utilisateur ou dans le même répertoire du fichier de notebook d’entrée.

Le fichier outfile de l’applet de commande peut être omis : si c’est le cas, il est créé avec le nom du fichier d’entrée et l'_out ajouté au fichier.

Exemples

Exemple 1 : Exécuter un notebook sur le serveur local (instance par défaut)

PS C:\> Invoke-SqlNotebook -ServerInstance localhost -Database TestNotebook -InputFile C:\notebook.ipynb

   Directory: C:\

Mode           LastWriteTime         Length Name
----           -------------         ------ ----
-a----         8/1/2019  1:00 PM     4656   notebook_out.ipynb

Cette commande exécute le notebook sur l’instance par défaut de SQL Server exécutée sur l’ordinateur à partir duquel l’applet de commande est exécutée. Par défaut, étant donné qu’aucun -OutputFile a été transmis, le bloc-notes matérialisé est enregistré sur le disque avec le même nom que le InputFile avec un _out en tant que suffixe au nom de fichier (notebook.ipynb -> notebook_out.ipynb)

Exemple 2 : Exécuter notebook sur le serveur local (instance defaut) et enregistre le notebook matérialisé dans un fichier spécifié

PS C:\> Invoke-SqlNotebook -ServerInstance localhost -Database TestNotebook -InputFile C:\notebook.ipynb -OutputFile C:\new_notebook.ipynb

   Directory: C:\

Mode           LastWriteTime         Length Name
----           -------------         ------ ----
-a----         8/1/2019  1:00 PM     44656  new_notebook.ipynb

Cette commande exécute le notebook sur l’instance par défaut de SQL Server exécutée sur l’ordinateur à partir duquel l’applet de commande est exécutée. Le notebook exécuté est ensuite enregistré dans le fichier spécifié avec le paramètre -OutputFile.

Exemple 3 : Exécuter un notebook à l’aide du paramètre -ConnectionString

PS C:\> Invoke-Sqlnotebook -ConnectionString 'Server=Localhost;Database=TestNotebook;Trusted_Connection=True;' -InputFile C:\notebook.ipynb

   Directory: C:\

Mode           LastWriteTime         Length Name
----           -------------         ------ ----
-a----         8/1/2019  1:00 PM     44656  notebook_out.ipynb

Il s’agit de l’exemple 1, uniquement que la connexion au serveur est spécifiée via le paramètre -ConnectionString.

Exemple 4 : Exécuter un notebook sur tous les serveurs inscrits

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' |
WHERE { $_.Mode -ne 'd'} |            
foreach {
    $datetime = Get-Date -Format yyyyMMddhhmm;
    Get-SqlInstance -ServerInstance $_.Name |
    foreach {
            Invoke-SqlNotebook -ServerInstance $_.Name -Database master -InputFile '$home\Documents\SQL Server Management Studio\BPCheck.ipynb' `
            -OutputFile "BPCheck_output_$($_.NetName)_$($datetime).ipynb";
            }
        }

Utilisez des serveurs inscrits ou un serveur d’administration centrale pour exécuter Invoke-SqlNotebook sur plusieurs serveurs. Dans cet exemple, la propriété NetName de l’instance SQL Server sera incluse dans le nom du fichier de sortie ; le bloc-notes matérialisé va être horodaté avec année-mois-jour-heure-minute.

Exemple 5 : Exécuter un notebook, ouvrir des résultats dans Azure Data Studio

Installez l’extension PowerShell à partir de la Place de marché Azure Data Studio. Utilisez la console intégrée PowerShell dans Azure Data Studio pour exécuter Invoke-SqlNotebook et utiliser Open-EditorFile pour ouvrir les résultats du notebook SQL directement dans Azure Data Studio.

Invoke-SqlNotebook -ServerInstance ServerA -Database master -InputFile "$home\Documents\SQL Server Management Studio\BPCheck.ipynb" |
Open-EditorFile

Remarque : la commande Open-EditorFile est disponible uniquement dans la console intégrée PowerShell.

Exemple 6 : Exécuter un notebook, se connecter à des bases de données Azure SQL (ou Managed Instance) à l’aide d’un principal de service

Import-Module SQLServer
Import-Module Az.Accounts -MinimumVersion 2.2.0

### Obtain the Access Token interactively.
### Note: help for Invoke-Sqlcmd has examples on other ways to acquire the token.
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-SqlNotebook -ServerInstance myserver.database.windows.net -Database master -AccessToken $access_token`
                   -InputFile MyNotebook.ipynb

Paramètres

-AccessToken

Jeton d’accès utilisé pour s’authentifier auprès de SQL Server, comme alternative à l’authentification utilisateur/mot de passe ou Windows.

Cela peut être utilisé, par exemple, pour vous connecter à SQL Azure DB et SQL Azure Managed Instance à l’aide d’un Service Principal ou d’un Managed Identity (voir les références en bas de cette page)

Dans les scénarios courants, ce paramètre est obtenu avec quelque chose comme (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token (nécessite le module Az.Account)

Ne spécifiez pas nom d’utilisateur, mot de passe ou d’informations d’identification lors de l’utilisation de ce paramètre.

Type:PSObject
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ConnectionString

Spécifie une chaîne de connexion à connecter au serveur.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Credential

Objet PSCredential dont les champs Nom d’utilisateur et Mot de passe seront utilisés pour se connecter à l’instance SQL.

Type:PSCredential
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Database

Cette applet de commande se connecte à cette base de données dans l’instance spécifiée dans le paramètre ServerInstance.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Encrypt

Type de chiffrement à utiliser lors de la connexion à SQL Server.

Cette valeur est mappée à la propriété EncryptSqlConnectionEncryptOption sur l’objet SqlConnection du pilote Microsoft.Data.SqlClient.

Dans la version 22 du module, la valeur par défaut est Optional (pour la compatibilité avec v21). Dans la version 23+ du module, la valeur par défaut est « Obligatoire », ce qui peut créer une modification cassant pour les scripts existants.

Ce paramètre est nouveau dans v22 du module.

Type:String
Valeurs acceptées:Mandatory, Optional, Strict
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Force

Par défaut, lorsque l’applet de commande écrit le notebook matérialisé dans un fichier, une vérification est effectuée pour empêcher l’utilisateur de remplacer accidentellement un fichier existant. Utilisez -Force pour contourner cette vérification et autoriser l’applet de commande à remplacer le fichier existant.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HostNameInCertificate

Nom d’hôte à utiliser pour valider le certificat TLS/SSL SQL Server.

Ce paramètre est nouveau dans v22 du module.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputFile

Spécifie un fichier notebook (.ipynb) qui sera exécuté via l’applet de commande.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputObject

Spécifie le notebook en tant que chaîne Json qui sera utilisée comme bloc-notes d’entrée.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-OutputFile

Spécifie le fichier notebook de sortie souhaité pour lequel le notebook exécuté sera enregistré.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Password

Spécifie le mot de passe de l’ID de connexion d’authentification SQL Server spécifié dans le paramètre Username.

Les mots de passe respectent la casse. Si possible, utilisez l’authentification Windows ou envisagez d’utiliser le paramètre -Credential à la place.

Si vous spécifiez le paramètre Mot de passe suivi de votre mot de passe, le mot de passe est visible par toute personne qui peut voir votre moniteur.

Si vous codez le mot de passe suivi de votre mot de passe dans un script .ps1, toute personne qui lit le fichier de script voit votre mot de passe.

Attribuez les autorisations NTFS appropriées au fichier pour empêcher d’autres utilisateurs de pouvoir lire le fichier.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ProgressAction

Détermine comment PowerShell répond aux mises à jour de progression générées par un script, une applet de commande ou un fournisseur, telles que les barres de progression générées par l’applet de commande Write-Progress. L’applet de commande Write-Progress crée des barres de progression qui affichent l’état d’une commande.

Type:ActionPreference
Alias:proga
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ServerInstance

Spécifie une chaîne de caractères ou un objet SMO (SQL Server Management Objects) qui spécifie le nom d’une instance du moteur de base de données.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-TrustServerCertificate

Indique si le canal sera chiffré lors du contournement de la marche à pied de la chaîne de certificats pour valider l’approbation.

Dans la version 22 du module, la valeur par défaut est $true (pour la compatibilité avec v21). Dans v23+ du module, la valeur par défaut est « $false », ce qui peut créer une modification cassant pour les scripts existants.

Ce paramètre est nouveau dans v22 du module.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Username

Spécifie l’ID de connexion pour établir une connexion d’authentification SQL Server à une instance du moteur de base de données.

Le mot de passe doit être spécifié via le paramètre Password.

Si le nom d’utilisateur et le mot de passe ne sont pas spécifiés, cette applet de commande tente une connexion d’authentification Windows à l’aide du compte Windows exécutant la session Windows PowerShell. Si possible, utilisez l’authentification Windows.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

System.Object

System.Management.Automation.PSCredential

Sorties

System.Object

Notes

Une bonne façon de visualiser un notebook matérialisé consiste à utiliser Azure Data Studio.