Visual Studio 2010 memperkenalkan proyek - proyek basis data dan berbagai fitur terkait yang seharusnya memfasilitasi pengembangan basis data. Saya telah menggunakan SQL Server Management Studio (SSMS) selama bertahun-tahun untuk melakukan pengembangan database saya tanpa masalah.
- Mengapa saya harus repot dengan VS2010 ketika SSMS bekerja untuk saya? Apa, khususnya, yang lebih baik dari SSMS?
- Tapi mungkin premis saya salah dan SSMS masih mengalahkan VS untuk pengembangan basis data. Jika demikian, dengan cara spesifik apa itu benar?
tools
ssms
visual-studio
visual-studio-2010
Nick Chammas
sumber
sumber
Jawaban:
Sebenarnya saya agak underwhelmed dengan VS2010, jujur saja. Saya pikir sekolah tua membuat skrip tabel dan file untuk prosedur tersimpan lebih mudah untuk dikerjakan. Jika Anda memerlukan manajemen skema maka Anda bisa mendapatkan Redgate SQL Compare Pro dengan harga beberapa ratus dolar.
Jika Anda benar-benar membutuhkan alat pemodelan basis data maka Powerdesigner atau bahkan Erwin melakukan pekerjaan yang jauh lebih baik, meskipun mereka tidak terlalu murah.
Meskipun saya lebih suka SSMS saya sudah menggunakan keduanya. Beberapa pro dan kontra:
SSMS memiliki antarmuka pengguna yang 'berfungsi' dengan baik untuk pengembangan SQL. Hanya dengan membangun dan menggunakan skrip kreasi jauh lebih nyaman daripada VS2010 hoop memaksa Anda untuk melompati. Jauh lebih fleksibel (+ SSMS).
VS2010 memiliki manajemen skema dasar (yaitu pembuatan skrip perbedaan / tambalan) (+ VS2010). Namun itu tidak semua yang baik dan memiliki beberapa kekurangan. Misalnya cocok dengan batasan nama. Jika Anda memiliki centang atau batasan default pada kolom tanpa menamai mereka, SQL Server menghasilkan nama acak di belakang layar. Ini akan membingungkan VS2010 jika Anda menginstal skrip pada mesin yang berbeda karena kendala mungkin memiliki nama yang berbeda. Redgate lebih murah dan lebih baik. (+ VS2010, tetapi cacat).
VS2010 benar-benar canggung - Anda harus memiliki satu file untuk setiap tabel atau objek DB lainnya. Pada dasarnya Anda harus melakukan hal-hal dengan cara VS2010, yang cukup rumit. (- VS2010)
VS2010 Juga agak rapuh dan integrasi kontrol sumber tidak merata. Bahkan pada database sederhana setiap tabel, batasan, prosedur tersimpan, indeks dan objek database lainnya adalah file sendiri. File dapat ditambahkan ke proyek sepanjang waktu, jauh lebih cepat daripada proyek pemrograman biasa dengan (katakanlah) C #. Dengan konkurensi optimis, ia cenderung untuk secara diam-diam melepaskan file dari proyek saat check-in tidak sinkron. Bahkan dengan disiplin tim yang baik, umpan balik dari UI tentang status sangat buruk. Ini akan menjadi bencana pada model yang kompleks. (-VS2010 - Saya hampir menganggap itu sebuah cacat yang hebat untuk proyek besar).
SSMS hadir dengan SQL Server - tidak dapat mengalahkan harganya (+ SSMS).
VS2010 masih tidak memiliki repositori yang tepat seperti (katakanlah) PowerDesigner atau Oracle Designer. Anda tidak dapat dengan mudah meminta model data tanpa menginstalnya ke dalam basis data. (- VS2010).
Secara keseluruhan, saya akan menilai VS2010 tentang B-. Itu canggung pada proyek database yang relatif sederhana dengan dua tabel fakta dan sekitar 15 dimensi.
Model data terbesar yang pernah saya lakukan adalah untuk sistem manajemen kasus pengadilan, yang memiliki sekitar 560 tabel. Saya tidak akan merekomendasikan VS2010 untuk proyek sebesar itu (saya melakukan itu pada Oracle Designer). Pada dasarnya itu berusaha menjadi pintar dan paradigma tidak benar-benar bekerja dengan baik. Anda lebih baik dengan alat pemodelan terbaik seperti PowerDesigner atau hanya menggunakan membuat skrip tabel dengan tangan.
SSMS sederhana dan dapat diandalkan tetapi manual. Anda memiliki cukup banyak kontrol tanpa batas atas bagaimana Anda ingin mengelola model. Gabungkan dengan skema manajer seperti Redgate SQL Compare dan mungkin alat pemodelan yang layak seperti PowerDesigner dan Anda memiliki paket yang jauh lebih baik daripada VS2010.
Ringkasan Saya tidak yakin saya bisa mengutip fitur atau manfaat pembunuh selain dari integrasi (mungkin) dengan solusi VS yang mengandung proyek lain. Jika Anda sudah memiliki VS2010 premium atau ultimate maka Anda mendapatkan alat pengembangan database yang agak cacat dilemparkan dengan rantai alat .Net Anda. Ini akan mengintegrasikan proyek DB ke dalam solusi VS Anda, sehingga Anda dapat menggunakannya untuk membuat skrip penerapan sproc setidaknya.
Namun, VS tidak memiliki alat pemodelan untuk dibicarakan, sehingga PowerDesigner atau bahkan Erwin lebih baik dalam hal itu. Manajemen skema Redgate jauh lebih baik dan SQL Compare Pro cukup murah (sekitar £ 400 IIRC). SSMS IMHO bekerja lebih baik untuk pengembangan T-SQL tetapi Anda tentu bisa melakukannya dengan VS2010.
VS2010 premium tidak jauh lebih murah daripada alat pemodelan database terbaik dan VS2010 ultimate setidaknya sama mahalnya. Dengan mengorbankan integrasi yang erat dengan proyek VS Anda, Anda mungkin bisa melakukan lebih baik dengan alat pihak ketiga.
Sebuah alternatif
Saya kira kita tidak boleh terlalu banyak memboros VS2010 tanpa menyarankan setidaknya satu alternatif dan menguraikan pro dan kontra. Untuk keperluan ini saya akan menganggap proyek besar. Meskipun saya terutama melakukan pekerjaan A / P hari ini saya telah terlibat dalam proyek 100+ staf tahun di mana saya melakukan model data (dan beberapa pekerjaan pengembangan) dan beberapa lainnya dalam kisaran 10 staf-tahun, di mana saya terutama bekerja sebagai analis atau pengembang. Sebagian besar saya bekerja pada sistem data warehouse hari ini, tetapi proyek-proyek besar terutama aplikasi. Berdasarkan pengalaman saya dengan berbagai alat, berikut adalah beberapa saran untuk rantai alat alternatif:
Kelebihan: Pemodelan basis data yang lebih baik dan manajemen skema dari pada VS2010, sistem kontrol versi yang lebih baik, lebih mudah untuk menyesuaikan build dan alur kerja proyek, manajemen spesifikasi dan dokumentasi yang lebih baik.
Cons: Lebih banyak upaya untuk mengintegrasikan alat, membatasi integrasi DB ke dalam proses pembangunan.
Asumsi: Mengasumsikan bahwa kontrol terhadap proses perubahan / rilis lebih penting daripada manajemen rilis otomatis atau terintegrasi ketat untuk skema DB. Juga mengasumsikan bahwa manajemen skema DB otomatis tidak dapat diandalkan 100%.
Tidak terlalu berteknologi tinggi atau terintegrasi dengan apik, tetapi untuk proyek yang kompleks Anda mungkin lebih tertarik pada kontrol daripada fitur otomatis yang imut. Saya berpendapat bahwa Anda lebih baik dengan seperangkat alat berkembang biak terbaik dan apa pun pembuatan bir buatan rumah dan pengujian skrip diperlukan untuk mengintegrasikannya. Coba saja buat build (a) relatif sederhana untuk dipahami dan (b) sepenuhnya otomatis.
QA pada tambalan DB. Pada skema besar Anda mungkin ingin memiliki proses patching manual untuk sistem live, terutama jika patch melibatkan migrasi data. Misalnya, mungkin diinginkan untuk memiliki skrip roll-forward dan roll-back untuk mendukung mencadangkan perubahan jika perlu. Dalam hal ini Anda akan ingin memiliki fasilitas untuk menguji apakah tambalan benar-benar berfungsi dengan baik. Jika Anda mengelola skema basis data dalam repositori, Anda dapat menguji skrip dengan mengatur sebelum database dan membuat basis data referensi dari repositori. Menjalankan skrip tambalan pada basis data sebelum harus menyinkronkannya dengan model repositiry. Alat perbandingan skema dapat digunakan untuk menguji ini.
Saya telah melakukan lebih banyak data warehouse dan pekerjaan integrasi daripada pengembangan aplikasi dipesan lebih dahulu akhir-akhir ini, jadi saya menemukan ini lebih sering daripada tim pengembang dalam banyak kasus. Namun, alat dan metodologi manajemen proyek melakukan pekerjaan yang sangat buruk dalam mengelola pemangku kepentingan eksternal. Dalam proyek integrasi seperti gudang data, saya benar-benar ingin melihat alat manajemen proyek yang benar-benar mendorong dependensi eksternal (yaitu yang tidak saya kendalikan) di hadapan manajemen program. Pada proyek integrasi non-sepele, ketergantungan eksternal sejauh ini merupakan pendorong terbesar dari waktu yang terbuang.
sumber
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:
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.
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:
Pada versi 3, skrip perubahan database berisi:
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.
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:
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:
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.
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.
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.
sumber
VS mungkin tampak bagus jika Anda tidak tahu SSMS atau telah menggunakan alat pihak ke-3. Kesenjangan dalam VS menonjol jika Anda menggunakan alat Gerbang Merah untuk perbandingan skema dll. Dan plug-in SSMS gratis juga.
Bit kontrol sumber menyesatkan: apa yang ada di database produksi adalah salinan referensi Anda. Bukan apa yang digunakan pengembang. Lihat
sumber
Saya menggunakan Visual Studio secara ekstensif (well, BIDS) untuk desain laporan SSR, dan paket SSIS. Saya tidak bisa melakukannya dengan sangat baik, jika tidak, di Studio Manajemen. Visual Studio adalah lingkungan pengembangan yang jauh lebih lengkap dan terintegrasi, dan itu menghubungkan ke sistem Kontrol Sumber jauh lebih baik juga. Dan itu semua tercermin dalam harga!
sumber
Sejujurnya, suara saya langsung ke SQL Server Management Studio untuk desain database, pengembangan, dan administrasi (jelas). Cukup mudah untuk mengetik:
Kemudian klik di semua tempat yang tepat. SSMS adalah tata letak yang hebat dan sangat cocok untuk digunakan. Dan saya pada dasarnya adalah pengembang perangkat lunak .NET. Tetapi ketika datang ke desain database dan coding saya akan memilih SSMS 11 kali dari 10.
sumber
Tidak ada praktik terbaik, tetapi dengan proyek database VS 2010 dan pengontrol kode sumber (VSS 2010, Subversion, dll.) Anda dapat membuat versi database Anda.
Saya sarankan Anda terlebih dahulu mendesain database Anda langsung ke SSMS. Setelah database Anda hampir siap, impor ke proyek database VS 2010. Setelah impor selesai, Anda harus selalu menambahkan skrip baru ke dalam proyek basis data Anda untuk melacak semua modifikasi. Anda dapat menggunakan fitur bandingkan proyek basis data untuk mendapatkan semua perubahan dari server pengembangan dan mengimpor semua skrip tersebut langsung ke proyek Anda. Anda sekarang hanya perlu "melakukan" perubahan Anda ke dalam pengontrol kode sumber Anda.
Dengan metode ini, Anda dapat memiliki database berversi. Anda dapat melihat versi setiap modifikasi dan mengembalikan perubahan Anda.
Ini bukan satu-satunya keuntungan. Dengan proyek semacam ini, Anda dapat membandingkan basis data apa pun dengan proyek Anda dengan skrip perubahan dan dengan prompt perintah SQL PowerShell, Anda dapat memperbarui semua basis data Anda dengan skrip yang sama: skrip ini adalah skema XML dari basis data Anda. Ini hanya akan menjalankan perintah yang diperlukan untuk memperbarui basis data Anda. Anda juga memiliki kemungkinan untuk membuat unit test di database Anda. Artikel bagus lainnya untuk proyek basis data tersedia di sini . Dengan fitur penyebaran, Anda dapat memiliki skrip pra dan skrip. Dengan skrip tersebut Anda dapat memiliki validasi atau memasukkan data ke tabel sistem Anda.
Berikut ini adalah prosedur langkah demi langkah yang baik untuk proyek basis data.
sumber
Saya menggunakan SSMS lebih dari yang saya lakukan VS2010 karena ada ketika saya menginstal SQL Server. Itu mungkin yang paling penting mengapa SSMS digunakan lebih dari VS2010, IMHO.
Saya juga menemukan bahwa vendor seperti Red-Gate mengeluarkan alat yang berintegrasi dengan SSMS dan belum tentu VS2010. Ini bisa positif karena memungkinkan Anda untuk meningkatkan SSMS di mana Microsoft belum. Salah satu contohnya adalah Red-Gate's SQL Source Control, yang merupakan tambahan untuk SSMS yang memungkinkan Anda untuk menghubungkan SSMS ke sistem Kontrol Sumber perusahaan Anda apakah itu Visual Team Foundation atau apa pun yang Anda miliki. VS2010 memiliki built-in ini tetapi dibandingkan dengan harga alat Reg-Gate, saya hanya menghemat banyak uang tanpa harus membeli VS2010.
Saya pikir secara keseluruhan tergantung pada preferensi, Anda bekerja dengan apa yang Anda sukai. Jika Anda melatih orang baru dan Anda melatih mereka pada VS2010 maka itu akan menjadi preferensi mereka karena mereka tahu bagaimana cara mengatasinya.
Jika Anda mulai bermain dengan SQL Server 2012 Anda mungkin telah memperhatikan bahwa SSMS mendapatkan riasan VS2010 perlahan tapi pasti. Jadi pada akhirnya Anda mungkin tidak bisa membedakan antara keduanya.
sumber