【发布时间】:2018-04-17 13:21:06
【问题描述】:
安装 Sql Server Data Tools 后,我尝试使用来自:C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\ 的SqlPackage.exe
我想“提取”架构和数据。这样我就可以迁移到没有任何现有数据库的新服务器 - 我希望架构和数据包含在该迁移中。这只是一个启动/一次性环境。
现有的数据库并不是很好,因为它们具有跨数据库引用。我要导出的数据库对另一个名为“审计”的数据库有多个引用。涉及到触发器 - 希望您了解情况。
阅读文档后,我尝试了以下命令:
.\sqlpackage.exe /Action:Export /SourceDatabaseName:"MyDb" /SourceServerName:foo\bar /TargetFile:"C:\temp\mydb.bacpac"
但是,这导致了以下许多错误:
Error SQL71562: Error validating element [dbo].[foo_u]: Trigge
r: [dbo].[foo_u] has an unresolved reference to object [Audit].[dbo].[Foo].[FooId]. External references are not supported when creating a package from this platform.
我尝试指定 /p:VerifyExtraction=false 但这导致:
.\sqlpackage : *** 'VerifyExtraction' is not a valid argument for the 'Export' action.
所以现在我想哇,这一定是不被支持的。但是在 VS2017 中,当我转到 SQL 服务器资源管理器时,我可以“提取数据层应用程序”并为所有表选择“提取模式和数据”选项。这运行良好并生成一个“foo.dacpac”文件 - UI 提供了一个“验证提取”选项,我没有选中它。
现在我很困惑,因为我认为 dacpac 文件只包含架构,而 bacpac 文件用于架构加数据 - 但是当通过 Visual Studio 提取“带有数据”的数据层应用程序时,它会生成一个 dacpac 文件。这是否意味着我需要使用 SqlPackage.exe 的“提取”操作而不是“导出”操作?
谁能提供这方面的指导?
【问题讨论】:
标签: sql-server sql-server-data-tools