Cara Koneksi Database SQL Server (MSSQL) di Codeigniter 3


Macamateri kembali membahas mengenai database, kali ini berbagi pengalaman mengenai cara menghubungkan database Microsoft SQL Server di Codeigniter 3.x. Untuk kamu yang ingin tahu cara migrasi dari MySQL ke MSSQL, kamu bisa mengunjungi artikel sebelumnya di Cara Migrasi Database Dari MySQL ke Microsoft SQL Server .
Sebelumnya kamu harus tahu dahulu versi dari server yang digunakan. Berikut adalah konfigurasi server yang Macamateri gunakan dalam melakukan tes:

  1. Windows 10 64bit
  2. Xampp 3.2.1
  3. PHP versi 5.6.8
  4. Codeigniter 3.1.4
  5. SQL Server 2008 Express Edition

Karena itu, tutorial ini berlaku untuk kamu yang menggunakan sistem operasi Windows dan menjalankan web server serta SQL servernya di OS Windows.

Langkah-Langkah

Pertama, kamu lakukan cek versi dari PHP yang digunakan, pastikan webserver dalam keadaan Running. lalu buat file php (misal info.php) yang berisi:
<?php phpinfo(); ?>
taruh dalam htdocs / folder projek kamu.
PHP info
Setelah itu cari (CTRL+F pada browser) "Thread Safety" , ingat statusnya enabled atau disabled.
Thread Safety

Kedua, unduh tools pendukung, yaitu Microsoft Drivers for PHP for SQL Server, dan Microsoft ODBC Driver 11 for SQL Server. Bisa kamu unduh pada tautan berikut
Microsoft Drivers for PHP for SQL Server: 
Ketika "Download" pilih sesuai dengan versi PHP yang kamu gunakan (lihat PHP info pada langkah pertama).
Version 4.0 supports PHP 7.0+ on Windows and Linux
Version 3.2 supports PHP 5.6, 5.5, and 5.4 on Windows
Version 3.1 supports PHP 5.5 and 5.4 on Windows
Version 3.0 supports PHP 5.4 on Windows
Karena Macamateri menggunakan PHP versi 5.6.x maka pilih  SQLSRV32.EXE.
Setelah itu lakukan installasi / extract ke folder baru atau langsung ekstrak ke php extensions folder (misal) C:\Xampp\php\ext.
Disini yang kamu perhatikan adalah nama dari file-nya. Pada langkah pertama kita sudah mengetahui versi PHP yang digunakan dan status dari Thread Safety. Langsung dicontohkan, macamateri menggunakan PHP versi 5.6 dan status dari Thread Safety adalah Enabled, sehingga extension driver yang digunakan adalah php_sqlsrv_56_ts.dll. Copy file tersebut dalam folder C:\Xampp\php\ext atau sesuaikan dengan folder extension php yang ada di webserver kamu (googling ya).

Lalu buka file php.ini yang ada di C:\Xampp\php\php.ini. Lalu tambahkan baris teks ini:
extension=php_sqlsrv_56_ts.dll
Contoh Isi File php.ini
Kamu bisa tambahkan baris diatas setelah baris ini extension=php_mysqli.dll (ctrl+f untuk mencari)

Setelah itu download dan install Microsoft® ODBC Driver 11 for SQL Server® - Windows
https://www.microsoft.com/en-us/download/details.aspx?id=36434
Sesuaikan dengan OS yang kalian gunakan, jika mengunakan 32bit, install yang ENU\x86\msodbcsql.msi .

Ketiga, kamu buka SQL Server Configuration Management (bisa kamu temukan di Start > All Programs > Microsoft SQL Server 20XX > SQL Server Configuration Management) lalu buka SQL Server Network Configuration > Protocols for SQLEXPRESS > double click pada TCP/IP , Enabled pilih Yes.
SQL Server Configuration Manager
Setelah itu buka tab IP Addresses , pada bagian IPAll, TCP Dynamic Ports dikosongkan, dan pada TCP Port isikan 1433, Apply dan OK. dan Restart SQL Server.
Settings TCP Port
Restart SQL Server
Keempat, lakukan konfigurasi pada Codeigniter, dengan cara buka file database.php yang ada di application/config/database.php seperti berikut:
$active_group = 'dbsqlsrv';
$db['dbsqlsrv'] = array(
 'dsn' => '',
 'hostname' => '127.0.0.1',
 'port' => '1433',
 'username' => 'USERNAME SQLSERVER',
 'password' => 'PASSWORD SQLSERVER',
 'database' => 'NAMA DATABASE',
 'dbdriver' => 'sqlsrv',
 'dbprefix' => '',
 'pconnect' => FALSE,
 'db_debug' => (ENVIRONMENT !== 'production'),
 'cache_on' => FALSE,
 'cachedir' => '',
 'char_set' => 'utf8',
 'dbcollat' => 'utf8_general_ci',
 'swap_pre' => '',
 'encrypt' => FALSE,
 'compress' => FALSE,
 'stricton' => FALSE,
 'failover' => array(),
 'save_queries' => TRUE
);

Kelima, selamat... sekarang kamu bisa menggunakan SQL Server di Codeigniter.


Referensi : https://futbolsalas15.wordpress.com/2014/02/23/7-steps-to-make-sql-server-and-codeigniter-works/ dan Stackoverflow serta pengalaman pribadi
Share on Google Plus
Seorang blogger yang juga web designer dan web developer. Mempunyai hobi menggonta-ganti hobi tapi tidak jauh dari hobi mengenai TI/Web/Robotic/Internet. 
[ f ] : /riloaw   [ t ] : @Riloaw

7 komentar :

  1. Hebat sekali programmer satu ini, sangat bermanfaat informasinya untuk Kuliah 😊😊

    BalasHapus
  2. Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\wwwroot3\system\database\drivers\sqlsrv\sqlsrv_result.php on line 190

    padahal bukan bermasalah pada execution time, karena sudah di ganti ke unlimited tapi tetap tidak bisa, koneksi database terputus ditengah" saat melakukan pengcodingan.. ada solusi untuk mengatasi koneksi error spt ini?

    BalasHapus
    Balasan
    1. Apakah menggunakan versi yang stabil pada semua aplikasi? Timeout terjadi kemungkinan komunikasi ke server sqlnya. Masalahnya ada di sql servernya menurutku bukan di client / kodingannya.

      Hapus
  3. A Database Error Occurred
    Unable to connect to your database server using the provided settings.

    Filename: C:/xampp/htdocs/test/system/database/DB_driver.php

    Line Number: 436

    BalasHapus
    Balasan
    1. Error seperti ini bisa disebabkan service SQL Server nya belum running, atau portnya diblockir firewall, atau salah konfigurasi koneksinya.

      Hapus
  4. Gan sewaktu saya install SQL Server saya pilih windows authentication untuk login nya, nah untuk username dan password yang harus saya isikan di codeigniter nya apa ya?
    misal:
    USERNAME windows: ANONIM
    PASSWORD windows: 123

    BalasHapus
    Balasan
    1. oh iya muncul error ini juga...

      An uncaught Exception was encountered
      Type: Error

      Message: Call to undefined function sqlsrv_connect()

      Filename: C:\xampp\htdocs\kaltim\system\database\drivers\sqlsrv\sqlsrv_driver.php

      Line Number: 144

      Hapus

Tinggalkan Komentar Yang Baik.