Я розмовляв із тим, як структурувати відповідь на це питання, оскільки він був опублікований спочатку. Це складно, оскільки справа у VS2010 не стосується опису функцій та переваг цього інструменту. Йдеться про переконання читача зробити принциповий зрух у своєму підході до розробки баз даних. Нелегко.
На це питання є відповіді досвідчених професіоналів баз даних, у яких довідковий мікс охоплює DBA, розробник / dba та OLTP та зберігання даних. Мені не під силу підходити до цього для кожного аспекту розвитку бази даних в один засідання, тому я спробую скласти справу для конкретного сценарію.
Якщо ваш проект відповідає цим критеріям, я думаю, що для VS2010 є вагомий випадок:
- Ваша команда використовує VS2010 для розробки додатків.
- Ваша команда використовує TFS для управління джерелами та управління побудовою.
- Ваша база даних - SQL Server.
- У вашій команді вже є або цікавиться автоматизоване тестування VS.
Якщо ви оцінюєте VS2010 для розробки баз даних, вашою біблією буде посібник по базі даних Visual Studio від Visual Studio ALM Rangers . Будь-які цитати, які не мають посилань, будуть з цього документа.
Ми підемо тоді ...
Чому процес розробки баз даних відрізняється від розробки додатків?
Дані. Якби не ці примхливі дані, розробка бази даних була б хитрою. Ми могли просто скинути все на кожен реліз і забути про це клопітке управління змінами.
Наявність даних ускладнює процес зміни бази даних, оскільки дані часто мігруються, трансформуються або перезавантажуються, коли зміни вносяться зусиллями з розробки додатків, які впливають на форму таблиць бази даних або інших схем даних. Протягом цього процесу змін дані про якість виробництва та стан експлуатації повинні бути захищені від змін, які можуть загрожувати її цілісності, цінності та корисності для організації.
Що не так із SSMS?
Його називають причиною SQL Server Management Studio. Як самостійний інструмент, керувати своїми зусиллями з розробки, недоцільно, якщо ви збираєтесь дотримуватися прийнятих найкращих практик.
Тільки для сценаріїв, щоб доречно застосувати усталені практики управління джерелами до своєї розробки, вам доведеться підтримувати обидва визначення об'єктів (наприклад, сценарій CREATE TABLE) та змінювати сценарії (наприклад, ALTER TABLE) та наполегливо працювати над тим, щоб вони залишалися синхронізованими.
Ланцюжок версій змін для таблиці досить швидко виходить. Дуже спрощений приклад:
-- 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))
До версії 3 сценарій зміни бази даних містить:
ALTER TABLE dbo.Widget ADD Description VARCHAR(50)
ALTER TABLE dbo.Widget ALTER COLUMN Description VARCHAR(100)
Якщо в реальній версії цієї бази даних є версія 1, а наш наступний реліз - версія 3, сценарій нижче буде усім необхідним, але натомість обидва твердження ALTER будуть виконані.
ALTER TABLE dbo.Widget ADD Description VARCHAR(100)
5 років 4 тижні спринти додають до деяких розважальних сценаріїв версій і вимагають додаткової роботи, щоб мінімізувати вплив на час розгортання.
Так чи не так у SSMS? Ні, це добре для того, що його корисно, адміністрування та керування SQL сервером. Те, що він навіть не претендує на те, це допомогти розробнику бази даних з (часом) дуже складною задачею управління змінами.
Якщо ви не можете створити кожну версію бази даних від джерела та оновити її до будь-якої майбутньої версії, ваш джерело контролю порушено. Якщо ви так не думаєте, запитайте Еріка Сінка .
Що щодо SSMS + <- вставити інструмент порівняння схеми ->?
Це, безумовно, крок у правильному напрямку та забирає значну частину ручних зусиль, необхідних для підтримки сценаріїв. Але (і це велике, але), як правило, є ручні кроки.
Популярні засоби порівняння схем можуть бути повністю автоматизовані та інтегровані в процес збирання. Однак, на моєму досвіді, більш поширеною практикою є порівняння, яке проводиться вручну, отримані сценарії підкреслюються, перевіряються в керування джерелом, а потім виконуються вручну для розгортання. Не добре.
У будь-який момент, коли ми маємо помилкових людей, потрібно втягуватися в процес збирання або розгортання, ми вводимо ризик і робимо процес не повторюваним.
Якщо ви та ваша команда є одними з небагатьох, які мають повністю автоматизоване порівняння схем та розгортання, шапки вам! Ви, хлопці, найімовірніше, можете відкрити переваги, які може запропонувати VS2010 як:
- Ви вже прийняли, що дії вручну небезпечні.
- Ви бачите значення автоматизації.
- Ви готові вкласти час, необхідний для роботи.
Якщо ви не можете створити збірку за один крок або розгорнути в один крок, процес розробки та розгортання порушений. Якщо ви так не думаєте, запитайте Джоела Спольського .
Чому VS2010?
Поставлене запитання @NickChammas шукає вбивць, які демонструють, чому VS2010 - це зміна ігор для розробки баз даних. Я не думаю, що я можу скласти справу на цій основі.
Можливо, комічно, коли інші бачать недоліки в цьому інструменті, я бачу вагомі причини прийняття:
- Вам доведеться змінити свій підхід.
- Ви та ваша команда будете змушені працювати по-іншому.
- Вам доведеться детально оцінити вплив кожної зміни.
- Ви будете орієнтуватися на те, щоб зробити кожну зміну ідентичною .
Якщо ви є єдиним DBA проекту, керуючи всіма змінами в базі даних, ці міркування повинні здаватися смішними, що межують з абсурдними. Якщо ви думаєте, що у @BrentOzar є пункт, і одне з нових правил - це те, що всі є DBA , вам потрібно буде контролювати зміну бази даних таким чином, з яким може працювати кожен розробник у команді.
Прийняття проектів баз даних може вимагати зрушення психічного розвитку ( старі звички важко порушити ) для деяких розробників або принаймні змінити процес чи робочі процеси. Розробникам, які розробили додатки для баз даних,
де виробнича база даних представляє поточну версію бази даних, потрібно буде прийняти підхід, заснований на вихідному коді, коли вихідний код стає засобом, до якого вносяться зміни в бази даних . У проектах баз даних Visual Studio проект та вихідний код є "Єдиною версією правди" для схеми бази даних і керується за допомогою робочих процесів SCM, які, ймовірно, вже використовуються розробником чи організацією для інших частин стеку їхніх додатків. Для даних виробнича база даних залишається такою, якою вона має бути, "Єдиною версією правди".
Ми досягли принципового зрушення, необхідного для успішного використання підходу VS2010 до розробки баз даних ...
Трактуйте свою базу даних як код
Більше не змінюється жива база даних. Кожна зміна бази даних буде дотримуватися тієї ж схеми, що і зміна програми. Змінення джерела, створення, розгортання. Це не тимчасова зміна напрямку від Microsoft, це майбутнє для SQL Server . База даних як код залишається тут.
Розробник бази даних визначає форму об’єкта для версії програми, а не як мутувати існуючий об'єкт в двигуні бази даних до потрібної форми. Ви можете запитати себе: як це розгортається проти бази даних, яка вже містить таблицю клієнтів? Тут грає двигун розгортання. Як уже згадувалося раніше, двигун розгортання візьме складену версію вашої схеми та порівняє її з цільовим націленням на базу даних. Двигун розрізнення створить необхідні сценарії для оновлення цільової схеми відповідно до версії, яку ви розгортаєте з проекту.
Так, є й інші інструменти, що дотримуються подібної схеми, і для проектів, що не відповідають тим обмеженням, які я поставив у своїй відповіді, вони варті однакового розгляду. Але, якщо ви працюєте з Visual Studio і Team Foundation Server ALM, я не думаю, що вони можуть конкурувати.
Що не так з проектами баз даних VS2010?
- Вони не ідеальні . Але якщо вам відомі обмеження та проблемні області, ви можете їх вирішити.
- Складні рухи даних все ще потребують уважності та уваги, але вони задовольняються сценаріями до / після розміщення.
Редагувати: Тож у чому тобі суть?
@AndrewBickerton в коментарі зазначив, що я не відповів на початкове запитання, тому спробую підсумувати "Чому я повинен використовувати Visual Studio 2010 через SSMS для розробки моєї бази даних?" тут.
- SSMS не є інструментом розробки баз даних. Так, ви можете розробити TSQL за допомогою SSMS, але він не забезпечує багатих функцій IDE VS2010.
- VS2010 пропонує основу для трактування вашої бази даних як коду.
- VS2010 приносить статичний аналіз коду до коду вашої бази даних.
- VS2010 надає вам інструменти для повної автоматизації циклу збирання-розгортання.
- SQL2012 та Visual Studio vNext розширюють можливості проектів баз даних. Ознайомтеся з VS2010 зараз, і ви ознайомилися з інструментами розробки баз даних нового покоління.