Partager via


Utiliser PowerShell sur Linux pour gérer SQL Server sur Linux

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 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-SqlInstance pour vous connecter à Server et 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-SqlErrorLog de commande pour vous connecter à l’instance SQL Server sur Linux et récupérer les journaux d’erreurs depuis Yesterday

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