sqlpackage.exe:在导出时忽略用户的任何方法?

时间:2017-05-25 13:22:24

标签: sql-server azure sqlpackage bacpac

我试图创建bacpac文件以将我的数据库导出到azure 在创建导出包(sqlpackage /a:Export)吗?

时,是否会忽略用户?

2 个答案:

答案 0 :(得分:3)

不,遗憾的是,在导出时无法忽略用户。

另外,您可以生成带有数据的dacpac文件(sqlpackage / a:extract / p:ExtractAllTableData = true)并在发布时忽略用户...但这只适用于原始数据库,因为dacpacs跳过大多数Azure导入细节(如首先发布存储过程以利用延迟名称解析)。

我猜你想要忽略用户,因为你的数据库包含一些映射到Windows登录的用户,你想避免生成只包含Azure SQL DB兼容对象的新版本数据库。如果是这样,您可能有兴趣尝试Azure SQL数据库迁移服务的私有预览:https://blogs.technet.microsoft.com/dataplatforminsider/2017/04/25/get-to-cloud-faster-with-a-new-database-migration-service-private-preview/

答案 1 :(得分:0)

此功能旨在支持将数据库迁移到Azure的过程。因此推理它只支持Azure支持的数据库工件。

,不允许使用Windows用户,文件组和一些提示(不考虑WITH弹簧)。

对我有用的一个工作流程概述如下。

导出数据库的数据库应用程序项目(dacpac文件)。

将其导入Visual Studio(至少是2013版)。

将目标平台更改为Azure SQL数据库(我不确定V12附属物)

修复所有错误和警告。

可选择考虑编写脚本以删除此时可以删除的任何数据。您可能还希望为迭代测试生成一个非常小的版本。

将数据库的备份(从旧的老式BAK文件)恢复到其他位置。

将Azure更正后的项目的dacpac发布到已恢复的数据库。

从中生成Bacpac。

一旦你有一个bacpac文件,你应该能够将它推广到云端

显然,这将是一个迭代学习过程,其中一些步骤需要多次尝试才能正确。