我写了一个小工具,它将.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]'没找到。
有什么想法吗?
答案 0 :(得分:0)
我通过在提取dacPackage之前从源数据库中删除所有其他非系统用户来修复此问题。