Partilhar via


Gerenciar a autenticação no PowerShell do Mecanismo de Banco de Dados

Por padrão, os componentes do SQL Server PowerShell usam a Autenticação do Windows ao se conectar a uma instância do Mecanismo de Banco de Dados. Você pode usar a Autenticação do SQL Server, definindo uma unidade virtual do PowerShell ou especificando os parâmetros -Username e -Password para Invoke-Sqlcmd.

  1. Antes de começar: Permissões

  2. Para definir a autenticação, usando: Uma unidade virtual, Invoke-Sqlcmd

Permissões

Todas as ações que você pode executar em uma instância do Mecanismo de Banco de Dados são controladas pelas permissões concedidas às credenciais de autenticação usadas na conexão à instância. Por padrão, o provedor do SQL Server e cmdlets usam a conta do Windows na qual ele está sendo executado para estabelecer uma conexão de Autenticação do Windows com o Mecanismo de Banco de Dados.

Para fazer uma conexão de Autenticação do SQL Server, forneça uma ID de logon e uma senha de Autenticação do SQL Server. Ao usar o provedor do SQL Server, você deve associar as credenciais de logon do SQL Server a uma unidade virtual e, em seguida, usar o comando change directory (cd) para se conectar a essa unidade. No Windows PowerShell, credenciais de segurança só podem ser associadas a unidades virtuais.

Autenticação do SQL Server usando uma unidade virtual

Para criar uma unidade virtual associada com um logon de Autenticação do SQL Server

  1. Crie uma função que:

    1. Tenha parâmetros para o nome a ser atribuído à unidade virtual, a ID de logon e o caminho de provedor para associar com a unidade virtual.

    2. Usa read-host para solicitar a senha do usuário.

    3. Usa new-object para criar um objeto de credenciais.

    4. Usa new-psdrive para criar uma unidade virtual com as credenciais fornecidas.

  2. Chame a função para criar uma unidade virtual com as credenciais fornecidas.

Exemplo (Unidade Virtual)

Esse exemplo cria uma função denominada sqldrive que você pode usar para criar uma unidade virtual que é associada ao logon de Autenticação e à instância especificados do SQL Server.

A função sqldrive solicita que você insira a senha para seu logon, mascarando a senha à medida que a digita. Em seguida, sempre que você usar o comando change directory (cd) para se conectar a um caminho usando o nome da unidade virtual, todas as operações serão executadas usando as credenciais de logon da Autenticação do SQL Server que você forneceu ao criar a unidade.

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

Autenticação de SQL Server usando Invoke-Sqlcmd

Para usar Invoke-Sqlcmd com a Autenticação do SQL Server

  1. Use o parâmetro -Username para especificar uma ID de logon e o parâmetro -Password para especificar a senha associada.

Exemplo (Invoke-Sqlcmd)

Este exemplo usa o cmdlet do host de leitura para solicitar ao usuário uma senha e, depois, conecta usando a Autenticação do 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 Também

SQL Server PowerShell
Provedor do SQL Server PowerShell
cmdlet Invoke-Sqlcmd