Почему я должен использовать Visual Studio 2010 для SSMS для разработки моей базы данных?

Visual Studio 2010 представляет проекты баз данных и целый ряд связанных функций, которые якобы облегчают работу с базой данных развитие. Я уже много лет использую SQL Server Management Studio (SSMS) для разработки моей базы данных без проблем.

  • Почему я должен беспокоиться о VS2010, когда SSMS работает для меня? Что конкретно делает он лучше SSMS?
  • Но, возможно, мое предположение неверно, и SSMS все еще превосходит VS для разработки базы данных. Если да, то какими конкретными способами это верно?
41 голос | спросил Nick Chammas 5 62011vEurope/Moscow11bEurope/MoscowSat, 05 Nov 2011 01:52:26 +0400 2011, 01:52:26

7 ответов


26

На самом деле, я был немного недоволен VS2010, если честно. Я думаю, что старая школа создает табличный скрипт, а файлы для хранимых процедур легче работать. Если вам требуется управление схемой, вы можете получить Redgate SQL Compare Pro за несколько сотен долларов.

Если вам действительно нужен инструмент моделирования базы данных, Powerdesigner или даже Erwin делают гораздо лучшую работу, хотя они не особенно дешевы.

Хотя я предпочитаю SSMS, я использовал оба. Некоторые плюсы и минусы:

  • SSMS имеет пользовательский интерфейс, который «хорошо работает» для разработки SQL. Просто строить и использовать скрипты создания гораздо удобнее, чем обручи VS2010 заставляют вас прыгать. Многое, гораздо более гибкое (+ SSMS).

  • VS2010 имеет базовое управление схемой (т. е. создание сценария разности /патча) (+ VS2010). Однако это не все так хорошо и имеет некоторые недостатки. Например, он соответствует ограничениям на имя. Если у вас есть проверки или ограничения по умолчанию для столбца без их именования, SQL Server генерирует случайное имя за кулисами. Это будет путать VS2010, если вы установите скрипт на другой машине, поскольку ограничения могут иметь разные имена. Redgate дешевле и лучше. (+ VS2010, но ошибочно).

  • VS2010 действительно неуклюже - вам нужно иметь один файл для каждой таблицы или другого объекта базы данных. По сути, вы должны делать что-то VS2010, что довольно громоздко. (- VS2010)

  • VS2010 Является также довольно хрупкой, а интеграция с контролем источника является шелушащейся. Даже в простой базе данных каждая таблица, ограничение, хранимая процедура, индекс и другой объект базы данных - это собственный файл. Файлы добавляются в проект все время, намного быстрее, чем типичный проект программирования с (скажем) C #. С оптимистичным параллелизмом он имеет тенденцию молча отбрасывать файлы из проекта, так как проверки не синхронизируются. Даже с хорошей командной дисциплиной отзывы от пользовательского интерфейса о статусе очень плохие. Это было бы катастрофой на сложной модели. (-VS2010 - я бы почти счел, что ошибка остановки шоу для большого проекта).

  • SSMS поставляется с SQL Server - не может победить цену (+ SSMS).

  • VS2010 по-прежнему не имеет соответствующего репозитория, такого как, скажем, PowerDesigner или Oracle Designer. Вы не можете легко запросить модель данных, не устанавливая ее в базу данных. (- VS2010).

В целом, я бы оценил VS2010 о B-. Это было неудобно в относительно простом проекте базы данных с двумя таблицами фактов и около 15 измерений.

Самая большая модель данных, которую я когда-либо делал, была для системы управления судебными делами, которая имела около 560 таблиц. Я бы не рекомендовал VS2010 для проекта такого размера (я сделал это в Oracle Designer). По сути, он пытается быть умным, и парадигма действительно не работает так хорошо. Вам лучше работать с лучшим в своем классе инструментом моделирования, например PowerDesigner, или просто с помощью создания скриптов таблицы вручную.

SSMS простой и надежный, но ручной. У вас почти бесконечный контроль над тем, как вы хотите управлять моделью. Объедините его с менеджером схемы, таким как Redgate SQL Compare и, возможно, достойным инструментом моделирования, таким как PowerDesigner, и у вас гораздо лучший пакет, чем VS2010.

