如何在没有VerifyExtraction的情况下将MSSQLServer数据库提取为.dacpac?

 小呗羽_331 发布于 2022-12-12 23:24

我想用Server Management Studio提取MSSQLServer数据库的数据库模式.我使用Extract命令"Extract Data-tier Application .."

在数据库中有几个对另一个数据库的引用.因此,我得到以下错误.

提取数据库时出错:验证数据包的模式模型失败.错误SQL71562:验证元素[dbo]时出错.[x]有一个未解析的对象[dbo]的引用.[y].从此平台创建包时不支持外部引用.

问题是,SSMS使用带参数/ p的SQLPackage.exe :VerifyExtraction = True.当我使用控制台并在没有此参数的情况下调用SQLPackage.exe时,它默认使用/ p:VerifyExtraction = False,我可以创建.dacpac文件.

有没有办法配置SSMS以禁用验证?

2 个回答
  • 如果无法使用Visual Studio,则可以使用命令行SqlPackage应用程序从数据库中提取架构.默认情况下,这验证架构(不,我不知道为什么SSMS和命令行提供有不同的默认值!).SqlPackage.exe可以找到C:\Program Files (x86)\Microsoft SQL Server\<SQL_VERSION>\DAC\bin.

    例如,以下内容MyDatabase从本地SQL Server实例中提取架构,并将其输出到.dacpac本地文件系统上的文件:

    sqlpackage /Action:Extract /SourceDatabaseName:"MyDatabase" /SourceServerName:localhost /TargetFile:"C:\SomeDirectory\MyDatabase.dacpac"
    

    如果要在稍后阶段包含模式验证,可以通过添加/p:VerifyExtraction=True到命令行来显式设置标志.

    有关完整信息,请SqlPackage.exe访问:

    https://msdn.microsoft.com/library/hh550080.aspx

    2022-12-12 23:40 回答
  • 我无法找到适用于SSMS(2008 R2或2012)的方法,但是带有SSDT的Visual Studio(2013)似乎可以工作:在VS中,转到SQL Server对象资源管理器,连接到有问题的服务器,右键单击有问题的数据库,提取数据层应用程序,然后调整提取设置,其中一个是"验证提取".我不知道为什么MS不只是将其构建到SSMS中.

    我注意到的一件有点奇怪的事情,但是,VS只会通过这种方法提取.DacPac.即使您选择将数据添加到数据提取中,扩展名仍然是.DacPac.我的印象是.DacPacs仅用于Schema Only,而.BacPacs用于Schema + Data.无论如何,在VS创建了.DacPac(Schema + Data)文件之后,SSMS能够使用"Deploy Data-tier Application ..."向导将其导入.

    2022-12-12 23:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有