Como fazer: Conectar usando a Autenticação do SQL Server

Baixar o driver PHP

O Drivers da Microsoft para PHP para SQL Server oferece 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 a conexão com a Autenticação do Windows, confira Como: conectar-se usando a Autenticação do Windows.

Os seguintes pontos devem ser considerados ao usar a Autenticação do SQL Server para se conectar ao SQL Server:

  • A Autenticação de modo misto do SQL Server deve estar habilitada no servidor.

  • A ID de usuário e a senha (atributos de conexão UID e PWD no driver SQLSRV) precisam ser definidas quando você tentar estabelecer uma conexão. A ID de usuário e a senha devem mapear para um usuário e uma senha válidos do SQL Server.

Observação

Em senhas contendo uma chave de fechamento (}), uma segunda chave de fechamento deverá ser incluída. Por exemplo, se a senha do SQL Server for "pass} word", o valor do atributo de conexão PWD deve ser definido como "pass}} word".

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

  • Proteger (criptografar) as credenciais passadas pela rede do servidor Web para o banco de dados. As credenciais são criptografadas por padrão desde o 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

Quando você define o atributo de conexão Encrypt como "on", pode haver diminuição do desempenho, pois a criptografia de dados pode demandar um uso intensivo dos recursos computacionais.

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

  • Evite usar a conta sa . Mapeie o aplicativo para um usuário de banco de dados com os privilégios desejados e use uma senha forte.

Observação

Os atributos de conexão, a ID de usuário e a senha podem ser definidos ao estabelecer uma conexão. Para obter uma lista completa dos atributos de conexão com suporte, consulte Connection Options.

Exemplo com 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 em arquivos de texto específicos do aplicativo, uid.txt e pwd.txt, no diretório C:\AppData. Depois que a conexão é estabelecida, o servidor é consultado para verificar o logon do usuário.

O exemplo supõ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 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);  
?>  

Exemplo com PDO_SQLSRV

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;   
?>  

Consulte Também

Como: conectar usando a Autenticação do SQL Server

Guia de programação do Microsoft Drivers 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

Separação do Esquema de Usuário

Conceder permissões de objeto (Transact-SQL)