我有个人项目的数据库项目,我正在尝试将我的代码部署到我的DEV服务器。我经常删除并重新创建我的DEV服务器。现在,DEV Server是使用SQL Server新创建的。每次我想部署我的代码时,我都必须手动创建Database Project,然后发布数据库项目。我想通过数据库项目部署自动创建数据库。
现在,我有一个创建数据库的脚本,但我必须手动执行它。这是完美的工作,但我也希望自动化这一步骤。
这甚至可能吗?如果是,那怎么样?请一步一步解释。还有什么我们会在连接字符串中提到初始目录?
编辑:我尝试使用创建数据库
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.
如果您已准备好创建数据库的脚本,则可以使用预构建事件来调用SQLCMD并运行脚本。
编辑:如果您无法指向不存在的数据库,则可能必须手动编辑发布配置文件(例如dev.publish.xml
)并明确设置TargetDatabaseName
元素。如果要在每次发布时重新创建,还可以将CreateNewDatabase
元素设置为True
。
答:您可以使用发布配置文件并对其中的目标数据库进行硬编码。