bbdd - Sql server

Conectando Laravel con SQL SERVER 2012

Hace poco trabajando para un cliente en el módulo de SII, nos hizo una petición extraña, habíamos realizado una Web App en Laravel con conexión a BBDD MySql como suele ser normal, pero el tenia todos los datos en SQL SERVER.

Habíamos creado un proceso Batch para copiar los datos y pasarlos de una BBDD a otra, este funcionaba de forma correcta pero el cliente no quería tener corriendo este proceso por temas internos.

Después de analizar el trabajo se decidió realizar la conexión de nuestra App con SQL SERVER.

Manos a la obra.

Lo primero que tuvimos que hacer es bajar los drivers de conexión a Base de datos de SQL SERVER con PHP.

Nuestro servidor Apache está bajo Windows por lo que no tuvimos muchos problemas, aunque hay una explicación de cómo hacerlo bajo servidores Linux.

Primeros pasos

Descargar los drivers de la página de Microsoft.

https://www.microsoft.com/en-us/download/details.aspx?id=20098

Os bajara un ejecutable que en realidad es un zip, ahora solo tenéis que descomprimir todas las dll en vuestra carpeta del servidor donde esté instalado PHP. En mi caso X:\xampp\php\ext. Tenéis que saber que versión de PHP tenéis instalado en vuestro servidor, PHP 5.6, PHP 7.0, etc. En mi caso PHP 7.0.

Os dejo una tabla con la versión del controlador que necesitáis:

 

PHP
↓Versión de PHP
5.24.34.03.23.1
7.27.2.1+ en Windows
7.2.0+ en otras plataformas
7.17.1.0+7.1.0+
7.07.0.0+7.0.0+7.0.0+
5.65.6.4
5.55.5.165.5.16
5.45.4.325.4.32

Una vez realizado esto, tenemos que decirle a PHP que hemos añadido n nuevo modulo o extension para ello abrimos el archivo de configuración PHP.ini y buscamos

; Windows Extensions
extension=php_bz2.dll

Añadimos una nueva línea, al final de todas las extensiones

extension=php_sqlsrv_7_ts.dll

Os dejo la tabla para saber cual teneis que usar, sino aparece aqui vuestra versión, podeis consultar esta página .
Controladores de Microsoft 5.2 para PHP para SQL Server:
En Windows, se incluyen las siguientes versiones del controlador:

Archivo de controladorVersión de PHP¿Seguridad
subprocesos?
Uso con PHP.dll
php_sqlsrv_7_nts.dll de 32 bits
php_pdo_sqlsrv_7_nts.dll de 32 bits
7.0nophp7.dll de 32 bits
php_sqlsrv_7_ts.dll de 32 bits
php_pdo_sqlsrv_7_ts.dll de 32 bits
7.0php7ts.dll de 32 bits
php_sqlsrv_7_nts.dll de 64 bits
php_pdo_sqlsrv_7_nts.dll de 64 bits
7.0nophp7.dll de 64 bits
php_sqlsrv_7_ts.dll de 64 bits
php_pdo_sqlsrv_7_ts.dll de 64 bits
7.0php7ts.dll de 64 bits
php_sqlsrv_71_nts.dll de 32 bits
php_pdo_sqlsrv_71_nts.dll de 32 bits
7.1nophp7.dll de 32 bits
php_sqlsrv_71_ts.dll de 32 bits
php_pdo_sqlsrv_71_ts.dll de 32 bits
7.1php7ts.dll de 32 bits
php_sqlsrv_71_nts.dll de 64 bits
php_pdo_sqlsrv_71_nts.dll de 64 bits
7.1nophp7.dll de 64 bits
php_sqlsrv_71_ts.dll de 64 bits
php_pdo_sqlsrv_71_ts.dll de 64 bits
7.1php7ts.dll de 64 bits
php_sqlsrv_72_nts.dll de 32 bits
php_pdo_sqlsrv_72_nts.dll de 32 bits
7.2nophp7.dll de 32 bits
php_sqlsrv_72_ts.dll de 32 bits
php_pdo_sqlsrv_72_ts.dll de 32 bits
7.2php7ts.dll de 32 bits
php_sqlsrv_72_nts.dll de 64 bits
php_pdo_sqlsrv_72_nts.dll de 64 bits
7.2nophp7.dll de 64 bits
php_sqlsrv_72_ts.dll de 64 bits
php_pdo_sqlsrv_72_ts.dll de 64 bits
7.2php7ts.dll de 64 bits

