Menautkan aplikasi Access ke SQL Server - Azure SQL Database (AccessToSQL)

Jika Anda ingin menggunakan aplikasi Access yang sudah ada dengan SQL Server, Anda bisa menautkan tabel Access asli Anda ke tabel Azure SQL Server atau SQL yang dimigrasikan. Penautan memodifikasi database Access Anda sehingga kueri, formulir, laporan, dan halaman akses data Anda menggunakan data dalam SQL Server atau Azure SQL Database alih-alih data dalam database Access Anda.

Catatan

Tabel Access Anda tetap berada di Access, tetapi tidak diperbarui bersama dengan pembaruan SQL Server atau SQL Azure. Setelah Menautkan tabel dan memverifikasi fungsionalitas, Anda mungkin ingin menghapus tabel Access Anda.

Menautkan tabel Access dan SQL Server

Saat Anda menautkan tabel Access ke tabel SQL Server atau SQL Azure, mesin database Jet menyimpan informasi koneksi dan metadata tabel, tetapi data disimpan di SQL Server atau SQL Azure. Penautan ini memungkinkan aplikasi Access Anda beroperasi terhadap tabel Access meskipun tabel dan data aktual berada di SQL Server atau SQL Azure.

Catatan

Jika Anda menggunakan Autentikasi SQL Server, kata sandi Anda disimpan dalam teks yang jelas pada tabel Access tertaut. Sebaiknya gunakan Autentikasi Windows.

Untuk menautkan tabel

  1. Di Access Metadata Explorer, pilih tabel yang ingin Anda tautkan.

  2. Klik kanan Tabel, lalu pilih Tautkan.

SQL Server Migration Assistant (SSMA) untuk Access mencadangkan tabel Access asli dan membuat tabel tertaut.

Setelah Anda menautkan tabel, tabel di SSMA muncul dengan ikon tautan kecil. Di Access, tabel muncul dengan ikon "tertaut", yang merupakan bola dunia dengan panah yang menunjuk ke dalamnya.

Saat Anda membuka tabel di Access, data diambil menggunakan kursor set kunci. Akibatnya, untuk tabel besar, semua data tidak diambil sekaligus. Namun, saat Anda menelusuri tabel, Access mengambil data tambahan seperlunya.

Penting

Untuk menautkan tabel akses dengan database Azure, Anda memerlukan SQL Server Native Client (SNAC) versi 10.5 atau lebih tinggi.
Anda dapat memperoleh versi terbaru SNAC dari Paket Fitur Microsoft® SQL Server ® 2008 R2.

Membatalkan tautan tabel Access

Saat Anda membatalkan tautan tabel Access dari tabel SQL Server atau SQL Azure, SSMA memulihkan tabel Access asli dan datanya.

Untuk membatalkan tautan tabel

  1. Di Access Metadata Explorer, pilih tabel yang ingin Anda batalkan tautannya.

  2. Klik kanan Tabel, lalu pilih Batalkan Tautan.

Menautkan tabel ke server lain

Jika Anda telah menautkan tabel Access ke satu instans SQL Server dan nantinya Anda ingin mengubah tautan ke instans lain, Anda harus menautkan ulang tabel.

Untuk menautkan tabel ke server lain

  1. Di Access Metadata Explorer, pilih tabel yang ingin Anda batalkan tautannya.

  2. Klik kanan Tabel lalu pilih Batalkan tautan.

  3. Klik tombol Sambungkan kembali ke SQL Server.

  4. Koneksi ke instans SQL Server atau SQL Azure yang ingin Anda tautkan tabel Access.

  5. Di Access Metadata Explorer, pilih tabel yang ingin Anda tautkan.

  6. Klik kanan Tabel, lalu pilih Tautkan.

Memperbarui tabel tertaut

Jika definisi tabel SQL Server atau SQL Azure diubah, Anda dapat membatalkan tautan lalu menautkan ulang tabel di SSMA dengan menggunakan prosedur yang diperlihatkan sebelumnya dalam topik ini. Anda juga bisa memperbarui tabel dengan menggunakan Access.

Untuk memperbarui tabel tertaut dengan menggunakan Access

  1. Buka database Access.

  2. Di daftar Objek , klik Tabel.

  3. Klik kanan tabel tertaut, lalu pilih Pengelola Tabel Tertaut.

  4. Pilih kotak centang di samping setiap tabel tertaut yang ingin Anda perbarui, lalu klik OK.

Kemungkinan masalah pascamigrasi

