Mengapa saya harus menggunakan Visual Studio 2010 melalui SSMS untuk pengembangan database saya?

42

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?
Nick Chammas
sumber
2
Dari jawaban akumulasi sejauh ini, saya menduga responden tidak menggunakan salah satu VS2010 alat database dengan cara yang dimaksudkan.
Mark Storey-Smith
2
@ MarkStorey-Smith - Ya, dan saya akan mengguncang semua orang minggu depan dengan jawaban saya. Dari apa yang saya pelajari dan digunakan sejauh ini, VS 2010 adalah yang alat untuk pengembangan database.
Nick Chammas
Sebenarnya, Anda sudah memiliki proyek database di versi Visual Studio sebelumnya, tetapi mereka hanya tersedia di edisi Premium, IIRC.
gonsalu
1
Versi sebelumnya sangat berbeda.
Mark Storey-Smith
Saya hanya menggunakan SSMS. SSMS sepenuhnya mampu melakukan apa yang perlu dilakukan. Server kami tidak perlu tahu apa yang ada di sana ...
Asken

Jawaban:

27

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:

  • VS2010 profesional atau lebih tinggi. Anda mungkin atau mungkin tidak ingin menggunakan fitur manajemen proyek premium atau ultimate.
  • Subversion, AnkhSVN dan TortoiseSVN - Lebih baik daripada TFS setiap hari dan bermain bagus dengan VS. Ini juga cukup setuju untuk bertani dari repositori lokal untuk alur kerja pengembangan bersamaan.
  • SSMS untuk pengembangan T-SQL - Manajemen proyek dan integrasi SC tidak begitu baik tetapi berfungsi dengan baik untuk pekerjaan pengembangan DB.
  • VS2010 proyek DB untuk melacak file sproc - sedikit canggung jika Anda menggunakan SSMS tetapi berfungsi OK. Ini juga akan menghasilkan skrip penerapan.
  • PowerDesigner - Lebih baik dalam memodelkan basis data dan mengelola item skema DB. Itu juga tidak UML jika Anda ingin masuk ke MDA. Jika Anda ingin mengarahkan desain DB Anda dari model objek, Anda mungkin mempertimbangkan Sparx EA sebagai gantinya. Itu melakukan pekerjaan terbaik Meta CASE (model meta extensible) dari alat CASE yang pernah saya lihat, meskipun pemodelan basis datanya meninggalkan sesuatu yang diinginkan.
  • SQL Bandingkan pro - Gunakan ini untuk menghasilkan skrip tambalan DB atau untuk menguji skrip tambalan manual (lihat 1 di bawah).
  • Framemaker - Fitur groupware yang jauh lebih stabil dan lebih baik daripada Word jika Anda memiliki banyak analis yang mengerjakan spec. Ini juga mendukung inklusi bersyarat, sehingga Anda dapat memiliki rilis versi dari spec dengan perubahan WIP yang disembunyikan. MIF dan MML memudahkan mengintegrasikan dokumen API dan kamus data ke dalam dokumen spesifikasi. Ini cukup berguna untuk melakukan ini karena Anda dapat referensi silang mereka dalam spesifikasi. Jangkar label tekstual membuat referensi silang stabil di seluruh impor ulang. Anda juga dapat menggunakan TCS untuk sumber tunggal dokumen ke output PDF, HTML dan CHM.
  • Pelacak masalah open-source - Banyak yang open-source yang bagus (misalnya TRAC, Bugzilla untuk menyebutkan pasangan yang saya gunakan). Sumber terbuka lebih mudah untuk memodifikasi atau mengintegrasikan ke dalam alur kerja kustom dan Anda tidak bisa mengalahkan harganya.
  • NUnit atau alat pengujian lainnya - alat pengujian otomatis apa pun yang paling sesuai dengan kebutuhan Anda.
  • Apa pun kecuali proyek MS - Dianggap berbahaya. Proyek MS sangat mencari ke dalam dan memaksa rencana proyek ke dalam model yang tidak secara efektif mewakili ketidakpastian, risiko atau ketergantungan pada pemangku kepentingan atau pihak ketiga lainnya (lihat 2 di bawah).

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.

  1. 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.

  2. 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.