Una vez realizado el cambio en el archivo PHP.ini reiniciar el servidor, hacer un stop / start del Apache y ya podríais trabajar con SQL SERVER en vuestra aplicación.

Ir al archivo database.php dentro de vuestra carpeta config y añadir los elementos necesarios.

return [
    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for all database work. Of course
    | you may use many connections at once using the Database library.
    |
    */

    'default' => env('DB_CONNECTION', 'sqlsrv'),

    /*
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Here are each of the database connections setup for your application.
    | Of course, examples of configuring each database platform that is
    | supported by Laravel is shown below to make development simple.
    |
    |
    | All database work in Laravel is done through the PHP PDO facilities
    | so make sure you have the driver for your particular database of
    | choice installed on your machine before you begin development.
    |
    */

    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

		
        'sqlsrv' => [
            'driver'   => 'sqlsrv',
            'host'     => env( 'DB_HOST' ),
            'port'     => env( 'DB_PORT' ),
            'database' => env( 'DB_DATABASE' ),
            'username' => env( 'DB_USERNAME' ),
            'password' => env( 'DB_PASSWORD' ),
            'prefix'   => '',
            'charset'  => 'UTF-8',
            'pooling'  => false,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run in the database.
    |
    */

    'migrations' => 'migrations',

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer set of commands than a typical key-value systems
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
    */

    'redis' => [

        'client' => 'predis',

        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],

    ],

];

Todos los datos los leerá de vuestro archivo .env como si se tratara de MySQL.

Estoy preparando un update de este artículo, que publicaré muy pronto en Expansyon.

Cualquier cosa lo comentamos, recordar que podéis contacta conmigo por redes sociales o por el formulario de la web.

Conectando Laravel con SQL SERVER 2012 Modificado: abril 16th, 2021 por Carlos González Gurrea
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (6 votos, promedio: 4,17 de 5)
Cargando...

Centro de preferencias de privacidad

    Almacenamiento y acceso a información

    El almacenamiento de información o el acceso a información ya almacenada en tu dispositivo como identificadores de publicidad, identificadores de dispositivo, cookies y tecnologías similares.

    google.com

    Personalización

    La recopilación y procesado de información sobre tu uso de este servicio para posteriormente personalizar la publicidad y/o el contenido para ti en otros contextos, como otras webs o apps, con el tiempo. Habitualmente el contenido de la web o la app se usa para hacer deducciones sobre lo que te interesa, lo que define la selección futura de publicidad y/o contenido.

    google.com

    Selección de anuncios, entrega, informes

    La recopilación de información y la combinación con información anteriormente recopilada para seleccionar y presentarte publicidad y para medir la entrega y efectividad de esa publicidad. Esto incluye usar información recopilada anteriormente sobre tus intereses para seleccionar anuncios, procesar datos sobre qué anuncios se mostraron, con qué frecuencia se mostraron, cuando y dónde se mostraron y si llevaste a cabo alguna acción relacionada con el anuncio, como por ejemplo hacer clic en un anuncio o hacer una compra. Esto no incluye la personalización, que es la recopilación y procesado de información sobre el uso que haces de este servicio para posteriormente personalizar publicidad y/o otros contenidos para ti en otros contextos, como webs o apps, con el tiempo.

    google.com

    Selecciones de contenido, entrega, informes

    La recopilación de información y combinación con información previamente recopilada para seleccionar y presentarte contenido y para medir la entrega y efectividad de ese contenido. Esto incluye el uso de información recopilada anteriormente sobre tus intereses para seleccionar contenido, procesar datos sobre qué contenido se mostró, con qué frecuencia o durante cuánto tiempo se mostró, dónde y cuándo se mostró y si llevaste a cabo alguna acción relacionada con el contenido, como por ejemplo hacer clic en contenido. Esto no incluye la personalización, que es la recopilación y procesado de información sobre el uso que haces de este servicio para posteriormente personalizar contenido y/o publicidad para ti en otros contextos, como webs o apps, con el tiempo.

    google.com