Compartir a través de


Administrar la autenticación en PowerShell del motor de base de datos

De forma predeterminada, los componentes PowerShell de SQL Server usan la autenticación de Windows para conectarse a una instancia de 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 empezar: Permisos

  2. Para establecer la autenticación, mediante: Una unidad virtual, Invoque-Sqlcmd

Permisos

Todas las acciones que se pueden realizar en una instancia de Motor de base de datos se controlan mediante los permisos concedidos a las credenciales de autenticación usadas para conectarse a la instancia. De forma predeterminada, el proveedor y los cmdlets de SQL Server usa la cuenta de Windows de ejecución para establecer una conexión de autenticación de Windows con 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 contraseña de autenticación de SQL Server. Al usar el proveedor 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 de cambio de directorio (cd) para conectarse a esa unidad de disco. En Windows PowerShell, las credenciales de seguridad solo se pueden asociar con unidades virtuales.

[Arriba]

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.

[Arriba]

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. Entonces, siempre que use el comando de cambio de directorio (cd) para conectar a una ruta de acceso usando el nombre de la unidad virtual, todas las operaciones se realizan usando las credenciales de inicio de sesión de Autenticación SQL Server que usted 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

[Arriba]

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

[Arriba]

Vea también

Conceptos

SQL Server PowerShell

Proveedor de PowerShell de SQL Server

cmdlet Invoke-Sqlcmd