由于缺少用户,通过c#的DACPAC部署失败

时间:2015-03-17 09:03:05

标签: c# sql-server

我写了一个小工具,它将.bak文件上传到本地SQL实例,然后从新创建的数据库中检索DACPAC。然后将DACPAC部署到另一个SQL实例,该实例不在同一台机器上。

所有这些步骤都是通过Microsoft.SqlServer.Smo和Microsoft.SqlServer.Dac在C#中完成的。但是,最后一步(部署到远程服务器)失败,说该进程无法创建用户。我可以放弃那个用户,但是我不想手动修改dacpac文件或数据库。我尝试配置部署过程以跳过用户,但它不起作用。

这是我的部署代码:

var remoteService = new DacServices(targetConnection);
try
{
    var package = DacPackage.Load(file.FullName);
    var settings = new DacDeployOptions();
    settings.IgnoreUserSettingsObjects = true;
    remoteService.Deploy(package, targetName, false, settings);
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    DeleteDb(targetName, targetConnection);
}

执行时,显示以下错误消息(自由翻译,无法在Google上发现此错误或类似内容,因此我不知道实际的英文翻译)

  

错误SQL72014:.Net SqlClient数据提供程序:Windows NT用户或组' [XYZ]'没找到。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我通过在提取dacPackage之前从源数据库中删除所有其他非系统用户来修复此问题。