Bagian berikut ini mencantumkan masalah yang mungkin terjadi di aplikasi Access yang sudah ada setelah Anda memigrasikan database dari Access ke SQL Server atau SQL Azure lalu menautkan tabel, bersama dengan penyebab dan resolusinya.

Performa lambat dengan tabel tertaut

Menyebabkan: Beberapa kueri mungkin lambat setelah peningkatan ukuran karena alasan berikut:

  • Aplikasi bergantung pada fungsi yang tidak ada di SQL Server atau SQL Azure, yang menyebabkan Jet menarik tabel secara lokal untuk menjalankan kueri SELECT.

  • Kueri yang memperbarui atau menghapus banyak baris dikirim oleh Jet sebagai kueri berparameter untuk setiap baris.

Resolusi: Konversikan kueri yang berjalan lambat menjadi kueri pass-through, prosedur tersimpan, atau tampilan. Mengonversi ke kueri pass-through memiliki masalah berikut:

  • Kueri pass-through tidak dapat dimodifikasi. Memodifikasi hasil kueri atau menambahkan rekaman baru harus dilakukan dengan cara alternatif, seperti dengan memiliki tombol Ubah atau Tambahkan eksplisit pada formulir Anda yang terikat ke kueri.

  • Beberapa kueri memerlukan input pengguna, tetapi kueri pass-through tidak mendukung input pengguna. Input pengguna dapat diperoleh dengan kode Visual Basic for Applications (VBA) yang meminta parameter, atau dengan formulir yang digunakan sebagai kontrol input. Dalam kedua kasus, kode VBA mengirimkan kueri dengan input pengguna ke server.

Kolom kenaikan otomatis tidak diperbarui sampai rekaman diperbarui

Menyebabkan: Setelah memanggil RecordSet.AddNew di Jet, kolom penambahan otomatis tersedia sebelum rekaman diperbarui. Ini tidak berlaku di SQL Server atau SQL Azure. Nilai baru kolom identitas nilai baru hanya tersedia setelah menyimpan rekaman baru.

Resolusi: Jalankan kode Visual Basic untuk Aplikasi (VBA) berikut sebelum mengakses bidang identitas:

Recordset.Update  
Recordset.Move 0,  
Recordset.LastModified  

Rekaman baru tidak tersedia

Menyebabkan: Saat Anda menambahkan rekaman ke SQL Server atau SQL tabel Azure dengan menggunakan VBA, jika bidang indeks unik tabel memiliki nilai default dan Anda tidak menetapkan nilai ke bidang tersebut, rekaman baru tidak muncul sampai Anda membuka kembali tabel di SQL Server atau SQL Azure. Jika Anda mencoba untuk mendapatkan nilai dari rekaman baru, Anda menerima pesan kesalahan berikut:

Run-time error '3167' Record is deleted.

Resolusi: Saat Anda membuka tabel SQL Server atau SQL Azure dengan menggunakan kode VBA, sertakan dbSeeChanges opsi , seperti dalam contoh berikut:

Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)

Setelah migrasi, beberapa kueri tidak akan mengizinkan pengguna untuk menambahkan rekaman baru

Menyebabkan: Jika kueri tidak menyertakan semua kolom yang disertakan dalam indeks unik, Anda tidak dapat menambahkan nilai baru dengan menggunakan kueri.

Resolusi: Pastikan bahwa semua kolom yang disertakan dalam setidaknya satu indeks unik adalah bagian dari kueri.

Anda tidak dapat mengubah skema tabel tertaut dengan Access

Menyebabkan: Setelah memigrasikan data dan menautkan tabel, pengguna tidak dapat mengubah skema tabel di Access.

Resolusi: Ubah skema tabel dengan menggunakan SQL Server Management Studio, lalu perbarui tautan di Access.

Menyebabkan: Setelah memigrasikan data, hyperlink dalam kolom kehilangan fungsionalitasnya dan menjadi kolom nvarchar(max) sederhana.

Resolusi: Tidak.

Beberapa tipe data SQL Server tidak didukung oleh Access

Menyebabkan: Jika nanti Anda memperbarui SQL Server atau SQL tabel Azure untuk berisi tipe data yang tidak didukung oleh Access, Anda tidak dapat membuka tabel di Access.

Resolusi: Anda bisa menentukan kueri Access yang hanya mengembalikan baris tersebut dengan tipe data yang didukung.

Lihat juga

Memigrasikan Database Access ke SQL Server