Verwalten der Authentifizierung bei SQL Server in PowerShell

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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 die Parameter -Username und -Password für Invoke-Sqlcmd angeben.

Hinweis

Es gibt zwei SQL Server PowerShell-Module: SqlServer und SQLPS.

Das SqlServer-Modul ist das zu verwendende aktuelle PowerShell-Modul.

Das SQLPS-Modul ist zwar in der SQL Server-Installation (für die Abwärtskompatibilität) enthalten, wird jedoch nicht mehr aktualisiert.

Das SqlServer-Modul enthält aktualisierte Versionen der Cmdlets in SQLPS sowie neue Cmdlets zur Unterstützung der neuesten SQL-Funktionen.

Installieren Sie das SqlServer-Modul aus dem PowerShell-Katalog.

Weitere Informationen finden Sie unter SQL Server-PowerShell.

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. Wenn Sie den SQL Server-Anbieter verwenden, müssen Sie die Anmeldedaten für den SQL Server mit einem virtuellen Laufwerk verknüpfen und dann den Befehl Verzeichnis ändern (cd) verwenden, um eine Verbindung zu 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 Anmeldeinformationsobjekt 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 Befehl Verzeichnis ändern (cd) verwenden, um sich über den Namen des virtuellen Laufwerks mit einem Pfad zu verbinden, werden alle Operationen unter Verwendung der Anmeldedaten für die SQL Server-Authentifizierung durchgeführt, die Sie bei der Erstellung 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
  
## Set-Location to the virtual drive, which invokes the supplied authentication credentials.  
sl SQLAuth:

SQL Server-Authentifizierung mit Invoke-Sqlcmd

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

  1. Verwenden Sie den Parameter -Username, um eine Anmelde-ID anzugeben, und den Parameter -Password, 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