<сильный> Резюме Я не уверен, что могу процитировать любые функции или преимущества убийцы, кроме (возможно) интеграции с решениями VS, содержащими другие проекты. Если у вас уже есть VS2010 premium или ultimate, вы получаете несколько ошибочный инструмент для разработки базы данных, который добавляется в вашу цепочку инструментов .Net. Он будет интегрировать проекты БД в ваше решение VS, поэтому вы можете использовать его для создания сценариев развертывания sproc по крайней мере.

Однако у VS нет инструмента моделирования, о котором можно говорить, поэтому PowerDesigner или даже Erwin лучше по этому счету. Управление схемой Redgate намного лучше, а SQL Compare Pro довольно дешево (около 400 фунтов стерлингов). IMHO SSMS работает намного лучше для разработки T-SQL, но вы можете сделать это с VS2010.

Премия VS2010 не намного дешевле, чем лучший в своем классе инструмент для моделирования базы данных, а VS2010 - это, по крайней мере, так же дорого. За счет тесной интеграции с вашим проектом VS вы, вероятно, могли бы улучшить работу с сторонними инструментами.

Альтернативный

Я думаю, что не стоит слишком сильно удалять VS2010, не предлагая хотя бы одну альтернативу и не излагая ее плюсы и минусы. Для этого я возьму на себя большой проект. Хотя в основном я занимаюсь A /P, в настоящее время я участвую в проекте с более чем 100-летним персоналом, где я сделал модель данных (и некоторые разработки) и еще несколько человек в 10-летнем диапазоне, где я в основном работал как аналитик или разработчик. В основном я работаю над системами хранилищ данных в эти дни, но более крупные проекты были в основном приложениями. Основываясь на моем опыте работы с различными инструментами, вот несколько предложений для альтернативной цепочки инструментов:

  • VS2010 профессионал или выше. Вы можете или не хотите использовать функции управления проектом премиум-класса илиКонечная.
  • Subversion, AnkhSVN и TortoiseSVN - Лучше, чем TFS в любой день, и отлично играет с VS. Это также вполне приемлемо для ведения сельского хозяйства локальных хранилищ для параллельных разработок.
  • SSMS для разработки T-SQL - управление проектами и интеграция с SC не так хороши, но хорошо работают для разработки БД.
  • Проект VS2010 DB для отслеживания файлов sproc - немного неуклюжий, если вы используете SSMS, но работает нормально. Он также будет генерировать сценарии развертывания.
  • PowerDesigner - лучший способ моделирования базы данных и управления элементами схемы БД. Он также делает UML, если вы хотите сильно проникнуть в MDA. Если вы хотите управлять дизайном БД из объектной модели, вы можете вместо этого использовать Sparx EA. Он выполняет лучшую работу Meta CASE (расширяемой метамодели) любого инструмента CASE, который я видел, хотя его моделирование базы данных оставляет желать лучшего.
  • SQL Compare pro - используйте это для создания сценариев исправлений БД или для проверки ручных патч-скриптов (см. ниже).
  • Framemaker - гораздо более стабильные и лучшие функции групповой работы, чем Word, если у вас несколько аналитиков, работающих над спецификацией. Он также поддерживает условное включение, поэтому вы можете отключить версии версии спецификации с изменениями WIP. MIF и MML упрощают интеграцию документов API и словарей данных в спецификации. Это очень полезно сделать, поскольку вы можете перекрестно ссылаться на них в спецификации. Ярлыки текстовых меток делают перекрестные ссылки стабильными при повторном импорте. Вы также можете использовать TCS для одностраничного документа для вывода PDF, HTML и CHM.
  • Отслеживание ошибок с открытым исходным кодом - много хороших open-source (например, TRAC, Bugzilla, чтобы назвать пару, которую я использовал). С открытым исходным кодом проще модифицировать или интегрировать в пользовательский рабочий процесс, и вы не можете победить цену.
  • NUnit или другие инструменты тестирования - любые автоматические средства тестирования наиболее подходят вашим требованиям.
  • Ничего, кроме проекта MS - считается вредным. Проект MS очень вовнутрь и заставляет проектные планы в модель, которая фактически не представляет неопределенности, риска или зависимости от заинтересованных сторон или других третьих сторон (см. Ниже).

