Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Jason Lee
Topik ini menjelaskan cara menyesuaikan properti database dengan lingkungan target tertentu sebagai bagian dari proses penyebaran.
Catatan
Topik ini mengasumsikan bahwa Anda menyebarkan proyek database Visual Studio 2010 menggunakan MSBuild.exe dan VSDBCMD.exe. Untuk informasi selengkapnya tentang mengapa Anda dapat memilih pendekatan ini, lihat Penyebaran Web di Perusahaan dan Menyebarkan Proyek Database.
Saat Anda menyebarkan proyek database ke beberapa tujuan, Anda sering ingin menyesuaikan properti penyebaran database untuk setiap lingkungan target. Misalnya, di lingkungan pengujian, Anda biasanya akan membuat ulang database pada setiap penyebaran, sedangkan di lingkungan penahapan atau produksi Anda akan jauh lebih mungkin membuat pembaruan inkremental untuk mempertahankan data Anda.
Dalam proyek database Visual Studio 2010, pengaturan penyebaran terkandung dalam file konfigurasi penyebaran (.sqldeployment). Topik ini akan menunjukkan kepada Anda cara membuat file konfigurasi penyebaran khusus lingkungan dan menentukan yang ingin Anda gunakan sebagai parameter VSDBCMD.
Topik ini merupakan bagian dari serangkaian tutorial berdasarkan persyaratan penyebaran perusahaan dari perusahaan fiktif bernama Fabrikam, Inc. Seri tutorial ini menggunakan solusi sampel— solusi Contact Manager—untuk mewakili aplikasi web dengan tingkat kompleksitas yang realistis, termasuk aplikasi ASP.NET MVC 3, layanan Windows Communication Foundation (WCF), dan proyek database.
Metode penyebaran di jantung tutorial ini didasarkan pada pendekatan file proyek terpisah yang dijelaskan dalam Memahami File Proyek, di mana proses build dikendalikan oleh dua file proyek—satu berisi instruksi build yang berlaku untuk setiap lingkungan tujuan, dan satu berisi pengaturan build dan penyebaran khusus lingkungan. Pada waktu build, file proyek khusus lingkungan digabungkan ke dalam file proyek agnostik lingkungan untuk membentuk serangkaian instruksi build lengkap.
Gambaran Umum Tugas
Topik ini mengasumsikan bahwa:
- Anda menggunakan pendekatan file proyek terpisah untuk penyebaran solusi, seperti yang dijelaskan dalam Memahami File Proyek.
- Anda memanggil VSDBCMD dari file proyek untuk menyebarkan proyek database Anda, seperti yang dijelaskan dalam Memahami Proses Build.
Untuk membuat sistem penyebaran yang mendukung berbagai properti penyebaran database antar lingkungan target, Anda harus:
- Buat file konfigurasi penyebaran (.sqldeployment) untuk setiap lingkungan target.
- Buat perintah VSDBCMD yang menentukan file konfigurasi penyebaran sebagai sakelar baris perintah.
- Parameterisasi perintah VSDBCMD dalam file proyek Microsoft Build Engine (MSBuild), sehingga opsi VSDBCMD sesuai dengan lingkungan target.
Topik ini akan menunjukkan kepada Anda cara melakukan masing-masing prosedur ini.
Membuat File Konfigurasi Penyebaran Environment-Specific
Secara default, proyek database berisi satu file konfigurasi penyebaran bernama Database.sqldeployment. Jika Anda membuka file ini di Visual Studio 2010, Anda dapat melihat berbagai opsi penyebaran yang tersedia untuk Anda:
- Kolase perbandingan penyebaran. Ini memungkinkan Anda memilih apakah akan menggunakan kolamen database proyek Anda (kolamen sumber ) atau kolamen database server tujuan Anda (kolamen target ). Dalam kebanyakan kasus, Anda mungkin ingin menggunakan kolase sumber saat menyebarkan ke lingkungan pengembangan atau pengujian. Saat Anda menyebarkan ke lingkungan penahapan atau produksi, Anda biasanya ingin membiarkan kolase target tidak berubah untuk menghindari masalah interoperabilitas.
- Menyebarkan properti database. Ini memungkinkan Anda memilih apakah akan menerapkan properti database, seperti yang ditentukan dalam file Database.sqlsettings . Saat Anda menyebarkan database untuk pertama kalinya, Anda harus menyebarkan properti database. Jika Anda memperbarui database yang sudah ada, properti harus sudah ada, dan Anda seharusnya tidak perlu menyebarkannya lagi.
- Selalu buat ulang database. Ini memungkinkan Anda memilih apakah akan membuat ulang database target setiap kali Anda menyebarkan atau membuat perubahan inkremental untuk memperbarui database target dengan skema Anda. Jika Anda membuat ulang database, Anda akan kehilangan data apa pun di database yang sudah ada. Dengan demikian, Anda biasanya harus mengatur ini ke false untuk penyebaran ke lingkungan penahapan atau produksi.
- Blokir penyebaran inkremental jika kehilangan data mungkin terjadi. Ini memungkinkan Anda memilih apakah penyebaran harus berhenti jika perubahan pada skema database akan menyebabkan hilangnya data. Anda biasanya mengatur ini ke true untuk penyebaran ke lingkungan produksi, untuk memberi Anda kesempatan untuk mengintervensi dan melindungi data penting apa pun. Jika Anda telah mengatur Selalu buat ulang database ke false, pengaturan ini tidak akan berpengaruh.
- Jalankan penyebaran dalam mode pengguna tunggal. Ini biasanya tidak menjadi masalah dalam lingkungan pengembangan atau pengujian. Namun, Anda biasanya harus mengatur ini ke true untuk penyebaran ke lingkungan penahapan atau produksi. Ini mencegah pengguna membuat perubahan pada database saat penyebaran sedang berlangsung.
- Cadangkan database sebelum penyebaran. Anda biasanya mengatur ini ke true saat Anda menyebarkan ke lingkungan produksi, sebagai tindakan pencegahan terhadap kehilangan data. Anda mungkin juga ingin mengaturnya ke true saat Anda menyebarkan ke lingkungan penahapan, jika database penahapan Anda berisi banyak data.
- Hasilkan pernyataan DROP untuk objek yang ada di database target tetapi tidak ada dalam proyek database. Dalam kebanyakan kasus, ini adalah bagian integral dan penting dari membuat perubahan inkremental pada database. Jika Anda telah mengatur Selalu buat ulang database ke false, pengaturan ini tidak akan berpengaruh.
- Jangan gunakan pernyataan ALTER ASSEMBLY untuk memperbarui jenis CLR. Pengaturan ini menentukan bagaimana SQL Server harus memperbarui jenis runtime bahasa umum (CLR) ke versi rakitan yang lebih baru. Ini harus diatur ke false dalam sebagian besar skenario.
Tabel ini memperlihatkan pengaturan penyebaran umum untuk lingkungan tujuan yang berbeda. Namun, pengaturan Anda mungkin berbeda tergantung pada persyaratan Anda yang tepat.
Pengembang/Pengujian | Penahapan/Integrasi | Produksi | |
---|---|---|---|
Kolase perbandingan penyebaran | Sumber | Target | Target |
Menyebarkan properti database | True | Pertama kali saja | Pertama kali saja |
Selalu buat ulang database | True | FALSE | FALSE |
Memblokir penyebaran bertahap jika kehilangan data mungkin terjadi | Salah | Mungkin | True |
Menjalankan skrip penyebaran dalam mode pengguna tunggal | Salah | True | True |
Mencadangkan database sebelum penyebaran | Salah | Mungkin | True |
Hasilkan pernyataan DROP untuk objek yang ada di database target tetapi tidak ada dalam proyek database | Salah | True | True |
Jangan gunakan pernyataan ALTER ASSEMBLY untuk memperbarui jenis CLR | FALSE | FALSE | FALSE |
Catatan
Untuk informasi selengkapnya tentang properti penyebaran database dan pertimbangan lingkungan, lihat Gambaran Umum Pengaturan Proyek Database, Cara: Mengonfigurasi Properti untuk Detail Penyebaran, Membangun dan Menyebarkan Database ke Lingkungan Pengembangan Terisolasi, dan Membangun dan Menyebarkan Database ke Lingkungan Penahapan atau Produksi.
Untuk mendukung penyebaran proyek database ke beberapa tujuan, Anda harus membuat file konfigurasi penyebaran untuk setiap lingkungan target.
Untuk membuat file konfigurasi khusus lingkungan
Di Visual Studio 2010, di jendela Penjelajah Solusi , klik kanan proyek database Anda, lalu klik Properti.
Pada halaman properti proyek database, pada tab Sebarkan , di baris File konfigurasi penyebaran , klik Baru.
Dalam kotak dialog File Konfigurasi Penyebaran Baru , beri file nama yang bermakna (misalnya, TestEnvironment.sqldeployment), lalu klik Simpan.
Pada halaman [Filename].sqldeployment , atur properti penyebaran agar sesuai dengan persyaratan lingkungan tujuan Anda, lalu simpan file.
Perhatikan bahwa file baru ditambahkan ke folder Properti di proyek database Anda.
Menentukan File Konfigurasi Penyebaran di VSDBCMD
Saat Anda menggunakan konfigurasi solusi (seperti Debug dan Rilis) dalam Visual Studio 2010, Anda dapat mengaitkan file konfigurasi penyebaran dengan setiap konfigurasi. Saat Anda membangun konfigurasi tertentu, proses build menghasilkan file manifes penyebaran khusus konfigurasi yang menunjuk ke file konfigurasi penyebaran khusus konfigurasi. Namun, salah satu tujuan utama dari pendekatan penyebaran yang dijelaskan dalam tutorial ini adalah untuk memberi orang kemampuan untuk mengontrol proses penyebaran tanpa menggunakan Visual Studio 2010 dan konfigurasi solusi. Dalam pendekatan ini, konfigurasi solusinya sama terlepas dari lingkungan penyebaran target. Untuk menyesuaikan penyebaran database Anda dengan lingkungan tujuan tertentu, Anda dapat menggunakan opsi baris perintah VSDBCMD untuk menentukan file konfigurasi penyebaran Anda.
Untuk menentukan file konfigurasi penyebaran di VSDBCMD Anda, gunakan sakelar p:/DeploymentConfigurationFile dan berikan jalur lengkap ke file Anda. Ini akan mengambil alih file konfigurasi penyebaran yang diidentifikasi oleh manifes penyebaran. Misalnya, Anda dapat menggunakan perintah VSDBCMD ini untuk menyebarkan database ContactManager ke lingkungan pengujian:
vsdbcmd.exe /a:Deploy
/manifest:"…\ContactManager.Database.deploymanifest"
/cs:"Data Source=TESTDB1;Integrated Security=true"
/p:TargetDatabase=ContactManager
/p:DeploymentConfigurationFile=
"…\ContactManager.Database_TestEnvironment.sqldeployment"
/dd+
/script:"…\Publish-ContactManager-Db.sql"
Catatan
Perhatikan bahwa proses build dapat mengganti nama file .sqldeployment Anda saat menyalin file ke direktori output.
Jika Anda menggunakan variabel perintah SQL dalam skrip SQL pra-penyebaran atau pasca-penyebaran, Anda dapat menggunakan pendekatan serupa untuk mengaitkan file .sqlcmdvars khusus lingkungan dengan penyebaran Anda. Dalam hal ini, Anda menggunakan sakelar p:/SqlCommandVariablesFile untuk mengidentifikasi file .sqlcmdvars Anda.
Menjalankan Perintah VSDBCMD dari File Proyek MSBuild
Anda dapat memanggil perintah VSDBCMD dari file proyek MSBuild dengan menggunakan tugas Exec dalam target MSBuild. Dalam bentuk yang paling sederhana, akan terlihat seperti ini:
<Target Name="DeployDatabase">
<PropertyGroup>
<_Cmd>
Add your VSDBCMD command here
</_Cmd>
</PropertyGroup>
<Exec Command="$(_Cmd)"/>
</Target>
- Dalam praktiknya, untuk membuat file proyek Anda mudah dibaca dan digunakan kembali, Anda mungkin ingin membuat properti untuk menyimpan berbagai parameter baris perintah. Ini memudahkan pengguna untuk menyediakan nilai properti dalam file proyek khusus lingkungan atau untuk mengambil alih nilai default dari baris perintah MSBuild. Jika Anda menggunakan pendekatan file proyek terpisah yang dijelaskan dalam Memahami File Proyek, Anda harus membagi instruksi build dan properti antara dua file yang sesuai:
- Pengaturan khusus lingkungan, seperti nama file konfigurasi penyebaran, string koneksi database, dan nama database target, harus masuk ke file proyek khusus lingkungan.
- Target MSBuild yang menjalankan perintah VSDBCMD, bersama dengan properti universal apa pun seperti lokasi VSDBCMD yang dapat dieksekusi, harus masuk ke file proyek universal.
Anda juga harus memastikan bahwa Anda membangun proyek database sebelum memanggil VSDBCMD sehingga file .deploymanifest dibuat dan siap digunakan. Anda dapat melihat contoh lengkap pendekatan ini dalam topik Memahami Proses Build, yang memancarkan Anda melalui file proyek di solusi sampel Contact Manager.
Kesimpulan
Topik ini menjelaskan bagaimana Anda dapat menyesuaikan properti database dengan lingkungan tujuan yang berbeda saat Anda menyebarkan proyek database menggunakan MSBuild dan VSDBCMD. Pendekatan ini berguna ketika Anda perlu menyebarkan proyek database sebagai bagian dari solusi skala perusahaan yang lebih besar. Solusi ini sering disebarkan ke beberapa tujuan, seperti lingkungan pengembangan atau pengujian terkotakpasir, platform penahapan atau integrasi, dan lingkungan produksi atau langsung. Masing-masing lingkungan target ini biasanya memerlukan serangkaian properti penyebaran database yang unik.
Bacaan lebih lanjut
Untuk informasi selengkapnya tentang menyebarkan proyek database menggunakan VSDBCMD.exe, lihat Menyebarkan Proyek Database. Untuk informasi selengkapnya tentang menggunakan file proyek MSBuild kustom untuk mengontrol proses penyebaran, lihat Memahami File Proyek dan Memahami Proses Build.
Artikel-artikel tentang MSDN ini memberikan panduan yang lebih umum tentang penyebaran database: