Compartir a través de


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.

  1. Antes de comenzar:Permisos

  2. Para establecer la autenticación con:Una unidad virtual, 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 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

  1. Crear una función que:

    1. 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.

    2. Usa read-host para solicitar la contraseña al usuario.

    3. Usa new-object para crear un objeto de credenciales.

    4. Usa new-psdrive para crear una unidad virtual con las credenciales proporcionadas.

  2. 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 cambiar directorio (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 que proporcionó 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

  1. 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