VWD2005 menyertakan SQL Server 2005 Express Edition, versi gratis dari SQL Server 2005 yang ditargetkan untuk pengembang non-profesional atau antusias yang ingin membangun aplikasi dengan solusi database sederhana. Karena SQL Server Express mendukung model pemrograman SQL Server yang lengkap, seperti SQLCLR, T-SQL, prosedur tersimpan, tampilan, pemicu, dan tipe data XML, Anda dapat menggunakan SQL Server Express untuk mempelajari teknologi ini dan memastikan bahwa aplikasi Anda dapat berjalan Pada platform tingkat yang lebih tinggi (seperti SQL Server Enterprise Edition). SQL Server Express mudah diunduh dan dipasang (kurang dari 36MB), dan disertakan dengan Visual Studio 2005 dan Visual Web Developer 2005.
Visual Studio menyertakan alat untuk manajemen database, seperti Database Explorer dan Query Builder, yang bisa Anda gunakan untuk mengelola database SQL Server Express. Visual Studio juga mendukung database berbasis file baru untuk membangun database SQL Server Express sebagai bagian dari proyek. Pada saat yang sama, Visual Studio 2005 dan SQL Server 2005 Express memberikan solusi lengkap untuk membangun dan menyebarkan aplikasi Web berbasis data, termasuk fitur berikut:
· Item data proyek database
· Koneksi database lokal
· Manajemen browser database
· String koneksi jalur relatif
· Dukungan penyebaran XCopy
· Dukungan debugging terintegrasi
Artikel ini menjelaskan pendekatan database berbasis file di Visual Studio 2005 dan bagaimana perancang membuat dan menggunakan database ini.
Pengembang Web Visual dan
Pengembang Web DataVisual menyediakan sejumlah alat untuk menggunakan database dengan aplikasi Web. Anda dapat menggunakan Browser Database untuk menyambungkan ke database dengan mudah dan membuat atau melihat diagram atau skema database. Anda juga bisa menggunakan kotak dialog pembuat kueri dan tabel hasil kueri untuk mengkueri database dan mengisi data. Membuat database baru (menggunakan file lokal) juga disediakan sebagai item data proyek.
Setelah Anda terhubung ke database di Visual Web Developer, Anda dapat menarik dan melepas tabel database langsung ke halaman untuk membuat kontrol GridView terikat data. Pengembang Web Visual secara otomatis membuat kontrol sumber data terkait dan mengonfigurasi operasi pilih, perbarui, sisipkan, dan hapus berdasarkan tabel data. Pengoperasian cepat ini menghemat banyak pekerjaan yang diperlukan untuk membuat sumber data secara manual, dan Anda dapat dengan mudah mengganti GridView dengan kontrol terikat data yang sesuai sesuai kebutuhan.
Database Lokal dan Server
Anda mungkin sudah familiar dengan database berbasis server dan string koneksi. Dalam hal ini, server database (seperti SQL Server 2005) mengaitkan nama database dengan file database yang dikelola oleh server. Anda dapat menyambung ke database berbasis server dengan menentukan nama server, nama database, dan kredensial, misalnya:
"server=(local)SQLExpress;database=Pubs;Integrated Security=true"
Namun, Visual Studio 2005 juga mendukung konsep database lokal, yaitu file yang ditambahkan ke direktori App_Data aplikasi web saat ini. Aman untuk menyimpan file data di direktori App_Data karena isi direktori ini tidak akan pernah menanggapi permintaan pengguna. Direktori ini juga merupakan lokasi yang direkomendasikan untuk menyimpan file XML dan penyimpanan data lainnya. Basis data SQL Server Express asli memiliki ekstensi .MDF (seperti "MyDatabase.MDF"), yang merupakan format file standar yang didukung oleh SQL Server. Saat tersambung ke server, database juga memiliki file log terkait (seperti "MyDatabase_log.LDF"). Lokasi file database dan file log harus bersamaan.
Kita dapat secara otomatis melampirkan database file lokal ke SQL Server Express dengan menggunakan string koneksi jalur relatif. Jalur relatif memastikan bahwa koneksi database tidak akan terputus ketika aplikasi dipindahkan ke lokasi lain. String koneksi jalur relatif dalam aplikasi web terlihat seperti ini:
"server=(local)SQLExpress;AttachDbFileName=|DataDirectory|MyDatabase.mdf;Integrated Security=true;User Instance=true"
String koneksi di atas memiliki dua atribut tambahan lagi . Properti AttachDbFileName menentukan lokasi file database yang secara dinamis dilampirkan ke server saat koneksi dibuka. Meskipun properti ini dapat menerima jalur lengkap ke database (misalnya menggunakan sintaks |DataDirectory|), saat runtime jalur ini akan digantikan oleh direktori App_Data aplikasi. Hal ini juga memastikan koneksi tidak terputus saat aplikasi dipindahkan ke lokasi lain. Properti kedua adalah User Instance=true, yang menentukan bagaimana SQL Server Express melampirkan database. Dalam hal ini, SQL Server Express membuat proses baru untuk melampirkan database ke instance baru, berjalan sebagai pengguna yang membuka koneksi. Dalam aplikasi ASP.NET, pengguna ini adalah akun ASPNET lokal atau Layanan Jaringan default, bergantung pada sistem operasi. Untuk melampirkan file database yang disediakan oleh akun non-administrator (seperti akun ASP.NET) dengan aman, perlu membuat contoh pengguna SQL Server terpisah.
Harap dicatat: Karena secara default, semua aplikasi ASP.NET berjalan dalam proses yang sama, semua aplikasi akan melampirkan database lokal ke contoh SQL Server Express yang sama. Ini berarti bahwa semua aplikasi memiliki akses yang sama ke semua database yang dilampirkan pada instance ini, terlepas dari database mana aplikasi tersebut awalnya dilampirkan. Untuk mengisolasi aplikasi yang berbeda, Anda harus menjalankan setiap aplikasi dalam proses pekerja atau kumpulan aplikasi yang berbeda (di IIS 6). Oleh karena itu, database SQL Server lokal terutama ditujukan untuk memfasilitasi pengembangan dan tidak dimaksudkan untuk menggantikan database berbasis server di lingkungan hosting bersama.
Poin penting lainnya adalah dua pengguna tidak diperbolehkan terhubung ke database lokal secara bersamaan. Saat merancang aplikasi di Visual Studio, perancang secara otomatis melepaskan koneksi untuk memastikan bahwa Visual Studio dan ASP.NET dapat berbagi file database (misalnya, saat men-debug aplikasi yang sedang berjalan di perancang).
Membuat database lokal
Anda dapat dengan mudah membuat database lokal di proyek aplikasi Web Visual Studio. Karena Visual Studio dilengkapi dengan SQL Server Express yang terinstal, Anda dapat menggunakan langkah-langkah berikut untuk membuat database lokal, menambahkan tabel, dan mengisi data.
Untuk membuat database lokal:
1. Klik kanan pada Solution Browser dan pilih opsi "Tambahkan Item Baru...".
2. Pilih item "SQL Database" dan tentukan nama file, misalnya "Database.mdf".
3. Visual Studio meminta untuk menambahkan file ini ke direktori App_Data. Klik "Ya".
4. Visual Studio menambahkan file ini dan secara otomatis terhubung ke database menggunakan Database Browser.
Untuk menambahkan tabel data ke database lokal:
1. Klik kanan node Tabel di browser database dan pilih opsi "Tambahkan Tabel Baru".
2. Masukkan nama dan tipe kolom dalam database, dan secara opsional atur properti kolom lainnya di tabel properti. Untuk menyiapkan contoh database Kontak, ikuti langkah-langkah di bawah ini.
3. Tetapkan nama kolom pertama menjadi "ContactID" dan tipe data menjadi "int". Hapus centang pada kotak centang "Izinkan null".
4. Klik kanan kotak abu-abu di sebelah kiri kolom ContactID dan pilih opsi "Set as Primary Key".
5. Pada tabel "Properti Kolom" di bawah, perluas node "Spesifikasi Pengidentifikasi" dan setel "Apakah ini pengidentifikasi" ke "Ya".
6. Tetapkan nama kolom kedua menjadi "ContactName" dan tipe datanya menjadi "varchar(50)". Biarkan kotak centang "Izinkan Nulls" dicentang.
7. Tekan Ctrl-S untuk menyimpan tabel dan atur nama tabel menjadi "Kontak". Klik OK untuk menyimpan tabel.
8. Tutup jendela definisi tabel.
Untuk mengisi tabel dengan data:
1. Klik kanan node tabel data (misalnya, "Kontak") di Browser Database dan pilih opsi "Tampilkan Data Tabel".
2. Masukkan data untuk baris tabel data pada formulir yang ditampilkan. Jika Anda menggunakan contoh Kontak di atas, Anda dapat memasukkan nilai di kolom ContactName dan database akan secara otomatis menghasilkan nilai ContactID yang sesuai.
3. Tutup jendela tabel.
Mengikat ke database lokal
Untuk mengikat ke database lokal, Anda perlu mengkonfigurasi kontrol sumber data ASP.NET untuk menyambung ke file menggunakan koneksi jalur relatif. Untuk sekadar mengikat database SQL Server Express ke kontrol SqlDataSource dan GridView, gunakan langkah-langkah berikut:
1. Klik dua kali halaman di Solution Browser (misalnya, "Default.aspx"). Visual Studio akan membuka halaman ini.
2. Pilih tab "Tampilan Desain" di bagian bawah jendela halaman untuk beralih ke tampilan desain.
3. Klik dua kali file database (misalnya "Database.mdf") di Solution Browser. Visual Studio membuka browser database untuk koneksi.
4. Perluas node Tabel untuk menampilkan tabel dalam database.
5. Tarik dan lepas tabel di Browser Database ke halaman terbuka dalam tampilan Desain. Visual Studio membuat GridView terikat ke kontrol SqlDataSource.
6. Perluas "Panel Transaksi Cerdas" pada kontrol GridView dan pilih paging, pengurutan, dan pengeditan.
7. Tekan Ctrl-F5 untuk menjalankan halaman (tanpa debugging).
Contoh berikut menunjukkan kontrol GridView dan SqlDataSource yang terhubung ke database lokal. Untuk menjalankan contoh ini, akun proses ASP.NET harus memiliki izin baca/tulis ke file MDF dan LDF di direktori ~/App_Data. Proses pengaturan izinnya adalah sebagai berikut:
1. Pilih file ~/App_Data/Database.MDF di browser Windows dan pilih "Properties".
2. Pilih tab "Keamanan" dan klik "Tambah".
3. Klik "Lokasi...", pilih nama komputer Anda (di bagian atas daftar), dan klik "OK".
4. Di area teks Nama Objek, masukkan nama akun proses ASP.NET. Secara default, nama di IIS 6.0 adalah "Layanan Jaringan" dan di IIS 5.x adalah "ASPNET".
5. Pilih "Baca" dan "Tulis" pada kolom "Izinkan" dan klik "OK".
6. Jika terdapat file LDF di direktori App_Data, Anda perlu mengulangi langkah di atas untuk mengatur properti file LDF.
Jika Anda menggunakan Visual Studio untuk membangun aplikasi di komputer lokal Anda, maka secara default, Anda memiliki izin di atas pada direktori App_Data. Jika file database perlu mengubah izin setelah dilampirkan, Anda harus menutup domain aplikasi terlebih dahulu sebelum izin baru dapat diterapkan.
<asp:GridView AllowSorting="Benar" AutoGenerateColumns="Salah" DataKeyNames="ContactID" DataSourceID="SqlDataSource1" ID="GridView1" runat="server">
<Kolom>
<asp:BoundField DataField="ContactID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="NamaKontak" HeaderText="Nama" SortExpression="Nama" />
</Kolom>
</asp:Tampilan Grid>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ContactsDatabase %>" ID="SqlDataSource1" runat="server" SelectCommand="PILIH [ContactID], [ContactName] FROM [Contacts]" OnSelected="SqlDataSource1_Selected"></ asp:SqlDataSource>
Menyebarkan database lokal
Salah satu kelebihan file database lokal adalah dapat menemani aplikasi, dipindahkan sebagai bagian dari aplikasi ke lokasi lain atau ke komputer lain (tentu saja komputer tersebut juga harus menjalankan SQL Server Cepat). Saat memindahkan database, file harus dalam keadaan tidak terkunci. File dikunci saat perancang atau aplikasi terhubung ke database. Untuk membuka kunci, semua koneksi aktif ke database harus ditutup. Anda dapat menggunakan teknik berikut untuk menutup koneksi database:
· Jika ASP.NET telah membuka koneksi, Anda dapat menutup domain aplikasi dengan menambahkan file "app_offline.htm" ke direktori root aplikasi web. Fungsinya untuk menutup domain aplikasi (bukan proses) dan mengalihkan semua permintaan aplikasi ke file ini (mengembalikan kode respons 404). Jika ingin me-restart aplikasi, hapus saja file ini. Harap dicatat bahwa hanya menutup koneksi dalam kode halaman tidak akan melepaskan kunci file, karena secara default, kumpulan koneksi ADO.NET mempertahankan koneksi aktif.
Visual Studio menyediakan fitur Copy Web, yang dapat menyalin file aplikasi dari direktori kerja ke server target menggunakan xcopy, FTP, atau ekstensi server FrontPage. Komputer target bisa lokal atau jarak jauh. Anda dapat memanggil fitur Salin Web dengan memilih "Situs Web > Salin Situs Web..." dari bilah menu Visual Studio.
Meskipun Anda dapat menggunakan Copy Web atau operasi xcopy atau FTP sederhana untuk memindahkan database, agar aplikasi dapat terus bekerja, komputer target harus menjalankan SQL Server Express (dengan nama contoh yang sama). Kami telah menyebutkan sebelumnya bahwa karena semua aplikasi yang menjalankan ASP.NET terhubung ke contoh SQL yang sama, semua aplikasi di komputer target harus saling percaya. Jika satu aplikasi tidak dapat melihat database aplikasi lain, sebaiknya gunakan pendekatan berbasis server (menggunakan otentikasi SQL atau teknik pemisahan lainnya) daripada database lokal. Jika Anda menggunakan SQL Server Express sebagai alat pengembangan, Anda perlu menyalin konten database SQL Server Express ke pelanggan sebagai bagian dari penyebaran produksi.