Partilhar via


Como conectar-se usando a autenticação do SQL Server

Baixar driver PHP

Os Drivers da Microsoft para PHP para SQL Server oferecem suporte à Autenticação do SQL Server quando você se conecta ao SQL Server.

A Autenticação do SQL Server deve ser usada somente quando a Autenticação do Windows não for possível. Para obter informações sobre como se conectar com a Autenticação do Windows, consulte Como conectar-se usando a Autenticação do Windows.

Os seguintes pontos devem ser considerados quando você usa a Autenticação do SQL Server para se conectar ao SQL Server:

  • A Autenticação de Modo Misto do SQL Server deve ser habilitada no servidor.

  • O ID de usuário e a senha (atributos de conexão UID e PWD no driver SQLSRV) devem ser definidos quando você tenta estabelecer uma conexão. O ID de utilizador e a palavra-passe devem corresponder a um utilizador e uma palavra-passe válidos do SQL Server.

Observação

As senhas que contêm uma chave de fechamento (}) devem ser escapadas com uma segunda chave de fechamento. Por exemplo, se a senha do SQL Server for "pass}word", o valor do atributo de conexão PWD deverá ser definido como "pass}}word".

As seguintes precauções devem ser tomadas quando você usa a Autenticação do SQL Server para se conectar ao SQL Server:

  • Proteja (criptografe) as credenciais passadas pela rede do servidor Web para o banco de dados. As credenciais são criptografadas por padrão a partir do SQL Server 2005. Para maior segurança, defina o atributo de conexão Encrypt como "on" para criptografar todos os dados enviados ao servidor.

Observação

Definir o atributo de conexão Encrypt como "on" pode causar um desempenho mais lento porque a criptografia de dados pode ser computacionalmente intensiva.

  • Não inclua valores para os atributos de conexão UID e PWD em texto simples em scripts PHP. Esses valores devem ser armazenados em um diretório específico do aplicativo com as permissões restritas apropriadas.

  • Evite o uso da conta sa . Mapeie o aplicativo para um usuário de banco de dados que tenha os privilégios desejados e use uma senha forte.

Observação

Atributos de conexão, além de ID de usuário e senha, podem ser definidos quando você estabelece uma conexão. Para obter uma lista completa dos atributos de conexão suportados, consulte Opções de conexão.

Exemplo de SQLSRV

O exemplo a seguir usa o driver SQLSRV com Autenticação do SQL Server para se conectar a uma instância local do SQL Server. Os valores para os atributos de conexão UID e PWD necessários são obtidos de arquivos de texto específicos do aplicativo, uid.txt e pwd.txt, no diretório C:\AppData . Depois que a conexão for estabelecida, o servidor será consultado para verificar o login do usuário.

O exemplo pressupõe que o SQL Server e o banco de dados AdventureWorks estejam instalados no computador local. Toda a saída é gravada no navegador quando o exemplo é executado a partir do navegador.

<?php  
/* Specify the server and connection string attributes. */  
$serverName = "(local)";  
  
/* Get UID and PWD from application-specific files.  */  
$uid = file_get_contents("C:\AppData\uid.txt");  
$pwd = file_get_contents("C:\AppData\pwd.txt");  
$connectionInfo = array( "UID"=>$uid,  
                         "PWD"=>$pwd,  
                         "Database"=>"AdventureWorks");  
  
/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  
if( $conn === false )  
{  
     echo "Unable to connect.</br>";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Query SQL Server for the login of the user accessing the  
database. */  
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";  
$stmt = sqlsrv_query( $conn, $tsql);  
if( $stmt === false )  
{  
     echo "Error in executing query.</br>";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve and display the results of the query. */  
$row = sqlsrv_fetch_array($stmt);  
echo "User login: ".$row[0]."</br>";  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

PDO_SQLSRV exemplo

Este exemplo usa o driver PDO_SQLSRV para demonstrar como se conectar com a Autenticação do SQL Server.

<?php  
   $serverName = "(local)";   
   $database = "AdventureWorks";  
  
   // Get UID and PWD from application-specific files.   
   $uid = file_get_contents("C:\AppData\uid.txt");  
   $pwd = file_get_contents("C:\AppData\pwd.txt");  
  
   try {  
      $conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);   
      $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   
   }  
  
   catch( PDOException $e ) {  
      die( "Error connecting to SQL Server" );   
   }  
  
   echo "Connected to SQL Server\n";  
  
   $query = 'select * from Person.ContactType';   
   $stmt = $conn->query( $query );   
   while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){   
      print_r( $row );   
   }  
  
   // Free statement and connection resources.   
   $stmt = null;   
   $conn = null;   
?>  

Ver também

Como conectar-se usando a autenticação do SQL Server

Guia de programação para os drivers da Microsoft para PHP para SQL Server

Sobre Exemplos de Código na Documentação

SUSER_SNAME (Transact-SQL)

Como criar um logon do SQL Server

Como: Criar um usuário de banco de dados

Gerenciando usuários, funções e logons

User-Schema Separação

Conceder permissões de objeto (Transact-SQL)