SQL Server PowerShell

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Installer SQL Server PowerShell

Il existe deux modules SQL Server PowerShell  SqlServer et SQLPS .

Le module SqlServer est le module PowerShell actuel à utiliser.

Le module SQLPS fait partie de l’installation de SQL Server (à des fins de compatibilité descendante), mais il n’est plus mis à jour.

Le module SqlServer contient les versions mises à jour des applets de commande disponibles dans SQLPS ainsi que de nouvelles applets de commande pour prendre en charge les dernières fonctionnalités SQL.

Des versions précédentes du module SqlServerétaient fournies avec SQL Server Management Studio (SSMS), mais uniquement avec les versions 16.x de SSMS.

Pour utiliser PowerShell avec SSMS 17.0 et versions ultérieures, installez le module SqlServer à partir de PowerShell Gallery.

Vous pouvez également utiliser PowerShell avec Azure Data Studio.

Pourquoi le module SQLPS s’appelle-t-il désormais SqlServer ?

Pour expédier les mises à jour SQL PowerShell, nous avons dû modifier l’identité du module SQL PowerShell et le wrapper appelé SQLPS.exe. En raison de ce changement, il existe désormais deux modules SQL PowerShell : SqlServer et SQLPS.

Mettez à jour vos scripts PowerShell s’ils importent le module SQLPS.

Si vous avez des scripts PowerShell qui exécutent Import-Module -Name SQLPS et que vous souhaitez tirer parti des fonctionnalités du nouveau fournisseur et des nouvelles applets de commande, vous devez utiliser à la place Import-Module -Name SqlServer. Le nouveau module est installé dans le dossier %ProgramFiles%\WindowsPowerShell\Modules\SqlServer. Il est donc inutile de mettre à jour la variable $env:PSModulePath. Si vous avez des scripts qui utilisent une version Community ou tierce d’un module nommé SqlServer, utilisez le paramètre Prefix pour éviter toute collision de noms.

Il est recommandé de démarrer votre script avec import-module SQLServer afin d’éviter les problèmes côte à côte si le module SQLPS est installé sur le même ordinateur.

Cette section s’applique aux scripts exécutés à partir de PowerShell et non à l’agent SQL. Le nouveau module peut être utilisé avec les étapes de travail de SQL Agent à l’aide de #NOSQLPS.

Composants de SQL Server PowerShell

Le module SqlServer est fourni avec :

  • Des Fournisseurs PowerShell qui activent un mécanisme de navigation simple semblable aux chemins d’accès des systèmes de fichiers. Vous pouvez générer des chemins d'accès semblables aux chemins d'accès des systèmes de fichiers, où le lecteur est associé à un modèle objet de gestion SQL Server et les nœuds sont basés sur les classes du modèle objet. Vous pouvez ensuite utiliser des commandes familières telles que cd (alias de Set-Location) et dir (alias de Get-ChildItem) pour naviguer parmi les chemins d’accès de la même façon que vous naviguez parmi des dossiers dans une fenêtre d’invite de commandes. Vous pouvez utiliser d’autres commandes, telles que ren (alias de Rename-Item) ou del (alias de Remove-Item), pour exécuter des actions sur les nœuds situés dans le chemin.

  • Un jeu de cmdlets qui prennent en charge des actions telles que l’exécution d’un script sqlcmd contenant des instructions Transact-SQL ou XQuery.

  • Le fournisseur AS et les cmdlets, qui étaient installés précédemment séparément.

Versions de SQL Server

Les applets de commande SQL PowerShell peuvent servir à gérer des instances d’Azure SQL Database, Azure Synapse Analytics et tous les produits SQL Server pris en charge.

Identificateurs SQL Server contenant des caractères non pris en charge dans les chemins PowerShell

Les applets de commande Encode-Sqlname (alias de ConvertTo-EncodedSqlName) et Decode-Sqlname (alias de ConvertFrom-EncodedSqlName) vous aident à spécifier les identificateurs SQL Server qui contiennent des caractères non pris en charge dans les chemins PowerShell. Pour plus d’informations, consultez Identificateurs SQL Server dans PowerShell.

Utilisez la cmdlet Convert-UrnToPath pour convertir un nom de ressource unique pour un objet du Moteur de base de données en un chemin d’accès pour le fournisseur PowerShell SQL Server. Pour plus d’informations, consultez Convertir des URN en chemins d’accès de fournisseur SQL Server.

Expressions de requête et noms URN

Les expressions de requête sont des chaînes qui utilisent une syntaxe semblable à XPath pour spécifier un jeu de critères permettant d'énumérer un ou plusieurs objets dans une hiérarchie de modèle objet. Un nom de ressource unique (URN) est un type spécifique de chaîne d'expression de requête qui identifie de façon unique un objet particulier. Pour plus d’informations, consultez Expressions de requête et noms URN.

SQL Server Agent

Le module utilisé par SQL Server Agent est le même. Par conséquent, les tâches SQL Server Agent, qui ont des étapes de travail de type PowerShell utilisent le module SQLPS. Pour plus d’informations, consultez Guide pratique pour exécuter PowerShell avec SQL Server Agent. Cependant, depuis SQL Server 2019, vous pouvez désactiver SQLPS. Pour ce faire, sur la première ligne d’une étape de travail de type PowerShell, vous pouvez ajouter #NOSQLPS, ce qui empêche SQL Agent de charger automatiquement le module SQLPS. Dans ce cas, la tâche de votre SQL Agent exécute la version de PowerShell installée sur l’ordinateur, puis vous pouvez utiliser n’importe quel autre module PowerShell de votre choix.

Résolution des problèmes SQLPS

Si des étapes de travail de l’agent (sous-système PowerShell) échouent avec l’erreur suivante, cette section peut être utile pour résoudre le problème.

Une étape du travail a reçu une erreur à la ligne 1 d’un script PowerShell. La ligne correspondante est « import-module SQLPS ». Corrigez le script et replanifiez le travail. Les informations de l’erreur retournées par PowerShell sont : « Le module « SQLPS » nécessaire n’a pas été chargé, car aucun fichier de module valide n’a été trouvé dans un répertoire de module. ».

Le module SQLPS doit être disponible dans la variable d’environnement PSModulePath. La désinstallation de SSMS 16.x peut supprimer SQLPS de PSModulePath. Pour vérifier les valeurs actuelles stockées dans PSModulePath, exécutez la commande PowerShell suivante :

 $env:PSModulePath -split ";"

Si le chemin est défini, vous verrez une entrée similaire à C:\Program Files (x86)\Microsoft SQL Server\130\Tools\PowerShell\Modules. Si le chemin n’est pas défini, localisez le dossier SQLPS sur votre serveur et ajoutez-le à la valeur de la variable d’environnement par le biais de PowerShell ou dans Propriétés système>Avancé>Variables d’environnement.

Module SQLServer avec SQL Agent

Si vous souhaitez utiliser le module SqlServer à l’étape de la tâche de votre SQL Agent, vous pouvez placer ce code sur les deux premières lignes de votre script.

#NOSQLPS
Import-Module -Name SqlServer

Référence des applets de commande

Étapes suivantes