Gestire l'autenticazione nel 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
.
Prima di iniziare: Autorizzazioni
Per impostare l'autenticazione tramite: A Virtual Drive, 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 SQL Server, è necessario associare le credenziali di accesso di 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
Creare una funzione che:
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.
Utilizzare
read-host
per richiedere l'utente la password.Utilizzare
new-object
per creare un oggetto delle credenziali.Utilizzare
new-psdrive
per creare un'unità virtuale con le credenziali fornite.
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. Quindi, 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 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
Autenticazione di SQL Server tramite Invoke-Sqlcmd
Per utilizzare Invoke-Sqlcmd con l'autenticazione di SQL Server
- 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
Vedi anche
SQL Server PowerShell
Provider PowerShell per SQL Server
Cmdlet Invoke-Sqlcmd