Bagikan melalui


Migrasi dari MySQL ke SQL Server 2008

oleh Tali Smith

Pendahuluan

Dengan munculnya Driver SQL Server untuk PHP, pengembang PHP sekarang memiliki platform yang kuat untuk mengembangkan dan menjalankan aplikasi Web: Windows Server 2008 dan Microsoft® SQL Server® 2008.

Migrasi dari MySQL ke SQL Server 2008

Anda dapat bermigrasi dari database MySQL ke SQL Server 2008 menggunakan langkah-langkah berikut:

  1. Tentukan bagaimana Anda akan memetakan database MySQL ke SQL Server 2008. Anda memiliki dua opsi utama:

    • Petakan setiap database MySQL ke database SQL Server terpisah.
      Misalnya, Anda dapat memetakan database MyDB MySQL ke database MyDB SQL Server.
    • Petakan setiap database MySQL ke database SQL Server tunggal tetapi skema terpisah.
      Misalnya, Anda dapat memetakan database MyDB MySQL ke database MySQLDatabases SQL Server, skema MyDB.
  2. Di SQL Server, skema belum tentu ditautkan ke pengguna atau login tertentu, dan satu server berisi beberapa database.

  3. Mengonversi objek database; ini adalah tabel, batasan tabel, indeks, tampilan, prosedur, fungsi, dan pemicu.

  4. Petakan jenis data dari jenis data MySQL ke jenis data SQL Server.

  5. Tulis ulang tampilan, prosedur, dan fungsi Anda sesuai dengan sintaks SQL Server.

  6. Ubah aplikasi Anda seperlunya sehingga dapat terhubung dan bekerja dengan SQL Server 2008.

Setelah konversi database berhasil, migrasikan data Anda dari database MySQL lama ke database SQL Server 2008 yang baru dibuat. Untuk tugas ini, Anda dapat menggunakan Microsoft® SQL Server® Integration Services (SSIS), misalnya.

Mengonversi Objek Database

Anda kemudian perlu mengonversi objek database.

Nama Objek Skema

  • Di SQL Server 2008, panjang nama objek bisa hingga 128 karakter.

  • Nama pengidentifikasi yang tidak dikutip harus mengikuti aturan ini:

    • Karakter pertama harus alfanumerik, garis bawah (_), tanda at (@), atau tanda angka (#).
    • Karakter berikutnya dapat menyertakan karakter alfanumerik, garis bawah, tanda at (@), tanda angka, atau tanda dolar.
    • Pengidentifikasi tidak boleh berupa kata yang dipesan Transact-SQL.
    • Spasi yang disematkan atau karakter khusus tidak diperbolehkan.
  • Pengidentifikasi yang dimulai dengan @ atau tanda angka memiliki arti khusus. Pengidentifikasi yang dimulai dengan @ adalah nama variabel lokal. Yang dimulai dengan tanda angka adalah nama tabel sementara.

  • Untuk mengutip nama pengidentifikasi di Transact-SQL, Anda harus menggunakan kurung siku ([]).

Tabel, Batasan, Indeks, dan Tampilan

  • Konversi tabel dengan menggunakan pemetaan tipe data kolom (lihat Pemetaan Tipe nanti dalam panduan ini).
  • SQL Server 2008 mendukung batasan tabel (kolom) berikut: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, dan CHECK. Mengonversi setiap jenis batasan sesuai dengan sintaks Transact-SQL.
  • Pernyataan SELECT dengan VIEW juga harus dikonversi sesuai dengan sintaks T-SQL SELECT.

Prosedur Tersimpan dan Fungsi yang Ditentukan Pengguna

  • Konversi prosedur dan fungsi tersimpan dengan menggunakan sintaks Transact-SQL.
  • SQL Server 2008 tidak mendukung pernyataan DML dalam fungsi yang ditentukan pengguna. Ini berarti Anda tidak dapat mengubah data apa pun dari dalam fungsi.

Pemicu

  • SQL Server 2008 tidak memiliki pemicu BEFORE.
  • Mengonversi beberapa pemicu BEFORE menjadi satu ALIH-ALIH pemicu.

Memigrasikan Jenis Data MySQL

Anda harus memigrasikan jenis data MySQL. Ikuti pemetaan jenis yang direkomendasikan untuk mengonversi kolom tabel, argumen subroutine, nilai yang dikembalikan, dan jenis data variabel lokal seperti yang ditemukan dalam dokumentasi: http://tinyurl.com/yf9cfcg.

Memigrasikan Fungsi Sistem MySQL

Anda kemudian perlu memigrasikan fungsi sistem MySQL.

Fungsi yang Setara

Fungsi sistem MySQL berikut dapat digunakan seperti dalam kode SQL Server:

ASCII, KIRI, BAWAH, LTRIM, GANTI, BALIK, KANAN, RTRIM, SOUNDEX, RUANG, SUBSTRING, ATAS, ABS, ACOS, ASIN, ATAN, ATAN2, LANGIT-LANGIT, COS, COT, DERAJAT, EXP, LANTAI, LOG, LOG10, PI, KEKUASAAN, RADIAN, RAND, PUTARAN, TANDA, SIN, SQRT, TAN, HARI, BULAN, COALESCE, NULLIF, CAST, CONVERT.

Fungsi yang Tidak Didukung

Fungsi MySQL berikut tidak dapat dengan mudah ditimulasi di SQL Server karena perbedaan organisasi logis dan fisik dan model keamanan:

TOLOK UKUR, CHARSET, KOERSIBILITAS, KOLASE, CRC32, DATE_ADD dengan INTERVAL, DATE_SUB dengan INTERVAL, GET_FORMAT, PERIOD_ADD, PERIOD_DIFF, SUBTIME, TIMESTAMP, TIMESTAMPADD, TIMESTAMPDIFF, MATCH, EXTRACTVALUE, UPDATEXML, GET_LOCK, IS_FREE_LOCK, MASTER_POS_WAIT, RELEASE_LOCK.

Catatan

: Artikel ini merangkum materi dalam: "Panduan untuk Bermigrasi dari MySQL ke SQL Server 2008" oleh Alexander Pavlov, Yuri Rusakov, dan Yuri Turnakov, diterbitkan pada bulan Agustus 2009.*

[1] IBM Corporation. 14 November 2006. Gunakan PHP pada Sistem i, Bagian 1: Pengenalan dan contoh.