Administrar la autenticación en PowerShell del motor de base de datos
De manera predeterminada, los componentes de SQL Server PowerShell usan la autenticación de Windows al conectarse a una instancia del Motor de base de datos. Puede usar la autenticación de SQL Server definiendo una unidad virtual de PowerShell o especificando los parámetros de -Username
y de -Password
para Invoke-Sqlcmd
.
Antes de comenzar: Permisos
Para establecer la autenticación, using: A Virtual Drive, Invoke-Sqlcmd
Permisos
Todas las acciones que se pueden realizar en una instancia del Motor de base de datos se controlan mediante los permisos concedidos a las credenciales de autenticación usadas para conectarse a la instancia. De manera predeterminada, el proveedor y los cmdlets de SQL Server usan la cuenta de Windows de ejecución para establecer una conexión de autenticación de Windows con el Motor de base de datos.
Para establecer una conexión de autenticación de SQL Server, debe proporcionar un identificador de inicio de sesión y una contraseña de autenticación de SQL Server. Al usar el proveedor de SQL Server, debe asociar las credenciales de inicio de sesión de SQL Server a una unidad virtual y, a continuación, usar el comando cambiar directorio (cd
) para conectarse a esa unidad. En Windows PowerShell, las credenciales de seguridad solo se pueden asociar con unidades virtuales.
Autenticación de SQL Server mediante una unidad virtual
Para crear una unidad virtual asociada con el inicio de sesión de autenticación de SQL Server
Crear una función que:
Tiene parámetros para que el nombre proporcione la unidad virtual, el identificador de inicio de sesión y la ruta de acceso del proveedor para asociarla a la unidad virtual.
Usa
read-host
para solicitar la contraseña al usuario.Usa
new-object
para crear un objeto de credenciales.Usa
new-psdrive
para crear una unidad virtual con las credenciales proporcionadas.
Invocar la función para crear una unidad virtual con las credenciales proporcionadas.
Ejemplo (unidad virtual)
En este ejemplo se crea una función denominada sqldrive que se puede usar para crear una unidad virtual asociada a la instancia e inicio de sesión de la autenticación de SQL Server especificados.
La función sqldrive pide que especifique la contraseña para su inicio de sesión, enmascarándola a medida que la escribe. A continuación, siempre que use el comando change directory (cd
) para conectarse a una ruta de acceso mediante el nombre de la unidad virtual, todas las operaciones se realizan mediante las credenciales de inicio de sesión de autenticación de SQL Server proporcionadas al crear la unidad.
## 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
Autenticación de SQL Server mediante Invoke-Sqlcmd
Para usar Invoke-Sqlcmd con la autenticación de SQL Server
- Use el parámetro de
-Username
para especificar un identificador de inicio de sesión y el parámetro de-Password
para especificar la contraseña asociada.
Ejemplo (Invoke-Sqlcmd)
En este ejemplo se usa el cmdlet read-host para pedir al usuario una contraseña, y después se conecta con la autenticación de 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
Consulte también
SQL Server PowerShell
Proveedor de SQL Server PowerShell Provider
Cmdlet Invoke-Sqlcmd