Как создать базу данных с помощью проекта базы данных в Visual Studio, если она не существует?

#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 У вас есть два варианта. Вы можете использовать профиль публикации и жестко закодировать в нем целевую базу данных. Или вы можете создать пустую базу данных на сервере и изменить свой скрипт, чтобы выполнить удаление (если существует) / создать в базе данных.