gpt4 book ai didi

sql-server - SqlPackage.exe 提取数据和架构验证

转载 作者:行者123 更新时间:2023-12-03 21:24:06 29 4
gpt4 key购买 nike

安装 Sql Server Data Tools 后,我尝试使用 SqlPackage.exe来自:C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\

我想“提取”模式和数据。这样我就可以迁移到没有任何现有数据库的新服务器 - 我希望架构和数据包含在该迁移中。这只是一个旋转/一次性环境。

现有的数据库并不是很好,因为它们具有跨数据库引用。我要导出的数据库有多个对另一个名为“audit”的数据库的引用。涉及触发器 - 希望你能理解。

阅读文档后,我尝试了以下命令:

.\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”文件 - 用户界面提供了一个“验证提取”的选项,我没有选中它。

现在我很困惑,因为我认为 dacpac 文件只包含架构,而 bacpac文件用于模式加数据 - 然而,当通过 Visual Studio 提取“带有数据”的数据层应用程序时,它会生成一个 dacpac 文件。这是否意味着我需要使用“提取”操作而不是 SqlPackage.exe 的“导出”操作?

任何人都可以提供任何指导吗?

最佳答案

这是我发现的。

要提取架构和数据,您需要使用/Action:Extract NOT/Action:Export。

“导出”会生成一个包含数据的 bacpac 文件。如果源数据库中的对象(触发器、sproc 等)具有外部引用,这将失败。似乎没有办法解决这个问题。

“提取”会生成一个 dacpac 文件,并且可以选择包含数据,并且您还可以禁用验证(默认情况下禁用),这样您就可以解决引用外部对象的事实。

看来Export在能力上被忽略了,Extract更加灵活。

这非常令人困惑。

关于sql-server - SqlPackage.exe 提取数据和架构验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879279/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com