Freigeben über


Verwalten der Authentifizierung in PowerShell der Datenbank-Engine

Standardmäßig verwenden die SQL Server PowerShell-Komponenten die Windows-Authentifizierung, wenn sie sich mit einer Instanz der Datenbank-Engine verbinden. Sie können die SQL Server-Authentifizierung verwenden, indem Sie entweder ein virtuelles PowerShell-Laufwerk definieren oder für -Username die Parameter -Password und Invoke-Sqlcmd angeben.

  1. Bevor Sie beginnen:Berechtigungen

  2. So legen Sie die Authentifizierung mithilfe von:A Virtual Drive, Invoke-Sqlcmd fest

Berechtigungen

Alle Aktionen, die Sie in einer Instanz der Datenbank-Engine durchführen können, werden durch die Berechtigungen gesteuert, die den für die Verbindung mit der Instanz verwendeten Authentifizierungsdaten gewährt werden. Standardmäßig verwenden der SQL Server-Anbieter und die Cmdlets das Windows-Konto, unter dem er ausgeführt wird, um eine Windows-Authentifizierungsverbindung mit der Datenbank-Engine herzustellen.

Um eine SQL Server-Authentifizierungsverbindung herzustellen, müssen Sie eine Anmelde-ID und ein Passwort für die SQL Server-Authentifizierung angeben. Bei Verwendung des SQL Server-Anbieters müssen Sie die SQL Server-Anmeldeinformationen einem virtuellen Laufwerk zuordnen und dann den Befehl "Verzeichnis ändern" (cd) verwenden, um eine Verbindung mit diesem Laufwerk herzustellen. In Windows PowerShell können Sicherheitsanmeldeinformationen nur virtuellen Laufwerken zugeordnet werden.

SQL Server-Authentifizierung mit einem virtuellen Laufwerk

So erstellen Sie ein virtuelles Laufwerk mit Zuordnung zu einer SQL Server-Authentifizierungsanmeldung

  1. Erstellen Sie eine Funktion, auf die Folgendes zutrifft:

    1. Sie verfügt über Parameter für den Namen, der dem virtuellen Laufwerk zugeordnet werden soll, für die Anmelde-ID und für den Anbieterpfad, der dem virtuellen Laufwerk zugeordnet werden soll.

    2. Sie verwendet read-host, um den Benutzer zur Eingabe des Kennworts aufzufordern.

    3. Sie verwendet new-object, um ein Anmeldeinformationenobjekt zu erstellen.

    4. Sie verwendet new-psdrive, um ein virtuelles Laufwerk mit den angegebenen Anmeldeinformationen zu erstellen.

  2. Rufen Sie die Funktion auf, um ein virtuelles Laufwerk mit den angegebenen Anmeldeinformationen zu erstellen.

Beispiel (virtuelles Laufwerk)

In diesem Beispiel wird eine Funktion namens sqldrive erstellt, mit der Sie ein virtuelles Laufwerk erstellen können, das mit der angegebenen Anmeldung und Instanz der SQL Server-Authentifizierung verknüpft ist.

Sie werden von der Funktion sqldrive zur Eingabe des Kennworts für Ihren Anmeldenamen aufgefordert. Das Kennwort wird bei der Eingabe maskiert. Wenn Sie dann den Änderungsverzeichnisbefehl (cd) zum Herstellen einer Verbindung mit einem Pfad mithilfe des Virtuellen Laufwerknamens verwenden, werden alle Vorgänge mithilfe der SQL Server-Authentifizierungsanmeldeinformationen ausgeführt, die Sie beim Erstellen des Laufwerks angegeben haben.

## 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  

SQL Server-Authentifizierung mit Invoke-Sqlcmd

So verwenden Sie Invoke-Sqlcmd mit der SQL Server-Authentifizierung

  1. Verwenden Sie den -Username-Parameter, um eine Anmelde-ID anzugeben, und den -Password-Parameter, um das zugeordnete Kennwort anzugeben.

Beispiel (Invoke-Sqlcmd)

In diesem Beispiel wird das "read-host"-Cmdlet verwendet, um den Benutzer zur Eingabe des Kennworts aufzufordern, und dann unter Verwendung der SQL Server-Authentifizierung eine Verbindung hergestellt.

## 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  

Weitere Informationen

SQL Server-PowerShell
SQL Server PowerShell-Anbieter
Invoke-Sqlcmd-Cmdlet