Gestire l'autenticazione in motore di database PowerShellManage Authentication in Database Engine PowerShell

Per impostazione predefinita, i componenti PowerShell di SQL ServerSQL Server utilizzano l'autenticazione di Windows in caso di connessione a un'istanza del Motore di databaseDatabase Engine.By default, the SQL ServerSQL Server PowerShell components use Windows Authentication when connecting to an instance of the Motore di databaseDatabase Engine. È possibile usare l'autenticazione di SQL Server definendo un'unità virtuale PowerShell o specificando i parametri –Username e –Password per Invoke-Sqlcmd.You can use SQL Server Authentication by either defining a PowerShell virtual drive, or by specifying the –Username and –Password parameters for Invoke-Sqlcmd.

  1. Before you begin: PermissionsBefore you begin: Permissions

  2. To set authentication, using: A Virtual Drive, Invoke-SqlcmdTo set authentication, using: A Virtual Drive, Invoke-Sqlcmd

Autorizzazioni Permissions

Tutte le azioni eseguibili in un'istanza del Motore di databaseDatabase Engine vengono controllate dalle autorizzazioni concesse alle credenziali di autenticazione utilizzate per connettersi all'istanza.All actions you can perform in an instance of the Motore di databaseDatabase Engine are controlled by the permissions granted to the authentication credentials used to connect to the instance. Per impostazione predefinita, il provider e i cmdlet di SQL ServerSQL Server utilizzano l'account di Windows in esecuzione per eseguire una connessione con autenticazione di Windows al Motore di databaseDatabase Engine.By default, the SQL ServerSQL Server provider and cmdlets use the Windows account under which it is running to make a Windows Authentication connection to the Motore di databaseDatabase Engine.

Per effettuare una connessione con autenticazione di SQL ServerSQL Server è necessario fornire un ID di accesso per l'autenticazione di SQL Server e una password.To make a SQL ServerSQL Server Authentication connection you must supply a SQL Server Authentication login ID and password. Se si usa il provider di SQL ServerSQL Server , è necessario associare le credenziali di accesso di SQL ServerSQL Server a un'unità virtuale e quindi usare il comando di modifica della directory (cd) per stabilire la connessione a tale unità.When using the SQL ServerSQL Server provider, you must associate the SQL ServerSQL Server login credentials with a virtual drive, and then use the change directory command (cd) to connect to that drive. In Windows PowerShell le credenziali di sicurezza possono essere associate solo a unità virtuali.In Windows PowerShell, security credentials can only be associated with virtual drives.

Autenticazione di SQL Server tramite un'unità virtuale SQL Server Authentication Using a Virtual Drive

Per creare un'unità virtuale associata a un accesso di autenticazione di SQL ServerTo create a virtual drive associated with a SQL Server Authentication login

  1. Creare una funzione che:Create a function that:

    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.Has parameters for the name to give the virtual drive, the login ID, and the provider path to associate with the virtual drive.

    2. Usi read-host per richiedere all'utente la password.Uses read-host to prompt the user for the password.

    3. Usi new-object per creare un oggetto credenziali.Uses new-object to create a credentials object.

    4. Usi new-psdrive per creare un'unità virtuale con le credenziali fornite.Uses new-psdrive to create a virtual drive with the supplied credentials.

  2. Richiamare la funzione per creare un'unità virtuale con le credenziali fornite.Invoke the function to create a virtual drive with the supplied credentials.

Esempio (unità virtuale)Example (Virtual Drive)

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 ServerSQL Server e all'istanza specificati.This example creates a function named sqldrive that you can use to create a virtual drive that is associated with the specified SQL ServerSQL Server Authentication login and instance.

La funzione sqldrive richiede di immettere la password per effettuare l'accesso, mascherandola durante la digitazione.The sqldrive function prompts you to enter the password for your login, masking the password as you type it in. Quando si usa il comando di modifica della directory (cd) per connettersi a un percorso usando il nome di unità virtuale, tutte le operazioni vengono eseguite usando le credenziali di accesso con autenticazione di SQL ServerSQL Server fornite al momento della creazione dell'unità.Then, whenever you use the change directory command (cd) to connect to a path by using the virtual drive name, all operations are performed by using the SQL ServerSQL Server Authentication login credentials that you supplied when you created the drive.

## 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 SQL Server Authentication Using Invoke-Sqlcmd

Per utilizzare Invoke-Sqlcmd con l'autenticazione di SQL ServerTo use Invoke-Sqlcmd with SQL Server Authentication

  1. Utilizzare il parametro –Username per specificare un ID di accesso e il parametro –Password per specificare la password associata.Use the –Username parameter to specify a login ID, and the –Password parameter to specify the associated password.

Esempio (Invoke-Sqlcmd)Example (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.This example uses the read-host cmdlet to prompt the user for a password, and then connects using SQL Server Authentication.

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

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