Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в Microsoft Fabric
Хранение схемы базы данных в Git обеспечивает несколько преимуществ, включая управление версиями, совместную работу и возможность отслеживать изменения с течением времени. Этот подход особенно полезен для разработки по принципу code-first, когда вы определяете схему базы данных в коде и применяете изменения напрямую в среде разработки с помощью ORM или ИИ-ассистента для программирования, такого как GitHub Copilot.
В этом руководстве вы узнаете, как хранить схему базы данных в Git и управлять ею в рамках рабочего процесса разработки.
- Создание проекта SQL из существующей базы данных
- Фиксация и отправка кода базы данных в удаленный репозиторий Git
- Применение изменений из базы данных к существующему коду
- Извлеките изменения из удаленного репозитория Git и примените их к локальной базе данных (необязательно)
По завершении вы будете готовы отслеживать базу данных в системе управления версиями и сотрудничать с командой по изменениям базы данных через репозиторий Git.
Замечание
Чтобы завершить работу с руководством, необходимо получить доступ к базе данных SQL. Вы можете бесплатно вести локальную разработку, используя SQL Server Developer Edition в Windows или в контейнерах.
Необходимые условия
Предупреждение
Это руководство недоступно для проектов в стиле SDK (предварительная версия) в Visual Studio 2022. Вместо этого используйте SQL Server Management Studio (SSMS) или Visual Studio Code.
- Пакет SDK для .NET 8
- Интерфейс командной строки SqlPackage
- Шаблоны .NET для Microsoft.Build.Sql.Templates
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Шаг 1. Создание проекта SQL из существующей базы данных
Для представления базы данных в системе контроля версий используйте формат проекта базы данных SQL. Проект включает файлы .sql для каждого объекта базы данных и .sqlproj с параметрами базы данных. Когда вы просматриваете проект в проводнике файлов и системе контроля версий, структура SQL-проекта отражает структуру базы данных в обозревателе объектов.
В Visual Studio SQL Server обозреватель объектов щелкните правой кнопкой мыши базу данных, из которой вы хотите создать project и выберите Create New Project... .
В диалоговом окне Create New Project введите имя project. Имя проекта не обязательно совпадает с именем базы данных. Проверьте и измените расположение проекта по мере необходимости. Параметры импорта по умолчанию импортируют объекты в папки по схеме, а затем тип объекта. Параметры импорта можно изменить, чтобы изменить структуру папок или включить разрешения в импортируемые объекты. Запустите импорт.
В диалоговом окне "Импорт базы данных " отображается ход импорта в виде сообщений. После завершения импорта можно увидеть импортированные объекты в Обозреватель решений. Процесс сохраняет журналы в файле в каталоге проекта под Import Schema Logs. Нажмите кнопку Готово.
Предупреждение
Это руководство недоступно для проектов в стиле SDK (предварительная версия) в Visual Studio 2022. Вместо этого используйте SQL Server Management Studio (SSMS) или Visual Studio Code.
В представлении обозревателя объектов базы данных в Visual Studio Code выберите базу данных, из которой вы хотите создать проект. Щелкните правой кнопкой мыши базу данных и выберите "Создать проект из базы данных".
В Visual Studio Code диалоговое окно Создание проекта из базы данных требует указания имени и расположения проекта. Параметры импорта по умолчанию импортируют объекты в папки по схеме, а затем тип объекта. Вы можете выбрать другую структуру папок или включить разрешения в импортируемые объекты перед нажатием кнопки "Создать".
Откройте представление "Проекты базы данных", чтобы просмотреть новый проект и импортированные определения объектов.
В обозреватель объектов в SQL Server Management Studio щелкните правой кнопкой мыши базу данных, из которой нужно создать project, и выберите "Создать Project из базы данных... в меню "Задачи".
В диалоговом окне "Создание SQL Project из базы данных" проверьте выбранную базу данных и измените имя и расположение project по мере необходимости. Новый проект создается на основе объектов из выбранной базы данных, которые затем распределяются по папкам сначала по схемам, а затем по типу объекта.
Файл решения автоматически создается в папке над папкой проекта и открывается в Обозреватель решений после создания. Если вы хотите добавить новый проект в существующее решение, выберите "Добавить в решение " и перейдите к файлу решения. Нажмите кнопку "Создать" , чтобы создать проект.
Используйте интерфейс командной строки SqlPackage для извлечения схемы существующей базы данных в проект SQL. Следующая команда SqlPackage извлекает схему базы данных в полный проект SQL. Файлы .sql организованы по вложенным папкам схем и типов объектов, а для управления проектом создаётся файл .sqlproj со свойствами, значения которых соответствуют параметрам базы данных.
sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject
Шаг 2. Фиксация и отправка кода базы данных в удаленный репозиторий Git
После создания проекта SQL запустите временную шкалу Git для базы данных в локальном репозитории Git.
При открытии проекта SQL в Visual Studio создайте локальный репозиторий Git и отправьте его в удаленный.
Выберите Git>Создать репозиторий Git в строке меню.
В диалоговом окне "Создание репозитория Git" в разделе "Отправка в новый удаленный раздел" выберите GitHub или Azure DevOps. Если вы решили отправить изменения в GitHub, войдите в свою учетную запись GitHub, когда появится соответствующий запрос. Если выбрать Azure DevOps, войдите в учетную запись Azure DevOps и выберите или создайте проект.
Введите имя и описание репозитория. Убедитесь, что шаблон .gitignore имеет значение VisualStudio и выберите "Создать и отправить".
Visual Studio создает локальный репозиторий Git, выполняет первый коммит с файлами SQL-проекта и отправляет его в удаленный репозиторий.
Чтобы убедиться, что код был успешно отправлен, откройте браузер и перейдите в репозиторий на GitHub (https://github.com) или Azure DevOps (https://dev.azure.com). Вы увидите файлы проекта SQL, включая .sqlproj файл и .sql определения объектов.
Дополнительные сведения см. в разделе "О Git" в Visual Studio.
Предупреждение
Это руководство недоступно для проектов в стиле SDK (предварительная версия) в Visual Studio 2022. Вместо этого используйте SQL Server Management Studio (SSMS) или Visual Studio Code.
Открыв папку проекта SQL в Visual Studio Code, инициализируйте локальный репозиторий Git и отправьте его в удаленный.
Откройте представление системы управления версиями, выбрав значок системы управления версиями на панели действий или нажмите клавишу
Ctrl+Shift+G.Выберите "Инициализировать репозиторий" , чтобы создать новый репозиторий Git в текущей папке.
Все файлы проекта отображаются как неотслеживаемые изменения. Выберите значок + рядом с Изменения, чтобы добавить все файлы в индекс.
Введите сообщение фиксации, например
Initial commit of SQL projectв поле ввода сообщения, и нажмите кнопку "Фиксация " (значок флажка).Выберите Опубликовать ветвь в представлении "Управление версиями", чтобы отправить изменения из локального репозитория в удаленный репозиторий. Выберите, где опубликовать: в GitHub или Azure DevOps, и следуйте инструкциям для входа. Выберите видимость репозитория (общедоступная или частная) и подтвердите.
Чтобы убедиться, что код был успешно отправлен, откройте браузер и перейдите в репозиторий на GitHub (https://github.com) или Azure DevOps (https://dev.azure.com). Вы увидите файлы проекта SQL, включая .sqlproj файл и .sql определения объектов.
Дополнительные сведения см. в разделе "Управление версиями" в Visual Studio Code.
При открытии проекта SQL в SQL Server Management Studio создайте локальный репозиторий Git и отправьте его в удаленный.
Выберите Git>Create Git Repository в строке меню.
В диалоговом окне "Создание репозитория Git" в разделе "Отправка в новый удаленный раздел" выберите GitHub или Azure DevOps. Если вы решили отправить изменения в GitHub, войдите в свою учетную запись GitHub, когда появится соответствующий запрос. Если выбрать Azure DevOps, войдите в учетную запись Azure DevOps и выберите или создайте проект.
Введите имя и описание репозитория. Убедитесь, что шаблон .gitignore имеет значение VisualStudio и выберите "Создать и отправить".
SSMS создает локальный репозиторий Git, выполняет первый коммит с файлами вашего проекта SQL и отправляет его в удаленный репозиторий.
Чтобы убедиться, что код был успешно отправлен, откройте браузер и перейдите в репозиторий на GitHub (https://github.com) или Azure DevOps (https://dev.azure.com). Вы увидите файлы проекта SQL, включая .sqlproj файл и .sql определения объектов.
Дополнительные сведения см. в разделе "О Git" в Visual Studio.
В каталоге проекта SQL инициализируйте локальный репозиторий Git, зафиксируйте все файлы и отправьте их в удалённый репозиторий.
Инициализируйте новый репозиторий Git, добавьте файл
.gitignoreи выполните первый коммит:cd MyDatabaseProject git init dotnet new gitignore git add . git commit -m "Initial commit of SQL project"Создайте удаленный репозиторий в GitHub или Azure DevOps:
-
GitHub. Перейдите к https://github.com/new новому репозиторию и создайте его. Не инициализируйте его с файлом README,
.gitignoreили лицензией. - Azure DevOps. Перейдите к проекту Azure DevOps, выберите Repos и создайте новый репозиторий. Снимите флажок "Добавить README".
-
GitHub. Перейдите к https://github.com/new новому репозиторию и создайте его. Не инициализируйте его с файлом README,
Добавьте удаленную и отправьте начальную фиксацию:
git remote add origin <your-repository-url> git push -u origin mainЗамените
<your-repository-url>на URL-адрес, предоставленный GitHub или Azure DevOps при создании репозитория.
Чтобы убедиться, что код успешно отправлен, откройте браузер и перейдите в репозиторий. Вы увидите файлы проекта SQL, включая .sqlproj файл и .sql определения объектов.
Шаг 3. Применение изменений из базы данных к существующему коду
При изменении схемы базы данных за пределами проекта SQL (например, путем прямых изменений в базе данных, миграции ORM или агентических действий) можно обновить проект, чтобы отразить эти изменения.
Используйте сравнение схем для обновления проекта SQL из базы данных.
В SQL Server обозреватель объектов щелкните правой кнопкой мыши базу данных и выберите "Сравнение схем".
В окне "Сравнение схем " база данных устанавливается в качестве источника. Выберите раскрывающийся список Выбрать цель и выберите Выбрать цель.
В диалоговом окне Select Target Schema выберите Project и укажите ваш проект базы данных SQL. Нажмите ОК.
Нажмите кнопку Сравнить , чтобы выполнить сравнение. Результаты отображают различия между базой данных (источником) и проектом (целевым объектом).
Просмотрите различия. Снимите флажок изменений, которые вы не хотите применить к проекту.
Выберите "Обновить", чтобы применить выбранные изменения к проекту SQL.
Файлы проекта обновляются, чтобы соответствовать схеме базы данных. Просмотрите изменения в окне Git Changes, введите сообщение коммита и выберите Зафиксировать все. Нажмите кнопку Push , чтобы отправить изменения в удаленный репозиторий.
Предупреждение
Это руководство недоступно для проектов в стиле SDK (предварительная версия) в Visual Studio 2022. Вместо этого используйте SQL Server Management Studio (SSMS) или Visual Studio Code.
Используйте команду Update Project from Database, чтобы обновить проект SQL из базы данных.
В обозревателе объектов баз данных щелкните правой кнопкой мыши по базе данных и выберите Проекты баз данных SQL>Обновить проект из базы данных.
Выберите проект базы данных SQL для обновления и подтверждения.
Выполняется сравнение, и изменения из базы данных применяются в проект. Обновленные
.sqlфайлы отображаются в представлении Source Control как измененные файлы.
Просмотрите изменения в представлении Контроль версий, подготовьте измененные файлы, введите сообщение коммита и нажмите Commit. Выберите "Синхронизировать изменения" , чтобы отправить фиксацию в удаленный репозиторий.
Используйте сравнение схем для обновления проекта SQL из базы данных.
В обозреватель объектов щелкните правой кнопкой мыши по базе данных и выберите Задачи>Сравнение схем (предварительная версия).
В окне "Сравнение схем " база данных устанавливается в качестве источника. Нажмите кнопку многоточия в поле целевого объекта и выберите свой проект базы данных SQL в качестве целевого объекта.
Нажмите кнопку Сравнить , чтобы выполнить сравнение. Результаты отображают различия между базой данных (источником) и проектом (целевым объектом).
Просмотрите различия. Снимите флажок изменений, которые вы не хотите применить к проекту.
Нажмите кнопку "Применить" , чтобы применить выбранные изменения к проекту SQL.
Файлы проекта обновляются, чтобы соответствовать схеме базы данных. Просмотрите изменения в окне Git Changes, введите сообщение коммита и выберите Commit All. Нажмите кнопку Push , чтобы отправить изменения в удаленный репозиторий.
Используйте SqlPackage для повторного создания проекта SQL из базы данных, заменив существующие файлы проекта текущей схемой базы данных. В то время как другие средства проекта SQL предоставляют графический интерфейс, SqlPackage предлагает подход командной строки для автоматизации, который не предоставляет возможность просматривать изменения в файле перед применением.
Удалите существующие файлы объектов SQL и повторно создайте проект:
rm -rf MyDatabaseProject sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProjectПросмотрите изменения с помощью Git и зафиксируйте:
cd MyDatabaseProject dotnet new gitignore git add . git status git commit -m "Update project from database changes" git push
Шаг 4. Извлечение изменений из удаленного репозитория Git (необязательно) и применение их к локальной базе данных
При отправке другими участниками команды изменений схемы базы данных в удаленный репозиторий можно извлечь эти изменения и развернуть их в локальной базе данных разработки.
Выберите Git>Pull из строки меню, чтобы извлечь последние изменения из удаленного репозитория.
В Обозреватель решений щелкните правой кнопкой мыши узел проекта базы данных SQL и выберите "Сравнение схем".
В окне "Сравнение схем " проект устанавливается в качестве источника. Выберите раскрывающийся список Выбрать цель и выберите Выбрать цель.
В диалоговом окне выбора целевой схемы выберите базу данных и выберите подключение к локальной базе данных разработки. Нажмите ОК.
Нажмите кнопку Сравнить , чтобы выполнить сравнение. Результаты отображают различия между проектом (источником) и базой данных (целевой).
Просмотрите различия, чтобы проверить ожидаемые изменения.
Выберите "Обновить", чтобы применить изменения к базе данных.
Предупреждение
Это руководство недоступно для проектов в стиле SDK (предварительная версия) в Visual Studio 2022. Вместо этого используйте SQL Server Management Studio (SSMS) или Visual Studio Code.
Откройте представление системы управления версиями и выберите "Вытягивание " из меню ... (или нажмите кнопку синхронизации в строке состояния), чтобы извлечь последние изменения из удаленного репозитория.
В представлении "Проекты баз данных " щелкните правой кнопкой мыши проект базы данных SQL и выберите "Сравнение схем".
В окне "Сравнение схем " проект устанавливается в качестве источника. Нажмите кнопку многоточия в поле назначения и выберите в качестве целевого подключения подключение к локальной базе данных разработки.
Нажмите кнопку Сравнить , чтобы выполнить сравнение. Результаты отображают различия между проектом (источником) и базой данных (целевой).
Просмотрите различия, чтобы проверить ожидаемые изменения.
Нажмите кнопку "Применить" , чтобы применить изменения к базе данных.
Откройте терминал и запустите
git pullв каталоге проекта, чтобы извлечь последние изменения из удаленного репозитория.В Обозреватель решений щелкните правой кнопкой мыши узел проекта базы данных SQL и выберите "Сравнение схем( предварительная версия)".
В окне "Сравнение схем " проект устанавливается в качестве источника. Выберите целевой объект и выберите подключение к локальной базе данных разработки.
Нажмите кнопку Сравнить , чтобы выполнить сравнение. Результаты отображают различия между проектом (источником) и базой данных (целевой).
Просмотрите различия, чтобы проверить ожидаемые изменения.
Нажмите кнопку "Применить" , чтобы применить изменения к базе данных.
Извлеките последние изменения из удаленного репозитория:
cd MyDatabaseProject git pullВыполните сборку проекта, чтобы убедиться, что изменения успешно скомпилируются:
dotnet buildРазверните изменения в локальной базе данных разработки с помощью SqlPackage:
sqlpackage /a:Publish /sf:bin/Debug/MyDatabaseProject.dacpac /tsn:localhost /tdn:MyDatabaseЗамените
MyDatabaseProject.dacpacименем вашего.dacpacвыходного файла и при необходимости обновите значения целевого сервера (/tsn) и базы данных (/tdn).