ConcernedOfTunbridgeWells
sumber
Terima kasih telah memperbarui jawaban Anda dengan semua detail ini. Itu jauh lebih berharga sekarang.
Nick Chammas
2
Tidak setuju pada satu file per objek menjadi rumit. Ini bukan cara VS2010, ini kontrol sumber 101. Anda tidak mendefinisikan beberapa kelas C # dalam satu file, bukan?
Mark Storey-Smith
2
Jujur, saya tidak mengikuti. Pertama, alat mengelola file-file itu untuk Anda, itu tidak menambah overhead pada produktivitas saya. Kedua, tabel, kunci, indeks, dan batasan dipisahkan karena a) mereka adalah objek yang terpisah, secara logis dan fisik b) Anda sering memanipulasinya secara terpisah misalnya menjatuhkan dan membuat ulang indeks sebagai bagian dari refactor yang melibatkan pergerakan data.
Mark Storey-Smith
1
Pernyataan sapu seperti 'alat mengelola file untuk Anda' tidak sangat membantu, karena pengamatan saya adalah bahwa mereka tidak jelas - setidaknya tidak andal. VS2010 mungkin berfungsi OK untuk satu pengguna; itu tidak bekerja dengan baik untuk tim. Pengalaman saya adalah bahwa mitra emas MS mengalami kesulitan mengelola data mart akuntansi sederhana dengan ini. Bukan orang-orangnya.
ConcernedOfTunbridgeWells
2
@ConcernedOfTunbridgeWells tolong jangan melihat komentar saya sebagai antagonis atau argumentatif dengan cara apa pun, itu bukan maksud saya. Saya sangat tertarik untuk mendengar mengapa VS2010 tidak diadopsi secara lebih luas, karena saya sering membuat alasan bagi tim untuk menjelajahinya. Jika Anda dapat meluangkan waktu untuk berdiskusi lebih terinci , saya akan tertarik mendengar pendapat Anda.
Mark Storey-Smith
19

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.
Mark Storey-Smith
sumber
Agak jawaban yang bermanfaat dengan beberapa peringatan: 1) Anda melewatkan kriteria "Anda sedang mengembangkan aplikasi mandiri yang dikirim ke situs klien (yaitu: ada banyak salinan dari database yang sama di alam dan yang baru [kosong] sedang dibuat / terjual sepanjang waktu) "2) Anda telah menjawab mengapa kami harus memperlakukan basis data sebagai kode dan mengelola pengembangan, pembuatan, penyebaran siklus (yang sudah saya setujui). Saya tidak melihat alasan kuat dalam jawaban Anda mengapa kami harus menggunakan VS2010 sebagai mekanisme untuk mencapainya. +2 (jawaban bijaksana) & -1 (tidak menjawab pertanyaan sebenarnya)
Andrew Bickerton
2
Apa "IDE kaya" yang Anda butuhkan untuk skrip SQL?
gbn
1
Manfaat dari siklus build-deploy-test otomatis terlihat di hilir. Bagian otomatis dari penyebaran langsung yang akan saya batasi adalah "lepas tangan" yaitu tidak memerlukan langkah manual.
Mark Storey-Smith
1
Selain itu, argumen Anda untuk integrasi memiliki beberapa kelebihan. Seberapa baik kerjanya dalam kasus umum? Saya punya masalah dengan itu, tapi saya berani mengatakan itu bisa dibuat bekerja.
ConcernedOfTunbridgeWells
2
@Nick Saya akan melakukannya untuk Anda :-)
Jack Douglas
7

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

