【问题标题】:Backup SQL DB without data in release pipeline在发布管道中备份没有数据的 SQL DB
【发布时间】:2019-12-02 18:53:26
【问题描述】:

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

更新:

在发布管道的“命令行脚本”任务中使用以下命令后,

"C:\Program Files (x86)\Microsoft SQL 服务器\140\DAC\bin\sqlpackage.exe" /sourceconnectionstring:"数据 源 = 服务器名称;初始目录 = 数据库名称;集成安全 = 真" /targetFile:E:\Test.dacpac /action:extract /p:ExtractAllTableData=false /p:IgnoreUserLoginMappings=true /p:IgnorePermissions=true /p:Storage=内存

我收到错误,因为用户“XXXXXX”登录失败。以下是详细日志。

谢谢。

【问题讨论】:

    标签: sql-server azure-devops database-backups


    【解决方案1】:

    备份没有数据的 SQL DB

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

    数据层应用程序 (DAC) 是一个逻辑数据库管理实体 它定义了所有 SQL Server 对象——如表、视图和 实例对象,包括登录 - 与用户的 数据库。 DAC 是 SQL Server 数据库的独立单元 支持数据层开发人员和数据库的部署 管理员将 SQL Server 对象打包到可移植的工件中 称为 DAC 包,也称为 DACPAC。


    要生成DAC包文件,可以使用Extract Data-tier Application Wizard,但在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}"
    

    【讨论】:

    • 感谢您的回复。但是当我运行命令时,我收到错误消息“提取数据库时出错:无法连接到数据库服务器。用户''登录失败。
    • @Kattesang,有线。你用的是哪个代理?托管代理还是私人代理?请使用私人代理完成此提取。据我所知,此命令不需要指定用户名。
    • 我正在使用自定义代理池。我在用作自定义代理的服务器机器中尝试了相同的命令。我也面临同样的错误。
    • 即使我在数据库服务器中尝试过命令“sqlpackage /Action:Extract /SourceServerName:XXXXXX /SourceDatabaseName:XXXXX /TargetFile:”E:\XXXXXX.dacpac”,我也遇到了同样的错误。
    • @Kattesang,请参阅我的更新脚本。我将指定的用户名和密码添加到其中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 2019-11-19
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多