Saya telah mempermainkan bagaimana menyusun jawaban untuk pertanyaan ini sejak awalnya diposting. Ini sulit karena kasus untuk VS2010 bukan tentang menggambarkan fitur dan manfaat alat. Ini adalah tentang meyakinkan pembaca untuk membuat perubahan mendasar dalam pendekatan mereka terhadap pengembangan basis data. Tidak mudah.
Ada jawaban untuk pertanyaan ini dari para profesional basis data yang berpengalaman, dengan campuran latar belakang yang mencakup DBA, pengembang / dba dan OLTP dan pergudangan data. Tidak layak bagi saya untuk mendekati ini untuk setiap aspek pengembangan basis data dalam satu kesempatan, jadi saya akan mencoba dan membuat kasus untuk skenario tertentu.
Jika proyek Anda sesuai dengan kriteria ini, saya pikir ada kasus yang menarik untuk VS2010:
- Tim Anda menggunakan VS2010 untuk pengembangan aplikasi.
- Tim Anda menggunakan TFS untuk kontrol sumber dan membangun manajemen.
- Database Anda adalah SQL Server.
- Tim Anda sudah memiliki, atau tertarik pada, pengujian otomatis VS.
Jika Anda mengevaluasi VS2010 untuk pengembangan basis data, Alkitab Anda akan menjadi Panduan Database Visual Studio dari Visual Studio ALM Rangers . Setiap kutipan yang mengikuti yang tidak memiliki referensi akan berasal dari dokumen ini.
Ayo kita pergi ...
Mengapa proses pengembangan database berbeda dari pengembangan aplikasi?
Data. Jika bukan karena data sial itu, pengembangan basis data akan menjadi sangat mudah. Kami hanya bisa MENGHENTIKAN segalanya pada setiap rilis dan melupakan manajemen perubahan yang merepotkan ini.
Keberadaan data mempersulit proses perubahan basis data karena data sering dimigrasikan, diubah, atau dimuat ulang ketika perubahan diperkenalkan oleh upaya pengembangan aplikasi yang memengaruhi bentuk tabel basis data atau skema data lainnya. Selama proses perubahan ini, data kualitas produksi dan keadaan operasional harus dilindungi terhadap perubahan yang dapat membahayakan integritas, nilai, dan kegunaannya bagi organisasi.
Apa yang salah dengan SSMS?
Ini disebut SQL Server Management Studio karena suatu alasan. Sebagai alat mandiri, tidak praktis untuk mengelola upaya pengembangan Anda jika Anda akan mengikuti praktik terbaik yang diterima.
Dengan skrip saja, untuk menerapkan praktik kontrol sumber mapan yang berarti ke pengembangan Anda, Anda harus mempertahankan kedua definisi objek (misalnya skrip CREATE TABLE) DAN mengubah skrip (mis. ALTER TABLE) DAN bekerja keras untuk memastikan mereka tetap tersinkronisasi.
Rangkaian versi untuk perubahan pada tabel menjadi sangat cepat. Contoh yang sangat sederhana:
-- Version 1
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20))
-- Version 2
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(50))
-- Version 3
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(100))
Pada versi 3, skrip perubahan database berisi:
ALTER TABLE dbo.Widget ADD Description VARCHAR(50)
ALTER TABLE dbo.Widget ALTER COLUMN Description VARCHAR(100)
Jika versi langsung dari database ini adalah versi 1 dan rilis kami berikutnya adalah versi 3, skrip di bawah ini akan menjadi semua yang diperlukan tetapi sebaliknya kedua pernyataan ALTER akan dieksekusi.
ALTER TABLE dbo.Widget ADD Description VARCHAR(100)
Sprint 5 tahun 4 minggu menambahkan hingga beberapa skrip versi menghibur dan membutuhkan penanganan manusia tambahan untuk meminimalkan dampak pada waktu penempatan.
Jadi apakah ada yang salah dengan SSMS? Tidak, ini baik untuk apa, mengelola dan mengelola SQL Server. Apa yang bahkan tidak pura-pura lakukan adalah membantu pengembang database dengan (kadang-kadang) tugas yang sangat kompleks untuk mengelola perubahan.
Jika Anda tidak dapat membangun setiap versi database dari sumber dan memutakhirkan ke versi masa depan, kontrol sumber Anda rusak. Jika tidak, tanyakan pada Eric Sink .
Bagaimana dengan SSMS + <- masukkan alat perbandingan skema ->?
Ini jelas merupakan langkah ke arah yang benar dan menghilangkan banyak upaya manual yang diperlukan untuk memelihara skrip. Tapi (dan itu besar tapi), biasanya ada langkah-langkah manual yang terlibat.
Alat perbandingan skema populer dapat sepenuhnya otomatis dan terintegrasi ke dalam proses pembangunan. Namun, dalam pengalaman saya, praktik yang lebih umum adalah perbandingan dijalankan secara manual, skrip yang dihasilkan mengamati, mengecek ke kontrol sumber, kemudian dieksekusi secara manual untuk digunakan. Tidak baik.
Kapan saja kita manusia yang dapat berbuat salah harus terlibat dalam proses membangun atau penyebaran, kita memperkenalkan risiko dan kita membuat proses itu tidak dapat diulang.
Jika Anda dan tim Anda adalah di antara sedikit yang memiliki perbandingan dan penerapan skema yang sepenuhnya otomatis, silakan berangkat! Kalian adalah yang paling mungkin terbuka untuk manfaat yang ditawarkan VS2010 sebagai:
- Anda telah menerima bahwa langkah-langkah manual berbahaya.
- Anda melihat nilai otomatisasi.
- Anda bersedia menginvestasikan waktu yang diperlukan untuk membuatnya bekerja.
Jika Anda tidak dapat membuat bangunan dalam satu langkah, atau menggunakan dalam satu langkah, proses pengembangan dan penerapan Anda rusak. Jika tidak, tanyakan pada Joel Spolsky .
Mengapa VS2010?
Pertanyaan @NickChammas diajukan adalah mencari fitur pembunuh yang menunjukkan mengapa VS2010 adalah pengubah permainan untuk pengembangan basis data. Saya tidak berpikir saya bisa membuat kasus berdasarkan itu.
Mungkin lucu, di mana orang lain melihat kekurangan dalam alat ini saya melihat alasan kuat untuk diadopsi:
- Anda harus mengubah pendekatan Anda.
- Anda dan tim Anda akan dipaksa untuk bekerja dengan cara yang berbeda.
- Anda harus mengevaluasi dampak dari setiap perubahan, panjangnya, secara terperinci.
- Anda akan dibimbing untuk membuat setiap perubahan menjadi idempoten .
Jika Anda adalah satu-satunya DBA pada suatu proyek, mengelola semua perubahan pada basis data, alasan ini harus terdengar konyol berbatasan dengan tidak masuk akal. Namun, jika Anda berpikir bahwa @BrentOzar benar dan salah satu aturan baru adalah bahwa Everybody's the DBA , Anda harus mengontrol perubahan basis data dengan cara yang dapat digunakan oleh setiap pengembang di tim.
Adopsi Proyek Basis Data mungkin memerlukan perubahan mental ( kebiasaan lama sulit dihilangkan ) untuk beberapa pengembang atau setidaknya perubahan dalam proses atau alur kerja. Pengembang yang telah mengembangkan aplikasi basis data di
mana basis data produksi mewakili versi basis data saat ini akan perlu mengadopsi pendekatan berbasis kode sumber di mana kode sumber menjadi kendaraan di mana perubahan dilakukan pada basis data . Dalam Visual Database Database Projects, proyek dan kode sumber adalah "One Version of the Truth" untuk skema database dan dikelola menggunakan alur kerja SCM yang kemungkinan sudah digunakan oleh pengembang atau organisasi untuk bagian lain dari tumpukan aplikasi mereka. Untuk data, basis data produksi tetap "One Version of the Truth" sebagaimana mestinya.
Kami telah tiba pada perubahan mendasar yang diperlukan untuk berhasil mengadopsi pendekatan VS2010 untuk pengembangan basis data ...
Perlakukan basis data Anda sebagai kode
Tidak ada lagi mengubah database langsung. Setiap perubahan basis data akan mengikuti pola yang sama dengan perubahan aplikasi. Ubah sumber, bangun, gunakan. Ini bukan perubahan arah sementara dari Microsoft, ini adalah masa depan untuk SQL Server . Basis data sebagai kode akan tetap ada.
Pengembang basis data mendefinisikan bentuk objek untuk versi aplikasi, bukan cara memutasikan objek yang ada di mesin basis data ke bentuk yang diinginkan. Anda mungkin bertanya pada diri sendiri: Bagaimana ini bisa diterapkan terhadap database yang sudah berisi tabel pelanggan? Di sinilah mesin penempatan untuk bermain. Seperti disebutkan sebelumnya, mesin penempatan akan mengambil versi kompilasi dari skema Anda dan membandingkannya dengan target penyebaran basis data. Mesin pembeda akan menghasilkan skrip yang diperlukan untuk memperbarui skema target agar sesuai dengan versi yang Anda gunakan dari proyek.
Ya ada alat lain yang mengikuti pola yang sama dan untuk proyek di luar kendala yang saya berikan pada jawaban saya, mereka layak mendapat pertimbangan yang sama. Tapi, jika Anda bekerja dengan Visual Studio dan Team Foundation Server ALM, saya tidak berpikir mereka bisa bersaing.
Apa yang salah dengan proyek basis data VS2010?
Sunting: Jadi, apa gunanya?
@AndrewBickerton disebutkan dalam komentar bahwa saya belum menjawab pertanyaan asli jadi saya akan mencoba dan meringkas "Mengapa saya harus menggunakan Visual Studio 2010 melalui SSMS untuk pengembangan database saya?" sini.
- SSMS bukan alat pengembangan database. Ya, Anda dapat mengembangkan TSQL dengan SSMS tetapi tidak menyediakan fitur IDE yang kaya dari VS2010.
- VS2010 menyediakan kerangka kerja untuk memperlakukan basis data Anda sebagai kode.
- VS2010 membawa analisis kode statis ke kode basis data Anda.
- VS2010 memberi Anda alat untuk mengotomatisasi sepenuhnya siklus uji build-deploy-test.
- SQL2012 dan Visual Studio vNext memperluas kemampuan proyek-proyek database. Berkenalanlah dengan VS2010 sekarang dan Anda akan mulai menggunakan alat pengembangan basis data generasi berikutnya.