lunes, 18 de abril de 2016

Links de Interes Oracle

http://mundodb.es/oracle-trucos-para-dba-ii
https://www.experts-exchange.com/questions/22064608/PL-SQL-output-on-TOAD.html
http://stackoverflow.com/questions/11296361/how-to-create-id-with-auto-increment-on-oracle
http://www.tech-recipes.com/rx/19736/oracle-how-to-create-an-auto-increment-field-using-sequence/
https://augustohumire.wordpress.com/2008/09/13/tutorial-de-oracle-plsql/
http://pvilas.com/2014/03/django-llamar-procedimientos.html
http://www.devjoker.com/contenidos/articulos/27/Bloques-PLSQL.aspx
http://ss64.com/ora/syntax-fmt.html
http://www.oracle.com/technetwork/es/articles/database-performance/restaurar-recuperar-tablespaces-2228109-esa.html
http://mi-blog-sobre-oracle.blogspot.cl/2014/11/archivos-de-control.html
https://community.oracle.com/thread/2228787?tstart=0
http://www.dba-oracle.com/sf_ora_01034_oracle_not_available.htm
http://www.forosdelweb.com/f100/procedimiento-almacenado-547132/
http://computecnologia-peru.blogspot.cl/2010/03/creacion-de-un-store-procedure-en.html
http://misnotasdebolsillo.blogspot.cl/2014/04/hola-mundo-en-plsql.html
http://www.forosdelweb.com/f142/call-undefined-function-oci_connect-745398/

Hosting de Oracle

ORACLE/PLSQL: ORA-00911

Learn the cause and how to resolve the ORA-00911 error message in Oracle.

DESCRIPTION

When you encounter an ORA-00911 error, the following error message will appear:
  • ORA-00911: invalid character

CAUSE

You tried to execute a SQL statement that included a special character.

RESOLUTION

The option(s) to resolve this Oracle error are:

Option #1

This error occurs when you try to use a special character in a SQL statement. If a special character other than $, _, and # is used in the name of a column or table, the name must be enclosed in double quotations.

Option #2

This error may occur if you've pasted your SQL into your editor from another program. Sometimes there are non-printable characters that may be present. In this case, you should try retyping your SQL statement and then re-execute it.

Option #3

This error occurs when a special character is used in a SQL WHERE clause and the value is not enclosed in single quotations.
For example, if you had the following SQL statement:
SELECT * FROM suppliers
WHERE supplier_name = ?;
You would receive the following error message:
Oracle PLSQL
You could correct this error by enclosing the ? in single quotations as follows:
SELECT * FROM suppliers
WHERE supplier_name = '?';

Como Desbloquear el Schema HR en Oracle

Después de haber instalado y armado todo nuestro entorno de estudio, necesitamos desbloquear algún schema de ejemplo que trae nuestra base de datos Oracle, para el caso de que queramos utilizarlo para nuestras prácticas de estudio, en éste video explicamos como desbloquear el schema HR para tenerlo disponible y poder utilizarlo en nuestras prácticas. Para esta guia utilizaremos SQL Developer y Oracle 11g released 2.

¿Como sabemos si nuestro schema HR esta bloqueado?

  1. Ejecutamos SQL Developer. En la pestaña "Conexiones" a la izquierda de la ventana ,  seleccionando en la cruz verde que aparece en esta pestaña, creamos una nueva conexión.
  2. Al seleccionar la cruz verde aparece la ventana "Nueva / Seleccionar Conexión a Base de Datos", en ella diligenciamos algunos datos importantes para poder crear una conexión hacia el schema HR. Para ello en Nombre de Conexión se le da un nombre a la conexión, para este caso se le llamo "Schema - HR"; En el campoUsuario digitamos el nombre del schema, que es el mismo nombre del Usuario del schema, para este caso el usuario del schema HR es el mismo HR; en el campo Contraseña se digita la contraseña del usuario o schema HR; En la pestaña "Oracle" en el Tipo de Conexión seleccionamos el tipo TNS, se chequea en Alias de la Red y seleccionamosXE. Para probar la conexión se selecciona en el boton "Probar". Al probar si el usuario esta bloqueado debe aparecer la información en rojo que muestra la siguiente imagen "Estado: Fallo;Fallo de la prueba: ORA-28000: the account is Lockead".

