Condividi tramite


Gestire l'autenticazione in motore di database PowerShell

Per impostazione predefinita, i componenti PowerShell di SQL Server utilizzano l'autenticazione di Windows in caso di connessione a un'istanza del Motore di database. È possibile utilizzare l'autenticazione di SQL Server definendo un'unità virtuale PowerShell o specificando i parametri –Username e –Password per Invoke-Sqlcmd.

  1. Prima di iniziare: Autorizzazioni

  2. Per impostare l'autenticazione, utilizzando: un'unità virtuale, Invoke-Sqlcmd

Autorizzazioni

Tutte le azioni eseguibili in un'istanza del Motore di database vengono controllate dalle autorizzazioni concesse alle credenziali di autenticazione utilizzate per connettersi all'istanza. Per impostazione predefinita, il provider e i cmdlet di SQL Server utilizzano l'account di Windows in esecuzione per eseguire una connessione con autenticazione di Windows al Motore di database.

Per effettuare una connessione con autenticazione di SQL Server è necessario fornire un ID di accesso per l'autenticazione di SQL Server e una password. Se si utilizza il provider di SQL Server, è necessario associare le credenziali di accesso di SQL Server a un'unità virtuale e quindi utilizzare il comando di modifica della directory (cd) per stabilire la connessione a tale unità. In Windows PowerShell le credenziali di sicurezza possono essere associate solo a unità virtuali.

[Torna all'inizio]

Autenticazione di SQL Server tramite un'unità virtuale

Per creare un'unità virtuale associata a un accesso di autenticazione di SQL Server

  1. Creare una funzione che:

    1. Disponga di parametri per il nome da assegnare all'unità virtuale, l'ID di accesso e il percorso del provider da associare all'unità virtuale.

    2. Utilizzare read-host per richiedere l'utente la password.

    3. Utilizzare new-object per creare un oggetto delle credenziali.

    4. Utilizzare new-psdrive per creare un'unità virtuale con le credenziali fornite.

  2. Richiamare la funzione per creare un'unità virtuale con le credenziali fornite.

[Torna all'inizio]

Esempio (unità virtuale)

In questo esempio viene creata una funzione denominata sqldrive che può essere utilizzata per creare un'unità virtuale associata all'account di accesso con autenticazione di SQL Server e all'istanza specificati.

La funzione sqldrive richiede di immettere la password per effettuare l'accesso, mascherandola durante la digitazione. Pertanto, quando si utilizza il comando di modifica della directory (cd) per connettersi a un percorso tramite il nome di unità virtuale, tutte le operazioni vengono eseguite tramite le credenziali di accesso con autenticazione di SQL Server fornite al momento della creazione dell'unità.

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

[Torna all'inizio]

Autenticazione di SQL Server tramite Invoke-Sqlcmd

Per utilizzare Invoke-Sqlcmd con l'autenticazione di SQL Server

  1. Utilizzare il parametro –Username per specificare un ID di accesso e il parametro –Password per specificare la password associata.

Esempio (Invoke-Sqlcmd)

In questo esempio viene utilizzato l'host della lettura cmdlet per la richiesta di una password all'utente, quindi viene stabilita la connessione tramite l'autenticazione di 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

[Torna all'inizio]

Vedere anche

Concetti

SQL Server PowerShell

Provider PowerShell per SQL Server

Cmdlet Invoke-Sqlcmd