gbn
sumber
1
Saya harus setuju dengan ini - Anda dapat melakukan desain / pengembangan DB dan manajemen skema dengan VS2010 tetapi ada rantai alat pihak ketiga yang melakukan cara ini, jauh lebih baik.
ConcernedOfTunbridgeWells
1
Mengapa Anda mengambil produksi sebagai salinan referensi Anda? Saya pikir itu praktik yang buruk, dan mungkin juga pertanda bahwa kontrol sumber Anda rusak. Mengapa kode basis data Anda tidak termasuk dalam siklus hidup pengembangan seperti yang lainnya?
Nick Chammas
@NickChammas: Maksud saya salinan produksi yang dipulihkan. Di toko saya saat ini, apa yang ada dalam kontrol sumber tidak cocok dengan DB langsung. Terakhir saya, mirip untuk tim lain. Apa yang digunakan melalui skrip perubahan bukanlah yang sedang dikerjakan pengembang ...
gbn
6

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!

Peter Schofield
sumber
6

Sejujurnya, suara saya langsung ke SQL Server Management Studio untuk desain database, pengembangan, dan administrasi (jelas). Cukup mudah untuk mengetik:

create table newTable
(
    someId int identity(1, 1) not null primary key clustered,
    ...... you get the idea
)

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.

Thomas Stringer
sumber
Di Visual Studio Anda ketikkan DDL meja Anda persis dengan cara yang sama. Apakah Anda memikirkan hal lain?
Nick Chammas
1
@Nick Saya mungkin mengatakan itu salah. Saya tahu Anda bisa melakukan itu di VS, tapi saya senang memiliki alat khusus untuk tugas spesifik (dan besar) yang ada. Saya benar-benar binatang buas, dan saya sudah menjadikan SSMS kebiasaan saya. :)
Thomas Stringer
2
Sangat? Solusi SSMS / kemampuan proyek terasa seperti ditambahkan oleh magang 2 minggu sebelum peluncuran.
Mark Storey-Smith
1
@ MarkStorey-Smith adalah pertanyaannya kemudian tentang bagaimana SSMS tidak benar-benar memiliki dukungan proyek / solusi dan itu penting untuk membiarkan tim bekerja dengan baik dalam IDE di seluruh papan?
jcolebrand
3
Satu liner adalah SSMS adalah alat administrasi basis data, VS2010 adalah alat pengembangan basis data.
Mark Storey-Smith
5

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.

Nico
sumber
4
Ini bukan bagaimana pengembangan basis data di VS2010 harus dilakukan, Anda tampaknya telah melewatkan poinnya. 1) Mengapa satu bumi Anda mendesain database greenfield di SSMS kemudian mengimpor ke VS? 2) Anda tidak harus "selalu menambahkan skrip baru ke dalam proyek basis data Anda" untuk melacak perubahan. 3) Skrip bukan "skema xml" dari database Anda.
Mark Storey-Smith
Pernahkah Anda mencoba proyek basis data? 1 - Karena Anda hanya dapat mengimpor database Anda sekali jadi jika Anda tidak ingin skrip semua lakukan maksimal Anda dapat dalam SSMS untuk draft database pertama. 2- Anda benar, Anda dapat melacak perubahan dengan alat pembanding VS2010 dan VS2010 akan menghasilkannya untuk Anda. 3 - Cobalah proyek basis data, ketika Anda akan menggunakan proyek basis data Anda, Anda akan mendapatkan skema XML dari basis data Anda untuk memperbarui basis data produksi Anda.
Nico
2
Ya, sejak versi awal dan lebih menyakitkan . Anda memang akan mengimpor sekali tetapi Anda menyinkronkan banyak (bukan berarti Anda harus melakukannya, kecuali jika Anda terus bekerja di luar lingkungan). Deskripsi yang lebih akurat tentang apa yang Anda rujuk sebagai skrip 'Skema XML' adalah bahwa alat mempertahankan model meta-basis data berbasis xml, yang digunakan oleh alat penyebaran baris perintah untuk membuat perintah yang diperlukan untuk memperbarui database target. .
Mark Storey-Smith
2

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.

Shawn Melton
sumber