Condividi tramite


Gestire l'autenticazione in motore di database PowerShell

Per impostazione predefinita, i componenti di SQL Server PowerShell usano l'autenticazione di Windows per connettersi 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 usandoun'unità virtuale, Invoke-Sqlcmd

Autorizzazioni

Tutte le azioni che possono essere eseguite in un'istanza del motore di database sono controllate dalle autorizzazioni concesse alle credenziali di autenticazione usate per connettersi all'istanza. Per impostazione predefinita, il provider e i cmdlet di SQL Server usano l'account di Windows in esecuzione per stabilire 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. Quando si usa il provider di SQL Server, è necessario associare le credenziali di accesso SQL Server a un'unità virtuale e quindi usare il comando change directory (cd) per connettersi a tale unità. In Windows PowerShell le credenziali di sicurezza possono essere associate solo a unità virtuali.

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.

Esempio (unità virtuale)

Questo esempio crea una funzione denominata sqldrive che può essere usata 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. Ogni volta che si usa il comando change directory (cd) per connettersi a un percorso usando il nome dell'unità virtuale, tutte le operazioni vengono eseguite usando le credenziali di accesso di autenticazione 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  

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  

Vedere anche

SQL Server PowerShell
Provider PowerShell per SQL Server
Cmdlet Invoke-Sqlcmd