Gérer l’authentification pour SQL Server dans PowerShell

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Par défaut, les composants de SQL Server PowerShell utilisent l’authentification Windows lors de la connexion à une instance du moteur de base de données. Vous pouvez utiliser l’authentification SQL Server en définissant une unité virtuelle PowerShell ou en spécifiant les paramètres -Username et -Password pour Invoke-Sqlcmd.

Notes

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.

Installez le module SqlServer à partir de PowerShell Gallery.

Pour plus d’informations, consultez SQL Server PowerShell.

Autorisations

Toutes les actions que vous pouvez effectuer dans une instance du moteur de base de données sont contrôlées par les autorisations accordées aux informations d'identification utilisées pour la connexion à l'instance. Par défaut, le fournisseur et les applets de commande SQL Server utilisent le compte Windows sous lequel ils s'exécutent pour établir une connexion via l'authentification Windows au moteur de base de données.

Pour établir une connexion via l'authentification SQL Server, vous devez fournir un ID de connexion et un mot de passe d'authentification SQL Server. Quand vous utilisez le fournisseur SQL Server, vous devez associer les informations d’identification de connexion SQL Server à un lecteur virtuel, puis exécuter la commande de changement de répertoire (cd) pour passer à ce lecteur. Dans Windows PowerShell, les informations d'identification de sécurité peuvent être associées uniquement à des lecteurs virtuels.

Authentification SQL Server avec un lecteur virtuel

Pour créer un lecteur virtuel associé à une connexion via l'authentification SQL Server

  1. Créez une fonction qui :

    1. Possède des paramètres pour le nom indiquant le lecteur virtuel, l'ID de connexion et le chemin d'accès du fournisseur à associer au lecteur virtuel.

    2. Utilise read-host pour inviter l’utilisateur à fournir le mot de passe.

    3. Utilise new-object pour créer un objet d’informations d’identification.

    4. Utilise new-psdrive pour créer un lecteur virtuel avec les informations d’identification fournies.

  2. Appelez la fonction pour créer un lecteur virtuel avec les informations d'identification fournies.

Exemple (lecteur virtuel)

Cet exemple crée une fonction nommée sqldrive que vous pouvez utiliser pour créer un lecteur virtuel associé à la connexion via l'authentification SQL Server et à l'instance spécifiées.

La fonction sqldrive vous invite à entrer le mot de passe de votre connexion, en masquant celui-ci à mesure que vous le tapez. Ensuite, chaque fois que vous exécutez la commande de changement de répertoire (cd) pour vous connecter à un chemin via le nom de lecteur virtuel, toutes les opérations sont effectuées en utilisant les informations d’identification de connexion de l’authentification SQL Server que vous avez fournies lors de la création du lecteur.

## Create a function that specifies the login and prompts for the password.  
  
function sqldrive  
{  
    param( [string]$name, [string]$login = "MyLogin", [string]$root = "SQLSERVER:\SQL\MyComputer\MyInstance" )  
    $pwd = read-host -AsSecureString -Prompt "Password"  
    $cred = new-object System.Management.Automation.PSCredential -argumentlist $login,$pwd  
    New-PSDrive $name -PSProvider SqlServer -Root $root -Credential $cred -Scope 1  
}  
  
## Use the sqldrive function to create a SQLAuth virtual drive.  
sqldrive SQLAuth
  
## Set-Location to the virtual drive, which invokes the supplied authentication credentials.  
sl SQLAuth:

Authentification SQL Server avec Invoke-Sqlcmd

Pour utiliser Invoke-Sqlcmd avec l'authentification SQL Server

  1. Utilisez le paramètre -Username pour spécifier un ID de connexion, et le paramètre -Password pour spécifier le mot de passe associé.

Exemple (Invoke-Sqlcmd)

Cet exemple utilise l'applet de commande read-host pour inviter l'utilisateur à entrer un mot de passe, puis se connecte via l'authentification SQL Server.

## Prompt the user for their password.  
$pwd = read-host -AsSecureString -Prompt "Password"  
  
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance" -Username "MyLogin" -Password $pwd  

Voir aussi