#sql-server #visual-studio #database-project
#sql-сервер #visual-studio визуальная студия #база данных-проект #visual-studio
Вопрос:
У меня есть проект базы данных для моего личного проекта, и я пытаюсь развернуть свой код на своем сервере разработки. Я часто удаляю и заново создаю свой сервер разработки. Прямо сейчас сервер разработки создается заново с помощью SQL Server. Каждый раз, когда я хочу развернуть свой код, мне приходится вручную создавать проект базы данных, а затем публиковать проект базы данных. Я хочу автоматизировать создание базы данных с помощью развертывания проекта базы данных.
Прямо сейчас у меня есть скрипт, который создает базу данных, но я должен выполнить его вручную. И это работает отлично, но я хочу также автоматизировать этот шаг.
Возможно ли это вообще? Если да, то как? Пожалуйста, объясните шаг за шагом. Также что мы упомянем для начального каталога в строке подключения?
Редактировать: я пытался создать базу данных с помощью
CREATE DATABASE LocalDbTest
в сценарии предварительного развертывания. Но это не сработало. Он создает базу данных, но затем таблицы не получают созданных таблиц под ним. Поскольку я использовал master database в качестве базы данных по умолчанию, она создает таблицу в master. Это не позволяет мне выбрать LocalDbTest
базу данных по умолчанию, потому что она еще не создана, поэтому я должен выбрать Master в качестве базы данных по умолчанию. Я попытался изменить базу данных с помощью:
USE LocalDbTest
GO
Я использовал ее сразу после создания базы данных, но это не сработало, потому что при создании сценария она возвращается к базе данных по умолчанию. Эта часть появляется автоматически при создании сценария.
USE [$(DatabaseName)];
GO
Кроме того, Visual Studio не позволяет мне добавлять имя базы данных перед именем таблицы, например:
CREATE TABLE [LocalDbTest].[dbo].[TestTable]
Я получаю сообщение об ошибке:
When you create an object of this type in a database project, the object's name must contain no more than two parts.
Комментарии:
1. Какую версию Visual Studio вы используете?
2. ПРОТИВ 2017 и 2019
Ответ №1:
Если у вас есть готовый сценарий для создания базы данных, вы можете использовать событие предварительной сборки для вызова SQLCMD и запуска вашего сценария.
Редактировать: Если у вас возникли проблемы с указанием на базу данных, которая не существует, возможно, вам придется вручную отредактировать профиль публикации (например, dev.publish.xml
) и явно задать TargetDatabaseName
элемент. Вы также можете установить для CreateNewDatabase
элемента значение True
, если хотите, чтобы он создавался заново при каждой его публикации.
Ответ: Вы можете использовать профиль публикации и жестко закодировать в нем целевую базу данных.
Комментарии:
1. @Devang Вы указываете базу данных
LocalDbTest
в строке подключения к развертыванию?2. Я отредактировал свой вопрос и добавил дополнительную информацию. Я не смог указать database LocalDbTest в строке подключения к развертыванию, потому что она еще не создана, поэтому она не позволяла мне выбирать ее.
3. @Devang У вас есть два варианта. Вы можете использовать профиль публикации и жестко закодировать в нем целевую базу данных. Или вы можете создать пустую базу данных на сервере и изменить свой скрипт, чтобы выполнить удаление (если существует) / создать в базе данных.