Cómo conectar con la autenticación de SQL Server
El Controlador de SQL Server para PHP admite la autenticación de SQL Server al realizar la conexión con SQL Server.
La autenticación de SQL Server se debe usar únicamente cuando la autenticación de Windows no es posible. Para obtener información acerca de cómo conectar con la autenticación de Windows, vea Cómo conectar con la autenticación de Windows.
Cuando use la autenticación de SQL Server para conectar con SQL Server, debe tener en cuenta lo siguiente:
- La autenticación de modo mixto de SQL Server se debe habilitar en el servidor.
- Los atributos de conexión UID y PWD se deben establecer al intentar establecer una conexión. UID y PWD se deben asignar a un usuario y contraseña válidos de SQL Server.
Nota
Las contraseñas que contienen una llave de cierre (}) deben ser caracteres de escape con una segunda llave de cierre. Por ejemplo, si la contraseña de SQL Server es "contra}seña", el valor del atributo de conexión PWD se debe establecer en "contra}}seña".
Cuando use la autenticación de SQL Server para conectar con SQL Server, debe tomar las siguientes precauciones:
- Proteger (cifrar) las credenciales que se transmiten a través de la red desde el servidor web a la base de datos. De forma predeterminada, SQL Server 2005 y SQL Server 2008 cifran las credenciales. Para aumentar la seguridad, establezca el atributo de conexión Encrypt en "activado" para cifrar todos los datos enviados al servidor.
Nota
Al establecer el atributo de conexión Encrypt en "activado" se puede producir un rendimiento más lento porque el cifrado de datos puede ser un cálculo intensivo.
- No incluya los valores de los atributos de conexión UID y PWD como texto sin formato en los script de PHP. Estos valores deben almacenarse en un directorio específico de la aplicación con los permisos restringidos adecuados.
- Evite el uso de la cuenta sa. Asigne la aplicación a un usuario de la base de datos que tenga los privilegios que desee y use una contraseña segura.
Nota
Cuando se establece la conexión, se pueden establecer atributos de conexión además de UID y PWD. Para obtener una lista completa de los atributos de conexión, vea sqlsrv_connect.
Ejemplo
En el ejemplo siguiente se usa la autenticación de SQL Server para conectar con una instancia local de SQL Server. Los valores para los atributos de conexión UID y PWD requeridos se toman de los archivos de texto específicos de la aplicación, uid.txt y pwd.txt, del directorio C:\AppData. Una vez establecida la conexión, se consulta al servidor para comprobar el inicio de sesión de usuario.
En el ejemplo se supone que SQL Server y la base de datos AdventureWorks están instalados en el equipo local. Cuando se ejecuta el ejemplo desde el explorador, todos los resultados se escriben en el explorador.
<?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);
?>
Vea también
Tareas
Cómo conectar con la autenticación de SQL Server
Conceptos
Acerca de ejemplos de código en la documentación
Otros recursos
Guía de programación
SUSER_SNAME (Transact-SQL)
Cómo crear un inicio de sesión de SQL Server
Cómo crear un usuario de la base de datos
Administrar usuarios, funciones e inicios de sesión
Separación entre usuario y esquema
Permisos del objeto Grant (Transact-SQL)