如何在发布管道(Azure Devops / VSTS)中在没有数据的情况下进行SQL DB备份。而且我必须将其存储在共享路径中。该数据库位于本地服务器中
谢谢。
无数据的备份SQL DB
如果只需要备份数据库对象及其相关实例级元素的定义,这些定义包括表,存储过程,视图和用户。建议您通过调用DAC来生成sqlpackage.exe
程序包文件。
数据层应用程序(DAC)是逻辑数据库管理实体定义所有SQL Server对象-如表,视图和实例对象,包括登录名-与用户的数据库。 DAC是SQL Server数据库的独立单元部署使数据层开发人员和数据库能够使用管理员将SQL Server对象打包到可移植工件中称为DAC封装,也称为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}"