Gerenciar a autenticação no Mecanismo de Banco de Dados com o PowerShell
Por padrão, os componentes do SQL Server PowerShell usam a Autenticação do Windows ao 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.
Antes de começar: Permissões
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, associe as credenciais de logon do SQL Server a uma unidade virtual e use o comando de alterar diretório (cd) para conectar-se a essa unidade. No Windows PowerShell, credenciais de segurança só podem ser associadas a unidades virtuais.
[Início]
Autenticação do SQL Server usando uma unidade virtual
Para criar uma unidade virtual associada com um logon de Autenticação do SQL Server
Crie uma função que:
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.
Usa read-host para solicitar a senha do usuário.
Usa new-object para criar um objeto de credenciais.
Usa new-psdrive para criar uma unidade virtual com as credenciais fornecidas.
Chame a função para criar uma unidade virtual com as credenciais fornecidas.
[Início]
Exemplo (Unidade Virtual)
Este 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ê usa o comando de diretório de alteração (cd) para conectar a um caminho usando o nome de unidade virtual, todas as operações sã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
## CD to the virtual drive, which invokes the supplied authentication credentials.
cd SQLAuth
[Início]
Autenticação de SQL Server usando Invoke-Sqlcmd
Para usar Invoke-Sqlcmd com a Autenticação do SQL Server
- 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
[Início]