Para desbloquear el schema HR es muy sencillo:
  1. Seleccionamos la consola de comandos de Run SQL Command Line en el menu inicio dentro de la carpeta "Oracle Database 11g Express Edition".
  2. Se abrira la consola de comando SQL de oracle en el estado que se muestra en la siguiente imagen.
  3. Para conectarnos digitamos "connect" y posteriormente se da un ENTER. Al pulsar ENTER nos aparece la siguiente linea "Enter user-name:", pidiendo el nombre de usuario con el que se hará la conexión.
  4. Para conectarnos utilizaremos el usuario SYS con el rol de SYSDBA. Para tal fin digitamos "sys as sysdba" y posteriormente se da un ENTER. Nos pedira la contraseña del usuario SYS (Esta contraseña se configuro al momento de la instalación de oracle). Al momento de digitarla no ocurrirá nada, no esperes que aparezcan asteriscos o puntos al momento de digitarla, solo digitala y presiona ENTER.
  5. Si la contraseña digitada es correcta debe aparecer un mensaje diciendo "Connected", así como lo muestra la siguiente imagen.
  6. Antes que nada se le debe asignar una contraseña al usuario HR, para ello digitamos la siguiente sentencia SQL: "alter user hr identified by XXX;" en donde las XXX significan la contraseña que se le asignara al usuario HR. En este caso se le asigno como contraseña HR, el mismo nombre del usuario HR. No olvides al final de la sentencia colocar punto y coma (;), ya que este es el que cierra la sentencia. A continuación se pulsa ENTER. Si la asignación de la contraseña fue exitosa, debe mostrar un mensaje diciendo "User altered" (Usuario alterado o Modificado).
  7. Para desbloquear el usuario digitamos la siguiente sentencia SQL: "alter user hr account unlock;", y pulsamos ENTER. Si el desbloqueo del usuario HR es exitosa, debe mostrar un un mensaje diciendo "User altered" (Usuario alterado o Modificado)
  8. Ahora se probara si el schema HR ha sido desbloqueado y su contraseña de igual manera, para ello digitamos la siguiente sentencia SQL con el siguiente formato conn [nombreDeUsuario]/[contraseña]@[aliasDeRed]" quedando para el caso de la guia así: "conn hr/hr@xe", Luego pulsamos enter. Si la el usuario y contraseña son validos debe mostrar un mensaje diciendo "Connected".
  9. Habiendo probado exitosamente el desbloqueo del usuario HR y la asignación de la contraseña nos salimos de la consola digitando "exit".
  10. Ahora abrimos SQL Developer y creamos una nueva conexión digitando los valores correspondientes para cada campo requerido. Para el caso de esta guia en Nombre de Conexión se le da un nombre a la conexión, se le llamo "Schema - HR"; En el campo Usuario digitamos el nombre del schema, que es el mismo nombre del Usuario del schema, para este caso el usuario del schema HR es el mismo HR; en el campo Contraseña se digita la contraseña del usuario o schema HR, en este caso la contraseña es "hr"; En la pestaña "Oracle" en el Tipo de Conexión seleccionamos el tipo TNS, se chequea en Alias de la Red y seleccionamos XE. Para probar la conexión se selecciona en el boton "Probar" y el estado de la conexión que se intenta crear es correcto, tal cual como lo muestra en la imagen en la parte inferior de la ventana con el mensaje "Estado: Correcto". Para crear la conexión seleccionamos en "Conectar".
  11. Como se observa en la siguiente imagen, aparece el nombre de la conexión "Schema - HR" con los objetos del esquema HR. Llamese Objeto a cualquier elemento que tenga el schema (tablas, vistas, indices, entre otros).

    Espero que sea de ayuda. Agradezco y dejes tu comentario al respecto.

