CakeFest 2024: The Official CakePHP Conference

Funciones de Microsoft SQL Server (PDO_SQLSRV)

Introducción

PDO_SQLSRV es un controlador que implementa la interfaz de Objetos de Datos de PHP (PDO) para habilitar el acceso desde PHP a bases de datos de MS SQL Server (comenzando con SQL Server 2005) y de SQL Azure.

Instalación

La extensión PDO_SQLSRV se habilita añadiendo el fichero DLL apropiado al directorio de extensiones de PHP y la entrada correspondiente al fichero php.ini. La descarga de PDO_SQLSRV viene con ocho ficheros de controlador, cuatro de los cuales son para dar soporte a PDO. Si se está ejecutando PHP como no seguro con subprocesos (PHP 5.3), use el fichero php_pdo_sqlsrv_53_nts.dll. (Debería de usarse una versión no segura con subprocesos si se utiliza IIS como servidor web). Si se está ejecutando PHP como seguro con subprocesos, use el fichero php_pdo_sqlsrv_53_ts.dll. De manera similar para PHP 5.4, use php_pdo_sqlsrv_54_nts.dll o php_pdo_sqlsrv_54_ts.dll, dependiendo de si la instalación de PHP no es o es segura con subprocesos.

La versión más reciente del controlador está disponible aquí: » Descarga de SQLSRV 3.0. Si fuera necesario dar soporte paraor PHP 5.2 y/o PHP compilado con VC6, use la versión 2.0 del controlador: » Descarga de SQLSRV 2.0.

Para más información sobre los requisitos del sistema, véase » Requisitos del sistema de SQLSRV.

La extensión PDO_SQLSRV solamente es compatible con PHP ejecutándose bajo Windows. Para Linux, véase ODBC y » Microsoft's SQL Server ODBC Driver para Linux.

Constantes predefinidas

Estas constantes están definidas por este controlador, y estarán disponibles sólo cuando la extensión haya sido compilada con PHP, o bien sea cargada dinámicamente en ejecución. Además, estas constantes específicas del controlador deberían ser utilizadas sólo si está usando este controlador. Usar atributos específicos del controlador con otro controlador podría resultar en un comportamiento inesperado. PDO::getAttribute() puede ser empleado para obtener el atributo PDO::ATTR_DRIVER_NAME para verificar el controlador, si el código puede ejecutarse con múltiples controladores.

PDO::SQLSRV_TXN_READ_UNCOMMITTED (integer)
Esta constante es un valor aceptable para la clave TransactionIsolation del DSN de SQLSRV. Esta constante establece el nivel de aislamiento para la conexión a Read Uncommitted.
PDO::SQLSRV_TXN_READ_COMMITTED (integer)
Esta constante es un valor aceptable para la clave TransactionIsolation del DSN de SQLSRV. Esta constante establece el nivel de aislamiento para la conexión a Read Committed.
PDO::SQLSRV_TXN_REPEATABLE_READ (integer)
Esta constante es un valor aceptable para la clave TransactionIsolation del DSN de SQLSRV. Esta constante establece el nivel de aislamiento para la conexión a Repeateable Read.
PDO::SQLSRV_TXN_SNAPSHOT (integer)
Esta constante es un valor aceptable para la clave TransactionIsolation del DSN de SQLSRV. Esta constante establece el nivel de aislamiento para la conexión a Snapshot.
PDO::SQLSRV_TXN_SERIALIZABLE (integer)
Esta constante es un valor aceptable para la clave TransactionIsolation del DSN de SQLSRV. Esta constante establece el nivel de aislamiento para la conexión a Serializable.
PDO::SQLSRV_ENCODING_BINARY (integer)
Specifies that data is sent/retrieved as a raw byte stream to/from the server without performing encoding or translation. This constant can be passed to PDOStatement::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_SYSTEM (integer)
Specifies that data is sent/retrieved to/from the server as 8-bit characters as specified in the code page of the Windows locale that is set on the system. Any multi-byte characters or characters that do not map into this code page are substituted with a single byte question mark (?) character. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_UTF8 (integer)
Specifies that data is sent/retrieved to/from the server in UTF-8 encoding. This is the default encoding. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_DEFAULT (integer)
Specifies that data is sent/retrieved to/from the server according to PDO::SQLSRV_ENCODING_SYSTEM if specified during connection. The connection's encoding is used if specified in a prepare statement. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ATTR_QUERY_TIMEOUT (integer)
A non-negative integer representing the timeout period, in seconds. Zero (0) is the default and means no timeout. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, and PDO::prepare.
PDO::SQLSRV_ATTR_DIRECT_QUERY (integer)
Indicates that a query should be executed directly, without being prepared. This constant can be passed to PDO::setAttribute, and PDO::prepare. For more information, see » Direct and Prepared Statement Execution.

Tabla de contenidos

add a note

User Contributed Notes 4 notes

up
13
Peter
8 years ago
SQLSRV 3.2 is now available from Microsoft that supports PHP 5.6

http://www.microsoft.com/en-us/download/details.aspx?id=20098
up
8
ian at helastel dot com
7 years ago
An updated driver compatible with both PHP 7.0 and Linux is available on the PHP-7.0-Linux branch of https://github.com/Microsoft/msphpsql/

This is more up to date and supports some additional features over the ODBC / DBLIB drivers.

It is currently considered an 'Early Technical Preview' and hence has some limitations, but in my experience it has been stable.
up
0
John P
9 years ago
As of 12/12/2014, Microsoft has officially released Version 3.1.

Support for 5.5 has 4 drivers
php_pdo_sqlsrv_55_nts.dll
php_pdo_sqlsrv_55_ts.dll
php_sqlsrv_55_nts.dll
php_sqlsrv_55_ts.dll

Note: Version 3.1 now supports PHP 5.5 and requires Microsoft ODBC Driver 11 (or higher)

You can downlod the new driver from
http://www.microsoft.com/en-us/download/details.aspx?id=20098
up
-7
fleduc dot perso at gmail dot com
6 years ago
Watch out!

If you use PDO SQLSRV on windows 7, using 32 bit php on XAMMP, you might encounter driver problems : "This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server"

The reason, Microsoft 32-bit ODBC driver doesn't install properly on 64-bit Windows 7.

Check the solution to PDO SQLSRV driver problem here in StackOverflow

https://stackoverflow.com/a/46245990/1330248
To Top