PHP 7.4.0beta4 released!

sqlsrv_connect

(No version information available, might only be in Git)

sqlsrv_connectAbre una conexión a una base de datos Microsoft SQL Server

Descripción

sqlsrv_connect ( string $serverName [, array $connectionInfo ] ) : resource

Abre una conexión a una base de datos Microsoft SQL Server. Por defecto, la conexión se intenta utilizando la autenticación Windows. Para conectar utilizando la autenticación SQL Server, incluir "UID" y "PWD" en el array de opciones de conexión.

Parámetros

serverName

El nombre del servidor en el que se ha establecido una conexión. Para conectar a una instancia específica, poner una barra invertida después del nombre de servidor e indicar el nombre de la instancia (e.g. NombreServidor\sqlexpress).

connectionInfo

Un array asociativo que especifica las opciones de conexión al servidor. Si no se ha especificado ningún valor para el UID y PWD, la conexión se intentará utilizando la autenticación Windows. Para una lista completa de claves soportadas, ver » Opciones de Conexión SQLSRV.

Valores devueltos

Un recurso de conexión. Si no se puede abrir la conexión, se retorna el valor FALSE .

Ejemplos

Ejemplo #1 Conectar utilizando autenticación Windows.

<?php
$serverName 
"serverName\sqlexpress"//serverName\instanceName

// Puesto que no se han especificado UID ni PWD en el array  $connectionInfo,
// La conexión se intentará utilizando la autenticación Windows.
$connectionInfo = array( "Database"=>"dbName");
$conn sqlsrv_connect$serverName$connectionInfo);

if( 
$conn ) {
     echo 
"Conexión establecida.<br />";
}else{
     echo 
"Conexión no se pudo establecer.<br />";
     die( 
print_rsqlsrv_errors(), true));
}
?>

Ejemplo #2 Conectar especificando nombre de usuario y contraseña.

<?php
$serverName 
"serverName\sqlexpress"//serverName\instanceName
$connectionInfo = array( "Database"=>"dbName""UID"=>"userName""PWD"=>"password");
$conn sqlsrv_connect$serverName$connectionInfo);

if( 
$conn ) {
     echo 
"Conexión establecida.<br />";
}else{
     echo 
"Conexión no se pudo establecer.<br />";
     die( 
print_rsqlsrv_errors(), true));
}
?>

Ejemplo #3 Conectar a un puerto específico.

<?php
$serverName 
"serverName\sqlexpress, 1542"//serverName\instanceName, portNumber (por defecto es 1433)
$connectionInfo = array( "Database"=>"dbName""UID"=>"userName""PWD"=>"password");
$conn sqlsrv_connect$serverName$connectionInfo);

if( 
$conn ) {
     echo 
"Conexión establecida.<br />";
}else{
     echo 
"Conexión no se pudo establecer.<br />";
     die( 
print_rsqlsrv_errors(), true));
}
?>

Notas

Por defecto, la función sqlsrv_connect() utiliza la conexión mediante agrupación para mejorar el funcionamiento de la conexión. Para desconectar el funcionamiento en modo grupo (p.ej. forzar una nueva conexión en cada llamada), configurar la opción "ConnectionPooling" en el array $connectionOptions a 0 (o FALSE). Para más información, ver » Cola de conexión SQLSRV.

La extensión SQLSRV no tiene una función específica para cambiar a que base de datos se está conectado. La base de datos objetivo se especifica en el array de opciones $connectionOptions que se pasa a sqlsrv_connect. Para cambiar la base de datos en una conexión ya abierta, ejecutar la siguiente sentencia sql "USE dbName" (p.ej. sqlsrv_query($conn, "USE dbName")).

Ver también

  • sqlsrv_close() - Cierra una conexión abierta y libera los recursos asociados a la conexión
  • sqlsrv_errors() - Devuelve información de errores y alertas (warnings) de la última operación SQLSRV realizada
  • sqlsrv_query() - Prepares and executes a query

add a note add a note

User Contributed Notes 7 notes

up
4
alvaro at demogracia dot com
2 years ago
You can use the connectionInfo parameter to specify connection encoding, e.g.:

<?php
$connectionInfo
= [
   
'CharacterSet' => 'UTF-8',
];
$conn = sqlsrv_connect($serverName, $connectionInfo);
?>

Beware though that only two options exist:
- SQLSRV_ENC_CHAR (constant) for ANSI, which is the default
- 'UTF-8' (string) for Unicode
up
1
Eion Robb
3 years ago
As mentioned at https://msdn.microsoft.com/en-us/library/cc296193.aspx the connection will convert some data into PHP data types.  Of particular difference to other database functions in PHP is that dates will be output as objects instead of strings.

To make the sqlsrv_fetch_{array|object}() functions return dates/times/datetimes as strings instead, specify:
  'ReturnDatesAsStrings' => true
in the $connectionInfo array.

For more info about this behaviour, see https://msdn.microsoft.com/en-us/library/ee376928.aspx
up
-1
Anonymous
2 months ago
SQL SERVER 2012 conexion in PHP
<?php
    $serverName
= "SERVER"; //serverName\instanceName
   
$connectionInfo = array( "Database"=>"base", "UID"=>"ex", "PWD"=>"******");
   
$conn = sqlsrv_connect( $serverName, $connectionInfo);
;

        if(
$conn ) {
             echo
"Conexión establecida.<br />";
        }else{
            echo
"Conexión no se pudo establecer.<br />";
            die(
print_r( sqlsrv_errors(), true));
        }

   
$sql = "SELECT name FROM [base].[dbo].[table]";
   
$params = array();
   
$options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
   
$stmt = sqlsrv_query( $conn, $sql , $params, $options );

   
$row_count = sqlsrv_num_rows( $stmt );
  

        if (
$row_count === false)
           echo
"Error al obtener datos.";
        else
           echo
"bien";
       
//echo $row_count;

       
while( $row = sqlsrv_fetch_array( $stmt) ) {
              print
json_encode($row);
        }

   
sqlsrv_close($conn);
?>
up
-1
mmi at uhb-consulting dot de
11 months ago
to prevent  [Microsoft][ODBC Driver 17 for SQL Server]String data, right truncation Errors on Linux
you must add the Connection Parameter 'CharacterSet' => "UTF-8" 

Tested with with Driver Version 5.3
up
-8
manav at drupal.org/u/manav
1 year ago
If anybody wants to use
<?php
//..
 
sqlsrv_connect();
//..
?> method to Fedora-25 then user have to install PECL php-sqlsrv library to connect ms-sql server remotely in php script.
In my case i found the same issue but after some search i got this solution and implement it.... now it works.
up
-29
Gilly
3 years ago
In order to connect using Windows Authentication (on Windows) for Wamp/Xamp installations you should verify that the apache service is running under a user who can connect to SQL Server and not under a local user.
up
-30
jucabe9979 at hotmail dot com
2 years ago
What happen if i have a sql_variant data? how can I reed that data?
To Top