Плюсы: Улучшенное моделирование баз данных и управление схемами, чем VS2010, улучшенная система управления версиями, упрощает настройку потока работ по строительству и проектам, улучшает управление спецификациями и документацией.

Минусы: Больше усилий для интеграции инструментов, ограниченная интеграция с БД в процесс сборки.

Предположения: Предполагается, что управление процессом изменения /выпуска более важно, чем автоматическое или тесно интегрированное управление выпуском для схем БД. Также предполагается, что автоматическое управление схемой БД не на 100% надежнее.

Не очень высокотехнологичная или гладкая интеграция, но для сложного проекта вы, вероятно, больше заинтересованы в контроле, чем в симпатичных автоматизированных функциях. Я бы сказал, что вам лучше использовать набор лучших инструментов для разведения, и для их интеграции необходимо создавать скрипты для сборки и тестирования на дому. Просто постарайтесь, чтобы сборка (а) была относительно простой для понимания и (б) полностью автоматизирована.

  1. QA для патчей DB. На большой схеме вы можете захотеть иметь ручной процесс исправления для живых систем, особенно если исправления связаны с миграцией данных. Например, может быть желательно иметь сценарии перемотки вперед и назад, чтобы поддерживать, при необходимости, отмену изменений. В этом случае вы захотите иметь возможность проверить, работает ли исправление. Если вы управляете схемой базы данных в репозитории, вы можете протестировать скрипты, настроившись перед базами данных и создав базу данных ссылок из репозитория. Запуск скрипта патча перед предыдущей базой данных должен синхронизировать его с моделью repositiry. Инструмент сравнения схем можно использовать для проверки этого.

  2. В последнее время я делал гораздо больше хранилищ данных и интеграции, чем разработку приложений на заказ, поэтому я встречаюсь чаще, чем команда разработчиков в большинстве случаев. Однако инструменты и методологии управления проектами очень плохо справляются с управлением внешними заинтересованными сторонами. В проекте интеграции, таком как хранилище данных, я действительно хочу увидеть инструмент управления проектами, который действительно подталкивает внешние зависимости (т. Е. Те, которые я не контролирую) перед лицом управления программой. В любом нетривиальном проекте интеграции внешние зависимости, безусловно, являются самыми большими причинами потери времени.

ответил ConcernedOfTunbridgeWells 5 62011vEurope/Moscow11bEurope/MoscowSat, 05 Nov 2011 03:22:22 +0400 2011, 03:22:22
18

Я играл с тем, как структурировать ответ на этот вопрос, поскольку он был первоначально опубликован. Это сложно, поскольку в случае VS2010 речь не идет об описании функций и преимуществ инструмента. Речь идет о том, чтобы убедить читателя в фундаментальном изменении подхода к разработке баз данных. Нелегко.

Есть ответы на этот вопрос от опытных специалистов по базам данных, с фоном, охватывающим DBA, разработчиком /dba, и OLTP, и хранилищем данных. Для меня нецелесообразно подходить к этому для каждого аспекта разработки базы данных за один присест, поэтому я попытаюсь сделать случай для конкретного сценария.

Если ваш проект соответствует этим критериям, я думаю, что для VS2010 есть убедительный аргумент:

  • Ваша команда использует VS2010 для разработки приложений.
  • Ваша команда использует TFS для управления версиями и управления построением.
  • Ваша база данных - это SQL Server.
  • Ваша команда уже имеет или интересуется автоматизированным тестированием VS.

Если вы оцениваете VS2010 для разработки базы данных, ваша библия будет Руководством по базе данных Visual Studio из Visual Studio ALM Rangers . Любые кавычки, которые следуют, которые не имеют ссылок, будут из этого документа.

