7

我正在使用数据层应用程序框架 (DACFx) 来尝试从我的数据库中的表子集导出架构和数据。

var dacServices = new DacServices(connectionString);
dacServices.ExportBacpac("database.bacpac", database, tables);

我知道对支持的内容有一些限制,并且我已经解决了与代码有关的问题(存储过程等)。但是,我遇到了 Windows 用户/登录的障碍。我不知道我怎么能绕过它。

异常详情:

One or more unsupported elements were found in the schema used as part of a data package.
Error SQL71564: The element User: [Domain\User] has property AuthenticationType set to a value that is not supported in Microsoft Azure SQL Database v12.
Error SQL71564: The element Login: [Domain\User] has property IsMappedToWindowsLogin set to a value that is not supported in Microsoft Azure SQL Database v12.

我意识到 Azure SQL 不支持 Windows 身份验证。但是有没有一个选项可以简单地忽略用户、登录等?

我已经阅读了各种声称您可以删除登录名和用户的帖子。然后在导出后重新创建它们。不幸的是,我不能这样做,因为这些对象被用于活动连接。我还读到有些人通过备份/恢复然后将用户放在辅助服务器上解决了这个问题。这可能会奏效,但肯定有更好的方法,而且工作量更少。

反编译代码,我可以看到 ExportBacpac 方法在哪里创建:

DacExtractOptions extractOptions = new DacExtractOptions()
      {
        EnforceSqlAzureRestrictions = true,
        IgnorePermissions = false,
        VerifyExtraction = true,
        ExtractNonApplicationDatabaseScopedElements = true
      };

当然,这都是私有的、内部的等等。可惜,我想关闭 EnfoceSqlAzureRestrictions!

有任何想法吗?

4

0 回答 0