Share via


Gerenciar a autenticação no SQL Server no PowerShell

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

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. É possível usar a Autenticação do SQL Server definindo uma unidade virtual do PowerShell ou especificando os parâmetros -Username e -Password para Invoke-Sqlcmd.

Observação

Há dois módulos do SQL Server PowerShell; SqlServer e SQLPS.

O módulo SqlServer é o módulo atual do PowerShell a ser usado.

O módulo SQLPS está incluído na instalação do SQL Server (para compatibilidade com versões anteriores), mas não está mais sendo atualizado.

O módulo do SqlServer contém versões atualizadas dos cmdlets no SQLPS e inclui novos cmdlets para dar suporte aos recursos mais recentes do SQL.

Instale o módulo SqlServer da Galeria do PowerShell.

Para obter mais informações, confira SQL Server PowerShell.

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, associe as credenciais de logon do SQL Server a uma unidade virtual e use o comando de alterar diretório (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. Use read-host para solicitar a senha ao usuário.

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

    4. Use 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. Então, sempre que você usar o comando de diretório de alteração (cd) para se conectar a um caminho usando o nome de unidade virtual, todas as operações serão executadas usando as credenciais de logon de 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
  
## Set-Location to the virtual drive, which invokes the supplied authentication credentials.  
sl 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