Отключимся, тогда ...

Почему процесс разработки базы данных отличается от разработки приложений?

Data. Если бы не эти надоедливые данные, разработка базы данных была бы неудачей. Мы могли бы просто ПОТРЕБИТЬ все в каждом выпуске и забыть об этом сложном управлении изменениями.

  

Существование данных усложняет процесс изменения базы данных, поскольку   данные часто переносятся, преобразуются или перезагружаются, когда изменения   введенные усилиями по разработке приложений, которые влияют на форму   таблицы базы данных или другие схемы данных. В течение всего этого изменения   процесс, данные о качестве производства и рабочем состоянии должны быть   защищены от изменений, которые могут поставить под угрозу его целостность, ценность,   и полезность для организации.

Что случилось с SSMS?

Это называется SQL Server Management Studio по какой-то причине. В качестве автономного инструмента нецелесообразно управлять своими усилиями по развитию , если вы будете следовать принятым передовым методам.

С помощью только сценариев для значительного применения установленных методов управления версиями для вашей разработки вам необходимо будет поддерживать оба определения объектов (например, сценарий CREATE TABLE) и сценарии изменения (например, ALTER TABLE) и много работать, чтобы убедиться, что они остаются синхронизированными.

Цепочка версий для изменений в таблице довольно быстро удалась. Очень упрощенный пример:

  - Версия 1
CREATE TABLE dbo.Widget (WidgetId INT, имя VARCHAR (20))

- Версия 2
CREATE TABLE dbo.Widget (WidgetId INT, имя VARCHAR (20), описание VARCHAR (50))

- Версия 3
CREATE TABLE dbo.Widget (WidgetId INT, имя VARCHAR (20), описание VARCHAR (100))
 

В версии 3 скрипт изменения базы данных содержит:

  ALTER TABLE dbo.Widget ADD Описание VARCHAR (50)
ALTER TABLE dbo.Widget ALTER COLUMN Описание VARCHAR (100)
 

Если текущая версия этой базы данных - это версия 1, а наша следующая версия - версия 3, скрипт ниже будет всем необходимым, но вместо этого будут выполняться оба оператора ALTER.

  ALTER TABLE dbo.Widget ADD Описание VARCHAR (100)
 

5 лет 4-недельных спринтов добавляют к некоторым развлекательным сценариям версии и требуют дополнительной обработки человеком, чтобы минимизировать влияние на время развертывания.

Так что с SSMS что-то не так? Нет, это хорошо для того, что полезно для администрирования и управления SQL Server. То, что он даже не притворяется, это помочь разработчику базы данных с (порой) очень сложной задачей управления изменениями.


Если вы не можете создавать каждую версию базы данных из источника и обновлять ее до любой будущей версии, ваш исходный элемент управления нарушен. Если вы так не думаете, спросите Эрика Санка .


Как насчет утилиты для сравнения схем SSMS + <- ->?

Это определенно шаг в правильном направлении и устраняет большую часть ручного усилия, необходимого для поддержки скриптов. Но (и это большой, но), обычно есть ручные шаги.

Популярные инструменты сравнения схем могут быть полностью автоматизированы и интегрированы в процесс сборки. Тем не менее, по моему опыту, более распространенная практика заключается в том, чтобы сравнение выполнялось вручную, полученные в результате сценарии были просмотрены, проверены в исходное управление, а затем выполнялись вручную для развертывания. Нехорошо.

В любое время, когда мы ошибочно полагаем, что люди должны участвовать в процессе сборки или развертывания, мы вводим риск, и мы делаем процесс неповторим.

Если вы и ваша команда входят в число тех, кто полностью автоматизировал сравнение схем иразвертывание, шляпы от вас! Вы, ребята, скорее всего, будете открыты к преимуществам, которые VS2010 может предложить как:

  • Вы уже поняли, что шаги с инструкциями опасны.
  • Вы видите значение автоматизации.
  • Вы готовы потратить время, необходимое для его работы.

Если вы не можете создать сборку за один шаг или развернуть за один шаг, процесс разработки и развертывания будет нарушен. Если вы так не считаете, спросите Джоэла Спольского .


