下面将使用sqlpackage.exe部署Sql数据库。
这不需要使用发布配置文件Xml。有没有一种方法可以内联添加简单的部署后脚本,而无需使用外部部署后文件?

例如:将内联发布数据库,而没有发布配置文件xml。

SqlPackage.exe
/Action:Publish
/SourceFile:TestDatabase.dacpac
/TargetDatabaseName:TestDb
/TargetServerName:localhost


现在,目标是在命令行中添加部署后脚本,例如在示例表中插入值。

预期目标:

SqlPackage.exe
/Action:Publish
/SourceFile:TestDatabase.dacpac
/TargetDatabaseName:TestDb
/TargetServerName:localhost
/PostDeploymentScript:"insert into dbo.SampleTable (SampleColumn) values ('1')"


在Microsoft网站中找不到内联部署后脚本选项。也许它不存在。

https://docs.microsoft.com/en-us/sql/tools/sqlpackage?view=sql-server-2017

SQLPackage Post Deployment Script not running

更新(下面的史蒂夫·福特答案可能不起作用):

想要从命令提示符下执行此操作,而不需要任何外部文件。史蒂夫的答案可能不适用于我的情况/问题。

最佳答案

添加部署后脚本的方法要求您将其添加到项目中。

请参阅此处的Microsoft文档:MSDN Pre & post deployment scripts

要使用解决方案资源管理器添加和修改部署前或部署后脚本,请展开数据库项目以显示“脚本”文件夹。

右键单击“脚本”文件夹,然后选择“添加”。

在上下文菜单中选择“脚本”。

选择部署前脚本或部署后脚本。 (可选)指定一个非默认名称。单击添加完成。

双击“脚本”文件夹中的文件。

Transact-SQL编辑器打开,显示文件的内容。

您可以在脚本中使用SQLCMD语法和变量,并在数据库项目属性中进行设置。例如:

您可以使用SQLCMD语法在部署前或部署后脚本中包含文件的内容。包含文件并按照您定义它们的顺序运行::r。\ myfile.sql

您可以使用SQLCMD语法在部署后脚本中引用变量。您可以在项目属性或发布配置文件中设置SQLCMD变量:

:setvar TableName MyTable
insert into [$(TableName)] (SampleColumn) values ('1')

关于.net - Sql Package Exe可以在命令行中运行部署后脚本吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57488959/

10-16 15:57
查看更多