Configuración de conexión Oracle para usar TNSNames.ora

Los entornos de Oracle ofrecen una diversa gama de métodos de conexión y convenciones de nomenclatura. Se reciben varios errores comunes cuando los controladores Oracle no tienen la ruta necesaria o la sintaxis para agregar nombres. Los errores de Oracle comunes que se ven en las conexiones de datos de Tableau son:
  • ORA-12154: TNS: could not resolve the connect identifier specified (no se pudo resolver el identificador de conexión especificado)
  • ORA-12514: TNS listener does not currently know of service requested in connect descriptor (el receptor TNS desconoce servicio solicitado en el descriptor de conexión)
  • ORA-12541: TNS: no listener (sin receptor)
  • ORA-12170: TNS: ocurrió tiempo de espera de conexión
  • ORA-12504: La escucha TNS no recibió el SERVICE_NAME en CONNECT_DATA
La mejor forma de corregir o evitar estos errores es configurar una conexión para usar TNSNames.ora. Si el problema persiste después de configurar esta conexión, consulte el artículo Solución de problemas de conexión de Oracle.
Nota: Este artículo hace referencia a Windows. En el artículo Configuración de conexión Oracle para usar TNSNames.ora o LDAP.ora en un equipo Mac se detallan los pasos que deben realizarse en un equipo Mac.

Comprobar que haya un archivo TNSNames.ora en la máquina

El archivo contiene TNSNames.ora la información específica necesaria para conectarse a la instancia Oracle. De manera predeterminada, el archivo TNSNames.ora se encuentra en {oracle home directory}\network\admin. Por ejemplo, C:\Oracle_Client\network\admin.
Si no hay un archivo TNSNames.ora en el equipo, tendrá que crear uno en un editor de texto. Le recomendamos que almacene el archivo en la carpeta Mis documentos, ya que es fácil de identificar y se encuentra en la mayoría de equipos. Por ejemplo: C:\Usuarios\jsmith\Documentos.
A continuación aparece una plantilla potencial para una entrada. Los elementos en paréntesis deben reemplazarse por valores obtenidos del administrador de la base de datos.

[net_service_name]=

(DESCRIPTION=

  (ADDRESS=[protocol_address_information])

  (CONNECT_DATA=

    (SERVICE_NAME=[service_name])

     )

   )

A continuación aparece una entrada de ejemplo que usa la plantilla de arriba:
Production =
(DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = prod.corp.com)(PORT = 1521)
  )
 (CONNECT_DATA =
  (SERVICE_NAME= orcl)
  )
 )

Configurar la variable de entorno TNS_Admin

Cree una variable de Windows Environment que dirige las conexiones de para usar la información en el archivo TNSNames.ora. Luego puede usar los Nombres de servicio de Oracle Net en las conexiones de datos de Tableau sin necesidad de conocer el puerto, servicio o especificaciones SID para cada conexión Oracle.
Nota: Si no tiene un cliente Oracle instalado en la computadora, obtenga los archivos necesarios del administrador de la base de datos.

Paso 1

Determine la ruta de carpeta para TNSNames.

Paso 2

Seleccione Inicio > Panel de control > Sistema.

Paso 3

En Windows 7, en la ventana Sistema, seleccione Configuración avanzada del sistema.

También puede seguir el procedimiento siguiente: 
  • En Windows XP, en la vista Clásica, haga doble clic en Sistema.
  • En Windows XP, seleccione Rendimiento y mantenimiento en la secciónElegir una categoría de la vista predeterminada y, en ...o elija un icono de Panel de control, haga clic en Sistema.

Paso 4