Почему VS2010?

Заданный вопрос @NickChammas ищет функции убийцы, которые демонстрируют, почему VS2010 является игровым сменщиком для разработки баз данных. Я не думаю, что смогу сделать это на этой основе.

Возможно, смешно, когда другие видят недостатки в этом инструменте, я вижу веские причины для принятия:

  • Вам придется изменить свой подход.
  • Вы и ваша команда будете вынуждены работать по-другому.
  • Вам необходимо будет оценить влияние каждого изменения, подробно, подробно.
  • Вы будете руководствоваться для внесения любых изменений idempotent .

Если вы являетесь единственным администратором баз данных в проекте, управляя всеми изменениями в базе данных, это рассуждение должно звучать смешно, гранича с абсурдом. Если, однако, вы думаете, что у @BrentOzar есть точка, а одно из новых правил - это это будущее для SQL Server . База данных как код находится здесь.

  

Разработчик базы данных определяет форму объекта для версии   приложения, а не как мутировать существующий объект в   базы данных в нужную форму. Вы можете спросить себя: как   это развертывается против базы данных, которая уже содержит   таблица клиентов? Это - то, где движок развертывания входит в игру.   Как уже упоминалось ранее, механизм развертывания будет принимать скомпилированные   версию вашей схемы и сравнить ее с развертыванием базы данных   цель. Разностный движок будет генерировать необходимые сценарии для   обновить целевую схему в соответствии с версией, которую вы развертываете   проекта.

Да, есть другие инструменты, которые следуют аналогичной схеме и для проектов, не связанных с ограничениями, которые я поставил на мой ответ, они заслуживают одинакового рассмотрения. Но, если вы работаете с Visual Studio и Team Foundation Server ALM, я не думаю, что они могут конкурировать.

Что случилось с проектами базы данных VS2010?

  • Они не идеальны . Но если вы знаете об ограничениях и проблемных областях, вы можете обойти их.
  • Сложные перемещения данных по-прежнему требуют ухода и внимания, но удовлетворяются с помощью сценариев до /после развертывания.

Изменить: Итак, какова ваша точка?

@AndrewBickerton упомянул в комментарии, что я не ответил на исходный вопрос, поэтому я попытаюсь обобщить «Почему я должен использовать Visual Studio 2010 для SSMS для разработки моей базы данных?» здесь.

  • SSMS не является инструментом разработки базы данных. Да, вы можете разработать TSQL с SSMS, но он не обеспечивает богатые возможности IDEVS2010.
  • VS2010 предоставляет инфраструктуру для обработки вашей базы данных как кода.
  • VS2010 приносит статический анализ кода к вашему коду базы данных.
  • VS2010 предоставляет вам инструменты для полной автоматизации цикла сборки-развертывания.
  • SQL2012 и Visual Studio vNext расширяют возможности проектов баз данных. Теперь ознакомьтесь с VS2010, и у вас есть начальная стадия в средствах разработки баз данных следующего поколения.
ответил Mark Storey-Smith 29 22011vEurope/Moscow11bEurope/MoscowTue, 29 Nov 2011 06:03:06 +0400 2011, 06:03:06
7

VS может показаться отличным, если вы не знаете SSMS или использовали сторонние инструменты. Разрывы в VS выделяются, если вы используете инструменты Red Gate для сравнения схем и т. Д. И бесплатные плагины SSMS.

Биты управления источником вводят в заблуждение: то, что находится в производственной базе данных, является вашей ссылочной копией. Не то, что разработчик использует. См

ответил gbn 23 32011vEurope/Moscow11bEurope/MoscowWed, 23 Nov 2011 22:28:45 +0400 2011, 22:28:45
6

Я использую Visual Studio широко (хорошо, BIDS) для разработки отчетов SSRS и пакетов SSIS. Я не мог бы сделать ничего хорошего, если вообще, в Management Studio. Visual Studio - это гораздо более полная и интегрированная среда разработки, и она также лучше подходит к системам управления версиями. И это все отражено в цене!

