Как использовать git в качестве поставщика управления версиями для SQL Server Management Studio

Можем ли мы использовать GIT в качестве системы управления версиями для sql management studio?


person Daniel Mahadi    schedule 25.09.2010    source источник
comment
Не знаю о git, но мы используем VisualSVN для скриптов SQL Server управления версиями.   -  person juur    schedule 26.09.2010
comment
Что ты в итоге сделал? Кажется, просто отслеживать файлы .sql, будь то в SMSS или MSVS, но как насчет файлов решений и проектов?   -  person tggagne    schedule 10.01.2013
comment
@tggagne в настоящее время то, что я делал, - это я отслеживаю как старые, так и новые сценарии sql в файловой системе и отслеживаю эти файлы с помощью GIT. Я надеюсь, что это лучший способ сделать это в MS SQL Management Studio. Я очень удивлен, что Microsoft этого не предоставляет. Я считаю, что всем будет проще, если у них будет возможность самостоятельно отслеживать изменения хранимых процедур и представлений или функций в студии управления MS Sql.   -  person Daniel Mahadi    schedule 31.10.2013
comment
Кто-нибудь заметил, что использование кодировки SSMS по умолчанию UTF-16 не позволит вам использовать git diffs?   -  person NReilingh    schedule 12.10.2014
comment
Мы уже много лет используем сторонние продукты Red-Gate. Он действительно интегрирует ограниченный git в студию управления. Например, при ограничении вы не можете легко фиксировать изменения sql вместе с другими изменениями кода. Кроме того, кажется, что он значительно замедляется на больших dbs. см. red-gate.com/products/sql-development / sql-source-control   -  person Jens Frandsen    schedule 24.06.2016


Ответы (10)


для управления версиями базы данных в SSMS

Агент SVN - подключаемый модуль SCC Subversion. http://www.zeusedit.com/agent/ssms/ms_ssms.html

or

http://www.red-gate.com/products/sql-development/sql-source-control/

введите описание изображения здесь

person RckLN    schedule 29.10.2013

Я обнаружил, что в ApexSQL есть инструмент, который изначально поддерживает Git в качестве системы управления версиями. Он поставляется как надстройка SSMS и предлагает мастер, который можно использовать для сопоставления объектов базы данных с системами управления версиями. Для этого:

  1. Загрузите и установите ApexSQL Source Control.
  2. Запустите SSMS и в проводнике объектов выберите базу данных, которую вы хотите связать с системой управления версиями.
  3. Щелкните правой кнопкой мыши базу данных и сформируйте контекстное меню, выберите параметр «Связать базу данных с системой управления версиями» в подменю «Управление исходным кодом ApexSQL».
  4. Выберите систему управления версиями (в вашем случае это Git) и выберите одну из двух моделей разработки баз данных - общую или выделенную. Общая модель рекомендуется, когда вы связываете базу данных, над которой будут работать несколько разработчиков одновременно Модель разработки базы данных - выбор между общей или выделенной
  5. Отфильтруйте объекты, которые вы не хотите отслеживать с помощью системы управления версиями: по схеме, типу или имени по схеме, типу или имени
  6. Предоставьте соответствующую информацию для входа и строку репозитория. Для Git это: <protocol>://<hostname>:<portnumber>/<Git server name>/<repository> (см. Пример ниже):  Войдите в систему управления версиями Git

Более подробные пошаговые инструкции можно найти в этой статье: http://knowledgebase.apexsql.com/link-database-source-control-system-2/

person Jurgen Muller    schedule 31.08.2015

Попробуйте sql-source-control, бесплатный интерфейс командной строки с открытым исходным кодом, используемый для добавления SQL в системы управления версиями, такие как Git.

https://www.npmjs.com/package/sql-source-control

person Justin Lettau    schedule 11.02.2017
comment
Это впечатляющая инициатива, но этот пакет нельзя использовать из-за ошибки, когда индекс имеет несколько атрибутов. - person bugwheels94; 10.01.2019

Microsoft выпустила SQL Operations Studio. Это бесплатный инструмент, работающий в Windows, macOS и Linux, для управления SQL Server, базой данных SQL Azure и хранилищем данных SQL Azure; куда бы они ни бежали. Он поставляется с встроенной поддержкой GIT.