En el cuadro de diálogo Propiedades del sistema, en la pestaña Avanzadas, seleccione Variables de entorno.
OracleErrors7.png

Paso 5

En el cuadro de diálogo Variables de entorno, en Variables del sistema, haga clic en Nueva.
OracleErrors7.png

Paso 6

En el cuadro de diálogo Nueva variable del sistema, en el cuadro de textoNombre de variable, escriba TNS_ADMIN.

Paso 7

En el cuadro de texto, escriba la ubicación del archivo TNSNames.ora.

Paso 8

Haga clic en Aceptar para agregar esta variable.
La nueva variable ahora aparece en la lista del cuadro de diálogo.

Paso 9

Haga clic en Aceptar en el cuadro de diálogo Variables de entorno y el cuadro de diálogo Propiedades del sistema.

Paso 10

Reinicie su máquina para garantizar el reconocimiento de la nueva variable de entorno.

Usar el nombre de servicio de red de Oracle en Tableau

Después de configurar la variable ambiental TNS_ADMIN, puede conectarse a Oracle mediante los nombres de servicio de red de Oracle.

Step 1 

Cierre todos los libros de trabajo de Tableau y luego abra una nueva instancia de Tableau.

Step 2 

En Tableau Desktop, seleccione Conectar a datos y haga clic en Oracle.

Step 3 

Use el alias ‘net_service_name’ de Oracle creado en el archivo TNSNames.ora.
Los detalles de conexión se recuperan en el archivo TNSNames.ora a través de la variable del sistema TNS_ADMIN. En el ejemplo siguiente se muestra una conexión al alias net_service_name 'Production' del archivo TNSNames.ora.

Pasos adicionales para Tableau Server

Reinicie Tableau Server después de completar los pasos anteriores.
Términos alternativos de búsqueda:data sources, 12154, 12514, 12541, ora-12154, ora-12514, ora-12541, sid, sql.ora, tns, tnsnames, tns_admin, unable to connect to oracle, can't connect to oracle

Algunas consultas SQL muy útiles para el administrador de Oracle (DBA)


Hola Amigos, en este post mostraremos algunas consultas SQL muy útiles para el administrador de Oracle Database: estado de la base de datos Oracle, parámetros generales, ficheros de control, conexiones actuales a Oracle, nombre del ejecutable que se utiliza, nombre del usuario, diccionario de datos (vistas y tablas), IP del servidor, tamaño de la base de datos, versión de Oracle,
  • Definición SQL.
  • Consultas SQL útiles para obtener información sobre Oracle Database.
  • Artículos relacionados.
  • Créditos.

Definición SQL

SQL (Lenguaje de consulta estructurado) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en éstas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo efectuar consultas con el fin de recuperar, de una forma relativamente sencilla, información de interés de una base de datos, así como también hacer cambios sobre ella. Es un lenguaje de cuarta generación (4GL).

Consultas SQL útiles para obtener información sobre Oracle Database

  • Vista que muestra el estado de la base de datos:
select * from v$instance
  • Consulta que muestra si la base de datos está abierta:
select status from v$instance
  • Vista que muestra los parámetros generales de Oracle:
select * from v$system_parameter
  • Versión de Oracle:
select value 
from v$system_parameter 
where name = 'compatible'
  • Ubicación y nombre del fichero spfile:
select value 
from v$system_parameter 
where name = 'spfile'
  • Ubicación y número de ficheros de control:
select value 
from v$system_parameter 
where name = 'control_files'
  • Nombre de la base de datos
select value 
from v$system_parameter 
where name = 'db_name'
  • Vista que muestra las conexiones actuales a Oracle:
select osuser, username, machine, program 
  from v$session 
  order by osuser
  • Vista que muestra el número de conexiones actuales a Oracle agrupado por aplicación que realiza la conexión
select program Aplicacion, count(program) Numero_Sesiones
from v$session
group by program 
order by Numero_Sesiones desc
  • Vista que muestra los usuarios de Oracle conectados y el número de sesiones por usuario
