Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server sur Linux
Cet article présente SQL Server PowerShell et vous guide dans quelques exemples sur la façon de l’utiliser avec PowerShell sur macOS et Linux. PowerShell est maintenant un projet open source sur GitHub.
Pour plus d’informations sur Windows PowerShell, consultez Qu’est-ce que Windows PowerShell ?
Options de l'éditeur multiplateforme
Toutes les étapes suivantes pour powerShell fonctionnent dans un terminal standard, ou vous pouvez les exécuter à partir d’un terminal dans Visual Studio Code. Visual Studio Code est disponible sur macOS et Linux. Pour plus d’informations sur l’extension MSSQL, consultez Qu’est-ce que l’extension MSSQL pour Visual Studio Code ?
Installer PowerShell
Pour plus d’informations sur l’installation de PowerShell sur différentes plateformes prises en charge et expérimentales, consultez les articles suivants :
- Installer PowerShell sur Windows
- Installer PowerShell sur Linux
- Installer PowerShell sur macOS
- Installer PowerShell sur des processeurs ARM
Installer le module SqlServer
Le module SqlServer est géré dans la galerie PowerShell. Lorsque vous utilisez SQL Server, vous devez toujours utiliser la version la plus récente du SqlServer module PowerShell.
Pour installer le SqlServer module, ouvrez une session PowerShell et exécutez le code suivant :
Install-Module -Name SqlServer
Pour plus d’informations sur l’installation du SqlServer module à partir de PowerShell Gallery, consultez Installer le module SQL Server PowerShell.
Utiliser le module SqlServer
Commençons par lancer PowerShell. Si vous êtes sur macOS ou Linux, ouvrez une session de terminal sur votre ordinateur et tapez pwsh pour lancer une nouvelle session PowerShell. Sur Windows, utilisez Win+R et tapez pwsh pour lancer une nouvelle session PowerShell.
pwsh
SQL Server fournit un module PowerShell nommé SqlServer. Vous pouvez utiliser le SqlServer module pour importer les composants SQL Server (fournisseur ET applets de commande SQL Server) dans un environnement ou un script PowerShell.
Copiez et collez la commande suivante à l’invite PowerShell pour importer le SqlServer module dans votre session PowerShell actuelle :
Import-Module SqlServer
Tapez la commande suivante à l’invite PowerShell pour vérifier que le SqlServer module a été importé correctement :
Get-Module -Name SqlServer
PowerShell doit afficher des informations similaires à la sortie suivante :
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 21.1.18102 SqlServer {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...
Se connecter à SQL Server et obtenir des informations sur le serveur
Les étapes suivantes utilisent PowerShell pour vous connecter à votre instance SQL Server sur Linux et afficher quelques propriétés de serveur.
Copiez et collez les commandes suivantes à l’invite de PowerShell. Quand vous exécutez ces commandes, PowerShell :
- afficher une boîte de dialogue qui vous invite à entrer le nom d’hôte ou l’adresse IP de votre instance
- afficher la boîte de dialogue requête d’informations d’identification PowerShell, qui vous invite à entrer les informations d’identification. Vous pouvez utiliser votre nom d'utilisateur SQL et votre mot de passe SQL pour vous connecter à votre instance sur Linux
- Utilisez le cmdlet
Get-SqlInstancepour vous connecter àServeret afficher quelques propriétés.
Si vous le souhaitez, vous pouvez simplement remplacer la variable $serverInstance par l’adresse IP ou le nom d’hôte de votre instance.
# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential
# Connect to the Server and return a few properties
Get-SqlInstance -ServerInstance $serverInstance -Credential $credential
# done
PowerShell doit afficher des informations similaires à la sortie suivante :
Instance Name Version ProductLevel UpdateLevel HostPlatform HostDistribution
------------- ------- ------------ ----------- ------------ ----------------
your_server_instance 14.0.3048 RTM CU13 Linux Ubuntu
Note
Si rien ne s’affiche pour ces valeurs, la connexion à l’instance cible a probablement échoué. Assurez-vous que vous pouvez utiliser les mêmes informations de connexion pour vous connecter à partir de SQL Server Management Studio. Examinez ensuite les recommandations en matière de résolution des problèmes de connexion.
Utiliser le fournisseur SQL Server PowerShell
Une autre option pour se connecter à votre instance consiste à utiliser le Fournisseur SQL Server PowerShell. Ce fournisseur vous permet de naviguer dans l’instance comme si vous naviguiez dans l’arborescence dans l’Explorateur d’objets, mais a niveau de la cmdline. Par défaut, ce fournisseur est présenté sous la forme d’un PSDrive nommé SQLSERVER:\ que vous pouvez utiliser pour vous connecter & naviguer dans les instances SQL Server auxquelles votre compte de domaine a accès. Consultez Étapes de configuration pour plus d’informations sur le mode de configuration de l’authentification Active Directory pour SQL Server sur Linux.
Vous pouvez également utiliser l’authentification SQL avec le fournisseur SQL Server PowerShell. Pour ce faire, utilisez l’applet New-PSDrive de commande pour créer un PSDrive et fournir les informations d’identification appropriées pour vous connecter.
Dans l’exemple suivant, vous verrez un exemple de création d’un nouveau PSDrive à l’aide de l’authentification SQL.
# NOTE: We are reusing the values saved in the $credential variable from the above example.
New-PSDrive -Name SQLonDocker -PSProvider SqlServer -Root 'SQLSERVER:\SQL\localhost,10002\Default\' -Credential $credential
Vous pouvez vérifier que le lecteur a été créé en exécutant la cmdlet Get-PSDrive.
Get-PSDrive
Une fois que vous avez créé votre nouveau PSDrive, vous pouvez commencer à le parcourir.
dir SQLonDocker:\Databases
Voici à quoi peut ressembler le résultat. Vous remarquerez peut-être que cette sortie est similaire à ce que SQL Server Management Studio (SSMS) affiche sur le nœud Bases de données. Il affiche les bases de données utilisateur, mais pas les bases de données système.
Name Status Size Space Recovery Compat. Owner
Available Model Level
---- ------ ---- ---------- -------- ------- -----
AdventureWorks2022 Normal 209.63 MB 1.31 MB Simple 130 sa
AdventureWorksDW2022 Normal 167.00 MB 32.47 MB Simple 110 sa
AdventureWorksDW2022 Normal 188.00 MB 78.10 MB Simple 120 sa
AdventureWorksDW2022 Normal 172.00 MB 74.76 MB Simple 130 sa
AdventureWorksDW2022 Normal 208.00 MB 40.57 MB Simple 140 sa
Si vous avez besoin d’afficher toutes les bases de données sur votre instance, l’une des options consiste à utiliser la cmdlet Get-SqlDatabase.
Obtenir des bases de données
Une cmdlet importante à connaître est Get-SqlDatabase. Vous pouvez utiliser la cmdlet Get-SqlDatabase dans de nombreuses opérations impliquant une base de données ou des objets d’une base de données. Si vous fournissez des valeurs pour les paramètres -ServerInstance et -Database, un seul objet de base de données est récupéré. Cependant, si vous spécifiez uniquement le paramètre -ServerInstance, une liste complète de toutes les bases de données de cette instance est retournée.
# NOTE: We are reusing the values saved in the $credential variable from the above example.
# Connect to the Instance and retrieve all databases
Get-SqlDatabase -ServerInstance ServerB -Credential $credential
Voici un exemple de ce que retourne la commande Get-SqlDatabase :
Name Status Size Space Recovery Compat. Owner
Available Model Level
---- ------ ---- ---------- -------- ------- -----
AdventureWorks2022 Normal 209.63 MB 1.31 MB Simple 130 sa
AdventureWorksDW2022 Normal 167.00 MB 32.47 MB Simple 110 sa
AdventureWorksDW2022 Normal 188.00 MB 78.10 MB Simple 120 sa
AdventureWorksDW2022 Normal 172.00 MB 74.88 MB Simple 130 sa
AdventureWorksDW2022 Normal 208.00 MB 40.63 MB Simple 140 sa
master Normal 6.00 MB 600.00 KB Simple 140 sa
model Normal 16.00 MB 5.70 MB Full 140 sa
msdb Normal 15.50 MB 1.14 MB Simple 140 sa
tempdb Normal 16.00 MB 5.49 MB Simple 140 sa
Examiner les journaux d'erreurs SQL Server
Les étapes suivantes utilisent PowerShell pour examiner les journaux d’erreurs se connecter à votre instance SQL Server sur Linux.
Copiez et collez les commandes suivantes à l’invite de PowerShell. L’exécution peut prendre quelques minutes. Ces commandes effectuent les opérations suivantes :
- afficher une boîte de dialogue qui vous invite à entrer le nom d’hôte ou l’adresse IP de votre instance
- afficher la boîte de dialogue requête d’informations d’identification PowerShell, qui vous invite à entrer les informations d’identification. Vous pouvez utiliser votre nom d'utilisateur SQL et votre mot de passe SQL pour vous connecter à votre instance sur Linux
- Utilisez l’applet
Get-SqlErrorLogde commande pour vous connecter à l’instance SQL Server sur Linux et récupérer les journaux d’erreurs depuisYesterday
Si vous le souhaitez, vous pouvez remplacer la variable $serverInstance par l’adresse IP ou le nom d’hôte de votre instance.
# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential
# Retrieve error logs since yesterday
Get-SqlErrorLog -ServerInstance $serverInstance -Credential $credential -Since Yesterday
# done
Explorer les applets de commande actuellement disponibles dans PowerShell
Bien que le module SqlServer dispose actuellement de 109 applets de commande disponibles dans Windows PowerShell, seuls 62 des 109 sont disponibles dans PowerShell. Vous trouverez ci-dessous une liste complète des 62 applets de commande actuellement disponibles. Pour une documentation détaillée de tous les cmdlets du module SqlServer, voir la référence cmdlet SqlServer.
La commande suivante vous montre tous les cmdlets disponibles sur la version PowerShell que vous utilisez.
Get-Command -Module SqlServer -CommandType Cmdlet |
Sort-Object -Property Noun |
Select-Object Name
- ConvertFrom-EncodedSqlName
- ConvertTo-EncodedSqlName
- Get-SqlAgent
- Get-SqlAgentJob
- Get-SqlAgentJobHistory
- Get-SqlAgentJobSchedule
- Get-SqlAgentJobStep
- Get-SqlAgentSchedule
- Invoke-SqlAssessment
- Get-SqlAssessmentItem
- Remove-SqlAvailabilityDatabase
- Resume-SqlAvailabilityDatabase
- Add-SqlAvailabilityDatabase
- Suspend-SqlAvailabilityDatabase
- New-SqlAvailabilityGroup
- Set-SqlAvailabilityGroup
- Remove-SqlAvailabilityGroup
- Switch-SqlAvailabilityGroup
- Join-SqlAvailabilityGroup
- Revoke-SqlAvailabilityGroupCreateAnyDatabase
- Grant-SqlAvailabilityGroupCreateAnyDatabase
- New-SqlAvailabilityGroupListener
- Set-SqlAvailabilityGroupListener
- Add-SqlAvailabilityGroupListenerStaticIp
- Set-SqlAvailabilityReplica
- Remove-SqlAvailabilityReplica
- New-SqlAvailabilityReplica
- Set-SqlAvailabilityReplicaRoleToSecondary
- New-SqlBackupEncryptionOption
- Get-SqlBackupHistory
- Invoke-Sqlcmd
- New-SqlCngColumnMasterKeySettings
- Remove-SqlColumnEncryptionKey
- Get-SqlColumnEncryptionKey
- Remove-SqlColumnEncryptionKeyValue
- Add-SqlColumnEncryptionKeyValue
- Get-SqlColumnMasterKey
- Remove-SqlColumnMasterKey
- New-SqlColumnMasterKey
- Get-SqlCredential
- Set-SqlCredential
- New-SqlCredential
- Remove-SqlCredential
- New-SqlCspColumnMasterKeySettings
- Get-SqlDatabase
- Restore-SqlDatabase
- Backup-SqlDatabase
- Set-SqlErrorLog
- Get-SqlErrorLog
- New-SqlHADREndpoint
- Set-SqlHADREndpoint
- Get-SqlInstance
- Add-SqlLogin
- Remove-SqlLogin
- Get-SqlLogin
- Set-SqlSmartAdmin
- Get-SqlSmartAdmin
- Read-SqlTableData
- Write-SqlTableData
- Read-SqlViewData
- Read-SqlXEvent
- Convert-UrnToPath