person Derrick Bell    schedule 06.04.2018
comment
В настоящее время называется Azure Data Studio. Он наследует собственную поддержку GIT от Visual Studio Code. Поправьте меня, если я ошибаюсь, но он не поддерживает прямую версию выбранных вами хранимых процедур, функций (базы данных), ... в репозиторий git. Он использует поддержку git для простых файлов. - person Vaclav Elias; 08.10.2018
comment
Правильно, он использует простые файлы, он не поддерживает собственное управление версиями базы данных. - person Derrick Bell; 08.10.2018
comment
Я попробовал. У него многообещающее будущее, поскольку FOSS активно разрабатывается с бесплатными расширениями, в то время как надстройки SSMS почти всегда дороги. К сожалению, для системы управления версиями это намного хуже, чем создание сценариев в SSMS и внешнее использование системы управления версиями, как я сейчас делаю с git-gui. В ADS нет возможности экспортировать сразу несколько объектов в отдельные файлы, где их может прочитать даже встроенная система управления версиями. Каждый объект должен быть открыт как сценарий, затем перейдите в проводник и щелкните правой кнопкой мыши открытый редактор, чтобы сохранить его как файл, а затем добавить в систему управления версиями. - person Pilot_51; 11.09.2019
comment
По состоянию на 2021 год они добились большего прогресса в этом вопросе, но имеют огромное отставание. Снова многообещающее будущее, но далеко не все возможности SSMS. - person spencer741; 16.02.2021

Вы можете добавить Git Bash в качестве внешнего инструмента (Инструменты | Внешние инструменты ...):

person craig    schedule 11.12.2014
comment
Или просто Git Bash из командной строки. Это не так плохо. - person Jess; 09.09.2015
comment
Я предполагаю, что это не волшебным образом заставляет Git отслеживать объекты SQL, как если бы они были файлами. Не могли бы вы подробнее рассказать, что это на самом деле? - person MarredCheese; 19.04.2017

Поскольку SSMS является (более или менее) настраиваемой версией Visual Studio, вы можете использовать решение, предназначенное для VS:

Использование Git с Visual Studio

В качестве альтернативы можно с самого начала управлять исходным кодом БД в Visual Studio, а не в SSMS. Таким образом (по крайней мере, в VS2010) у вас есть проекты баз данных, интегрированное развертывание, модульное тестирование и т. Д. Или продолжайте использовать SSMS и проверяйте свой код из внешнего инструмента, когда будете готовы (не так удобно, конечно).

Но это зависит от того, что именно вы делаете: SSMS - это инструмент DBA, VS - инструмент разработчика. В любом случае, вы должны использовать какую-то форму управления версиями, но из вопроса не ясно, какие именно файлы вам нужно версировать.

person Pondlife    schedule 26.09.2010

Еще нет, но если вы перейдете на http://redgate.uservoice.com/forums/39019-sql-source-control/suggestions/537681-add-git-support и проголосуйте за redgate, чтобы добавить поддержку git, которую он может быть добавлен в следующей версии. Да, я знаю, что это коммерческий продукт, но за некоторые продукты можно платить!

person mhenrixon    schedule 11.01.2011
comment
Управление исходным кодом Regate теперь поддерживает git - person fran; 04.02.2013

Red Gate SQL Source Control был обновлен и теперь включает поддержку Git и Mercurial (а также Perforce и TFS). Имейте в виду, что их интеграция с DVCS не на 100% завершена по сравнению с их продуктом SVN, поскольку базовые функции, такие как просмотр истории объекта, не поддерживаются в SSMS. Это может быть препятствием, если другие инструменты Red Gate, такие как SQL Compare, являются частью вашего рабочего процесса.

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

person Robbie Hickey    schedule 29.10.2013

VersionSQL - это надстройка системы управления версиями SSMS, которую я разработал таким образом, чтобы она была легкой и простой в использовании. На панели «Обозреватель объектов» просто щелкните правой кнопкой мыши базу данных или объект и выберите «Зафиксировать». VersionSQL запишет его в Git / SVN в аккуратно организованной структуре папок.

Проверьте это на https://www.versionsql.com/?utm_source=so&utm_medium=3793388.

person MikeTV    schedule 15.10.2016

На этот вопрос было дано несколько ответов, на которые вы, возможно, захотите взглянуть, но в двух словах ...

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

РСУБД состоит из схемы и данных, которые они изменяют, и может часто меняться в случае данных, поэтому даже если вы выполнили VCS, что бы вы сравнили, чтобы выполнить восстановление, и как это поможет? Предполагая, что у вас есть действующая система, возврат к более ранней версии приведет к потере всех данных, хранящихся за это время, и, хотя я никогда не пробовал это, я подозреваю, что это может нарушить общую целостность СУБД.

Лучшее решение - использовать приложение резервного копирования, созданное для этой СУБД, говорит MySQLdump в случае MySQL, которое делает снимок данных и структуру данных и сохраняет их в надежном месте.

Дампы можно планировать регулярно, и вы можете делать такие вещи, как главные / подчиненные базы данных (или другие стратегии), чтобы вы могли резервировать живые производственные базы данных на лету, не влияя на производительность

person PurplePilot    schedule 25.09.2010
comment
Я считаю, что OP спрашивает об управлении версиями для DDL и скриптов, а не о том, как сделать резервную копию всей базы данных. - person Pondlife; 26.09.2010
comment
Да, похоже, мои извинения, поэтому он спрашивает, как управлять исходным кодом приложения? - person PurplePilot; 26.09.2010
comment
также неверно, что природа контроля версий, как правило, заключается в хранении исходного файла, а затем дельт. Во-первых, git работает не так. - person asymmetric; 12.01.2011