发布管道中没有数据的备份 SQL 数据库

Backup SQL DB without data in release pipeline

如何在发布管道 (Azure Devops/VSTS) 中备份没有数据的 SQL 数据库。而且我必须将它存储在共享路径上。数据库在本地服务器中

更新:

在发布管道的 "Command Line Scripts" 任务中使用以下命令后,

"C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin\sqlpackage.exe" /sourceconnectionstring:"Data Source=ServerName;Initial Catalog=DBName;Integrated Security=True" /targetFile:E:\Test.dacpac /action:extract /p:ExtractAllTableData=false /p:IgnoreUserLoginMappings=true /p:IgnorePermissions=true /p:Storage=Memory

我收到用户 'XXXXXX' 登录失败的错误。下面是详细日志。

谢谢。

备份SQL没有数据的数据库

如果您只需要备份数据库对象的定义及其相关的实例级元素,包括表、存储过程、视图和用户。建议您通过调用 sqlpackage.exe 生成一个 DAC 包文件。

A data-tier application (DAC) is a logical database management entity that defines all of the SQL Server objects - like tables, views, and instance objects, including logins - associated with a user's database. A DAC is a self-contained unit of SQL Server database deployment that enables data-tier developers and database administrators to package SQL Server objects into a portable artifact called a DAC package, also known as a DACPAC.


要生成DAC 包文件,一个是使用提取数据层应用程序向导,但无法在VSTS 中实现。这里可以使用VSTS发布管道中的脚本来实现这个生成。

在发布管道中:

(1) 第一步是在 script 下应用到 powershell/command 任务:

sqlpackage.exe /a:extract /scs:"server=localhost;database=MerlinTbData;trusted_connection=true" /tf:"C:\SQL Server Management Studio\DAC Packages\AdventureWorks2012.dacpac"

等于

sqlpackage /Action:Extract /SourceServerName:localhost /SourceDatabaseName:"MerlinTbData"  /TargetFile:"C:\SQL Server Management Studio\DAC Packages\MerlinTbData.dacpac"

在这个脚本中,它会将DAC包文件保存到本地文件系统中。但是由于您想要的是让它存储在共享文件夹中。所以:

(2) 下一步是使用Windows machine file copy任务将此DAC包文件复制到共享文件夹。

另外,你也可以继续使用命令脚本来实现这个副本。


更新:

请使用下面包含您的用户名和密码的脚本:

SqlPackage /Action:Extract /SourceServerName:"*********"
 /SourceDatabaseName:"*****" /TargetFile:"*****" /SourceUser:"{SQLuser}" /SourcePassword:"{SQLPassword}"