select username Usuario_Oracle, count(username) Numero_Sesiones
from v$session
group by username
order by Numero_Sesiones desc
  • Propietarios de objetos y número de objetos por propietario
select owner, count(owner) Numero 
  from dba_objects 
  group by owner 
  order by Numero desc
  • Diccionario de datos (incluye todas las vistas y tablas de la Base de Datos):
select * from dictionary



select table_name from dictionary
  
  • Muestra los datos de una tabla especificada (en este caso todas las tablas que lleven la cadena "EMPLO"):
select * 
from ALL_ALL_TABLES 
where upper(table_name) like '%EMPLO%'
select *
from ALL_TRIGGERS 
  • Tablas propiedad del usuario actual:
select * from user_tables
  • Todos los objetos propiedad del usuario conectado a Oracle:
select * from user_catalog
  • Consulta SQL para el DBA de Oracle que muestra los tablespaces, el espacio utilizado, el espacio libre y los ficheros de datos de los mismos:
Select t.tablespace_name  "Tablespace",  t.status "Estado",  
    ROUND(MAX(d.bytes)/1024/1024,2) "MB Tamaño",
    ROUND((MAX(d.bytes)/1024/1024) - 
    (SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2) "MB Usados",   
    ROUND(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024,2) "MB Libres", 
    t.pct_increase "% incremento", 
    SUBSTR(d.file_name,1,80) "Fichero de datos"  
FROM DBA_FREE_SPACE f, DBA_DATA_FILES d,  DBA_TABLESPACES t  
WHERE t.tablespace_name = d.tablespace_name  AND 
    f.tablespace_name(+) = d.tablespace_name    
    AND f.file_id(+) = d.file_id GROUP BY t.tablespace_name,   
    d.file_name,   t.pct_increase, t.status ORDER BY 1,3 DESC
  • Productos Oracle instalados y la versión:
select * from product_component_version 
  • Roles y privilegios por roles:
select * from role_sys_privs
  • Reglas de integridad y columna a la que afectan:
select constraint_name, column_name 
from sys.all_cons_columns
  • Tablas de las que es propietario un usuario, en este caso "HR":
SELECT table_owner, table_name 
from sys.all_synonyms 
where table_owner like 'HR'
  • Otra forma más efectiva (tablas de las que es propietario un usuario):
SELECT DISTINCT TABLE_NAME 
FROM ALL_ALL_TABLES 
WHERE OWNER LIKE 'HR' 
  • Parámetros de Oracle, valor actual y su descripción:
SELECT v.name, v.value value, decode(ISSYS_MODIFIABLE, 'DEFERRED', 
     'TRUE', 'FALSE') ISSYS_MODIFIABLE,  decode(v.isDefault, 'TRUE', 'YES',
     'FALSE', 'NO') "DEFAULT",  DECODE(ISSES_MODIFIABLE,  'IMMEDIATE',  
     'YES','FALSE',  'NO',  'DEFERRED', 'NO', 'YES') SES_MODIFIABLE,   
     DECODE(ISSYS_MODIFIABLE, 'IMMEDIATE', 'YES',  'FALSE', 'NO',  
     'DEFERRED', 'YES','YES') SYS_MODIFIABLE ,  v.description  
FROM V$PARAMETER v 
WHERE name not like 'nls%'   ORDER BY 1
  
  • Usuarios de Oracle y todos sus datos (fecha de creación, estado, id, nombre, tablespace temporal,...):
Select  * FROM dba_users
  • Tablespaces y propietarios de los mismos:
select owner, decode(partition_name, null, segment_name, 
   segment_name || ':' || partition_name) name, 
   segment_type, tablespace_name,bytes,initial_extent, 
   next_extent, PCT_INCREASE, extents, max_extents 
from dba_segments 
Where 1=1 And extents > 1 order by 9 desc, 3 
  • Últimas consultas SQL ejecutadas en Oracle y usuario que las ejecutó:
select distinct vs.sql_text, vs.sharable_mem, 
  vs.persistent_mem, vs.runtime_mem,  vs.sorts,
  vs.executions, vs.parse_calls, vs.module,  
  vs.buffer_gets, vs.disk_reads, vs.version_count, 
  vs.users_opening, vs.loads,  
  to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time,  
  rawtohex(vs.address) address, vs.hash_value hash_value , 
  rows_processed  , vs.command_type, vs.parsing_user_id  , 
  OPTIMIZER_MODE  , au.USERNAME parseuser  
from v$sqlarea vs , all_users au   
where (parsing_user_id != 0)  AND 
(au.user_id(+)=vs.parsing_user_id)  
and (executions >= 1) order by   buffer_gets/executions desc 
  • Todos los ficheros de datos y su ubicación:
select * from V$DATAFILE
  • Ficheros temporales:
select * from V$TEMPFILE
  • Tablespaces:
select * from V$TABLESPACE
  • Otras vistas muy interesantes:
select * from V$BACKUP

select * from V$ARCHIVE   

select * from V$LOG   

select * from V$LOGFILE    

select * from V$LOGHIST          

select * from V$ARCHIVED_LOG    

select * from V$DATABASE
  • Memoria Share_Pool libre y usada:
select name,to_number(value) bytes 
from v$parameter where name ='shared_pool_size'
union all
select name,bytes 
from v$sgastat where pool = 'shared pool' and name = 'free memory'
  
  • Cursores abiertos por usuario:
select b.sid, a.username, b.value Cursores_Abiertos
      from v$session a,
           v$sesstat b,
           v$statname c
      where c.name in ('opened cursors current')
      and   b.statistic# = c.statistic#
      and   a.sid = b.sid 
      and   a.username is not null
      and   b.value >0
      order by 3
  • Aciertos de la caché (no debe superar el 1 por ciento):
select sum(pins) Ejecuciones, sum(reloads) Fallos_cache,
  trunc(sum(reloads)/sum(pins)*100,2) Porcentaje_aciertos 
from v$librarycache
where namespace in ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER');
  • Sentencias SQL completas ejecutadas con un texto determinado en el SQL:
SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text 
FROM v$session c, v$sqltext d 
WHERE  c.sql_hash_value = d.hash_value 
  and upper(d.sql_text) like '%WHERE CAMPO LIKE%'
ORDER BY c.sid, d.piece
  • Una sentencia SQL concreta (filtrado por sid):
SELECT c.sid, d.piece, c.serial#, c.username, d.sql_text 
FROM v$session c, v$sqltext d 
WHERE  c.sql_hash_value = d.hash_value and sid = 105
ORDER BY c.sid, d.piece
  • Tamaño ocupado por la base de datos
select sum(BYTES)/1024/1024 MB 
from DBA_EXTENTS  
  • Tamaño de los ficheros de datos de la base de datos:
select sum(bytes)/1024/1024 MB 
from dba_data_files
  • Tamaño ocupado por una tabla concreta sin incluir los índices de la misma
select sum(bytes)/1024/1024 MB 
from user_segments
where segment_type='TABLE' and segment_name='NOMBRETABLA'
  • Tamaño ocupado por una tabla concreta incluyendo los índices de la misma
select sum(bytes)/1024/1024 Table_Allocation_MB 
from user_segments
where segment_type in ('TABLE','INDEX') and
  (segment_name='NOMBRETABLA' or segment_name in
    (select index_name 
     from user_indexes 
     where table_name='NOMBRETABLA'))
  • Tamaño ocupado por una columna de una tabla:
select sum(vsize('NOMBRECOLUMNA'))/1024/1024 MB 
from NOMBRETABLA
  • Espacio ocupado por usuario:
SELECT owner, SUM(BYTES)/1024/1024 
FROM DBA_EXTENTS MB
GROUP BY owner
  • Espacio ocupado por los diferentes segmentos (tablas, índices, undo, rollback, cluster, ...):
SELECT SEGMENT_TYPE, SUM(BYTES)/1024/1024 
FROM DBA_EXTENTS MB
GROUP BY SEGMENT_TYPE
  • Espacio ocupado por todos los objetos de la base de datos, muestra los objetos que más ocupan primero:
SELECT SEGMENT_NAME, SUM(BYTES)/1024/1024 
FROM DBA_EXTENTS MB
GROUP BY SEGMENT_NAME
ORDER BY 2 DESC
  • Obtener todas las funciones de Oracle: NVL, ABS, LTRIM, ...:
SELECT distinct object_name 
FROM all_arguments 
WHERE package_name = 'STANDARD'
order by object_name
  • Obtener los roles existentes en Oracle Database:
select * from DBA_ROLES
  • Obtener los privilegios otorgados a un rol de Oracle:
select privilege 
from dba_sys_privs 
where grantee = 'NOMBRE_ROL'
  • Obtener la IP del servidor de la base de datos Oracle Database:
select utl_inaddr.get_host_address IP
from dual 

  • Mostrar datos de auditoría de la base de datos Oracle (inicio y desconexión de sesiones):
select username, action_name, priv_used, returncode
from dba_audit_trail

  • Comprobar si la auditoría de la base de datos Oracle está activada:

select name, value
from v$parameter
where name like 'audit_trail'

Habilitar driver sql server 2012 - 2014 en xampp

A continuación se detalla como habilitar driver para el motor de base de datos SQL SERVER en XAMPP.

La siguiente práctica fue desarrollada en el siguiente escenario:

  1. Sistema operativo: Windows 8.1 x64
  2. Base de datos: SQL SERVER 2012 EXPRESS
  3. Servidor web: APACHE
  4. XAMPP versión 1.8.3

En primera instancia instalaremos XAMPP, se lo puede descargar desde el siguiente enlace Click Aqui y seleccionar la versión 1.8.3 para proceder con la descarga.

Luego de haber instalado XAMPP en nuestra computadora, abrir el panel de control de xampp, e iniciar el servicio Apache 

Si todo va bien el servicio se iniciará, en caso de haber inconvenientes no olvidarse de cambiar los puertos para http, por defecto escucha por el puerto 80.

Por defecto el driver para sql server no está habilitado, para lo cual seguir las siguientes instrucciones:

1. Descargar e instalar Microsoft Drivers 3.1 for PHP for SQL Server, descargar aquíseleccione la versión 3.1 y descarga

2. Una vez descargado, te va pedir el directorio de instalación, para ello selecciona el siguiente directorio: C:\xampp\php\ext , luego presiona ok

3. El directorio anterior contendrá ahora los siguientes nuevos archivos


4. Ahora dentro del panel de control de xampp abre el arhivo de configuración php.ini  y agrega las siguientes lineas en la sección de extensiones dinámicas

extension=php_sqlsrv_55_ts.dll
extension=php_pdo_sqlsrv_55_ts.dll

5. Reinicia el servicio de apache

6. En caso de no iniciarse el servicio, descargar el siguiente driver: 

Microsoft® ODBC Driver 11 for SQL Server® - Windows click aquí


7. De igual manera descargate el siguiente driver: 

Visual C++ Redistributable for Visual Studio 2012 Update 4 click aquí.


NOTA: Ten presente el idioma del sistema operativo que tienes en tu computadora para elegir la descarga del driver, y la arquitectura de la misma (x32 o x64)

Con todo esto, se puede comprobar que el driver ha sido habilitado, ingresando a un navegador web y digitar: localhost, luego en la opción de phpinfo()


Con ello se ha habilitado el driver pdo_sqlsvr en xampp