ответил Peter Schofield 5 62011vEurope/Moscow11bEurope/MoscowSat, 05 Nov 2011 03:14:14 +0400 2011, 03:14:14
6

Честно говоря, мой голос прямо направляется в SQL Server Management Studio для разработки, разработки и (по-видимому) администрирования базы данных. Легче всего напечатать:

  Создать таблицу newTable
(
    someId int identity (1, 1) не null первичный ключ кластеризованный,
    ...... вы получаете идею
)
 

Затем щелкните по всем нужным местам. SSMS - отличная компоновка и абсолютно взрыв для работы. И я разработчик программного обеспечения .NET по своей природе. Но когда дело доходит до проектирования и кодирования базы данных, я выберу SSMS 11 раз из 10.

ответил Thomas Stringer 5 62011vEurope/Moscow11bEurope/MoscowSat, 05 Nov 2011 05:21:51 +0400 2011, 05:21:51
5

Нет лучшей практики, но с проектом базы данных VS 2010 и контроллером исходного кода (VSS 2010, Subversion и т. д.) вы можете обновить свою базу данных.

Я рекомендую сначала создать базу данных непосредственно в SSMS. После того, как ваша база данных почти готова, импортируйте ее в проект базы данных VS 2010. Как только импорт будет выполнен, вы всегда должны добавить новый скрипт в свой проект базы данных, чтобы отслеживать все изменения. Вы можете использовать функцию сравнения проекта базы данных, чтобы получить все изменения с сервера разработки и импортировать все эти сценарии непосредственно в свой проект. Теперь вам просто нужно «зафиксировать» ваше изменение в вашем контроллере исходного кода.

С помощью этого метода вы можете иметь версию базы данных. Вы можете определить версию каждой модификации и отменить свои изменения.

Это не единственное преимущество. С помощью такого проекта вы можете сравнить любые базы данных с вашим проектом, чтобы сценарий изменений и с помощью командной строки SQL PowerShell, вы можете обновить все свои базы данных с помощью того же сценария: этот скрипт является XML-схемой вашей базы данных. Он будет выполнять только необходимые команды для обновления ваших баз данных. У вас также есть возможность сделать единичный тест в вашей базе данных. Другая хорошая статья для проекта базы данных доступна здесь . С помощью функции развертывания вы можете иметь предварительный сценарий и пост-скрипт. С помощью этих сценариев вы можете проверить и вставить данные в свои системные таблицы.

Здесь - хорошая пошаговая процедура для проекта базы данных.

ответил Nico 23 32011vEurope/Moscow11bEurope/MoscowWed, 23 Nov 2011 01:45:41 +0400 2011, 01:45:41
2

Я использую SSMS больше, чем VS2010, потому что он существует, когда я устанавливаю SQL Server. Вероятно, это самая важная вещь, почему SSMS используется больше, чем VS2010, IMHO.

Я также обнаружил, что такие поставщики, как Red-Gate, выпускают инструменты, которые интегрируются с SSMS и не обязательно VS2010. Это может быть положительным, поскольку оно позволяет вам улучшить SSMS, если у Microsoft нет. Одним из примеров этого является Red Source Gate Source Control, который является дополнением к SSMS, которое позволяет подключать SSMS до системы управления исходными кодами вашей компании, будь то Visual Team Foundation или что у вас есть. VS2010 имеет этот встроенный модуль, но по сравнению с ценой инструмента Reg-Gate я просто сохранил кучу денег, не покупая VS2010.

Я думаю, что в целом это сводится к предпочтению, вы работаете с тем, что вам удобно. Если вы тренируете нового человека, и вы тренируете его на VS2010, то это станет их предпочтением, потому что они знают, как обойтись с он.

Если вы начали играть с SQL Server 2012, вы, возможно, заметили, что SSMS медленно, но верно получает состав VS2010. Поэтому в конце концов вы не сможете отличить их.

ответил Shawn Melton 23 32011vEurope/Moscow11bEurope/MoscowWed, 23 Nov 2011 00:34:40 +0400 2011, 00:34:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132