Gérer l'authentification dans le moteur de base de données PowerShell

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 un lecteur virtuel PowerShell ou en spécifiant les paramètres –Username et –Password pour Invoke-Sqlcmd.

  1. Avant de commencer : Autorisations

  2. Pour définir l'authentification en utilisant : Un lecteur virtuel, Invoke-Sqlcmd

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. Lorsque 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.

[Haut de la page]

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.

[Haut de la page]

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 d'accès via le lecteur SQLAuth:, toutes les opérations sont effectuées en utilisant les informations d'identification de la connexion via 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

## CD to the virtual drive, which invokes the supplied authentication credentials.
cd SQLAuth

[Haut de la page]

Authentification SQL Server avec Invoke-Sqlcmd

Pour utiliser Invoke-Sqlcmd avec l'authentification SQL Server

  1. Utilisez le paramètre de –Username pour spécifier un ID de connexion, et le paramètre de –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

[Haut de la page]

Voir aussi

Concepts

SQL Server PowerShell

Fournisseur PowerShell SQL Server

Invoke-Sqlcmd (applet de commande)