在一台机器上出现 DacServices 错误,而不是在另一台机器上

Posted

技术标签:

【中文标题】在一台机器上出现 DacServices 错误,而不是在另一台机器上【英文标题】:Getting DacServices error on one machine, not on another 【发布时间】:2015-11-08 03:00:33 【问题描述】:

我们的流程包括在 SQL Server 11 和 10 数据库服务器上创建数据库。我们正在使用 dacpac 通过 DacServices 在 C# 中导入这些数据。这是正在使用的代码:

var dac = new DacServices(masterConnString);
using (var bacPac = BacPackage.Load(templatePath))

    dac.ImportBacpac(bacPac, dealer.VSID.ToString(CultureInfo.InvariantCulture));

当我们在本地机器上运行它进行初始测试时,它按预期工作。但是,当我把它扔到服务器上时(它作为 WCF 服务的一部分运行)。我收到以下错误:

“Microsoft.SqlServer.Dac.DacServices”的类型初始化程序抛出 一个例外。

服务器堆栈跟踪:在 System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息 回复、MessageFault 故障、字符串操作、MessageVersion 版本、 故障转换器故障转换器)在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc& rpc) 在 System.ServiceModel.Channels.ServiceChannel.Call(字符串动作, Boolean oneway, ProxyOperationRuntime 操作, Object[] ins, Object[] 出局,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime 操作)在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 留言)

在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(消息数据& msgData, Int32 类型) 在 IWcfService.Method(String 字符串,Int32 整数)在 WcfServiceClient.Method(String string, Int32 integer)

提前致谢。

【问题讨论】:

从我读到你的问题,有一个 Dll assembly 问题,我觉得这个特定的程序集是如何在本地引用的。它是否标记为 CopyLocal = true 也可以是 GAC 检查你的所有引用并确保它们在目标机器上相同 【参考方案1】:

我终于弄明白了。有问题的 DLL 是 Microsoft.SqlServer.TransactSql.ScriptDom。一旦我引用了它,一切都按预期工作。不过,还是花了很多时间才到达那个地方。

【讨论】:

以上是关于在一台机器上出现 DacServices 错误,而不是在另一台机器上的主要内容,如果未能解决你的问题,请参考以下文章

仅在一台机器上出现 HTML 对齐问题(均为 IE8)

urllib3.exceptions.NewConnectionError 错误在一台机器上处理但不在另一台机器上

是否可以在一台机器上以不同的端口运行多个Zookeeper实例?

从在一台机器上工作的浏览器下载 S3 图像并在另一台机器上给出 CORS 错误

为啥 django sqlite3 数据库在一台机器上与另一台机器上的工作方式不同?

如何在一台机器上使用资源(.txt 文件)和另一台机器上的脚本在 ssh 上运行 shell 脚本?