如果不存在,如何在 Visual Studio 中使用数据库项目创建数据库?

Posted

技术标签:

【中文标题】如果不存在,如何在 Visual Studio 中使用数据库项目创建数据库?【英文标题】:How to create database using Database Project in Visual Studio if doesn't exists? 【发布时间】:2019-04-02 20:57:14 【问题描述】:

我的个人项目有一个数据库项目,我正在尝试将我的代码部署到我的 DEV 服务器。我经常删除并重新创建我的 DEV 服务器。现在,DEV Server 是使用 SQL Server 新创建的。每次我想部署我的代码时,我都必须手动创建数据库项目,然后发布数据库项目。我想通过数据库项目部署自动创建数据库。

现在,我有一个创建数据库的脚本,但我必须手动执行它。这是完美的工作,但我也想自动化这一步。

这甚至可能吗?如果是,那么如何?请逐步解释。另外,我们将在连接字符串中提到初始目录吗?

编辑: 我尝试使用

创建数据库
CREATE DATABASE LocalDbTest

在预部署脚本中。但它没有用。它正在创建数据库,但随后表没有在其下创建表。由于我使用 master 数据库作为默认数据库,因此它在 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.

【问题讨论】:

您使用的是什么版本的 Visual Studio? VS 2017 和 2019 【参考方案1】:

如果您已准备好创建数据库的脚本,则可以使用 Pre-build 事件调用 SQLCMD 并运行您的脚本。

编辑: 如果您无法指向不存在的数据库,您可能必须手动编辑发布配置文件(例如dev.publish.xml)并明确设置TargetDatabaseName 元素。如果您希望每次发布时都重新创建,也可以将CreateNewDatabase 元素设置为True

回答: 您可以使用发布配置文件并在其中硬编码目标数据库。

【讨论】:

@Devang 您是否在部署连接字符串中指定了数据库LocalDbTest 我已经编辑了我的问题并添加了更多信息。我无法在您的部署连接字符串中指定数据库 LocalDbTest,因为它尚未创建,所以它不允许我选择它。 @Devang 你有两个选择。您可以使用发布配置文件并在其中硬编码目标数据库。或者,您可以在服务器中创建一个空数据库并修改您的脚本以在数据库上执行删除(如果存在)/创建。

以上是关于如果不存在,如何在 Visual Studio 中使用数据库项目创建数据库?的主要内容,如果未能解决你的问题,请参考以下文章

visual studio code如何运行c

如何在 Visual Studio 2022 中设置 NUnit?

关闭编辑器后,Visual Studio 命令行快捷方式不存在

哪些C语言函数在visual studio2015报错并怎么修改

如何共享Visual Studio 2017代码样式和格式?

如何删除不良的 Visual Studio 模板?