在一台机器上获得DacServices错误,而不是在另一台机器上
本文关键字:机器 一台 DacServices 错误 | 更新日期: 2023-09-27 18:07:56
我们有一个过程,包括在SQL Server 11和SQL Server 10数据库服务器上创建数据库。我们使用dacpac在c#中通过DacServices导入这些数据。下面是正在使用的代码:
var dac = new DacServices(masterConnString);
using (var bacPac = BacPackage.Load(templatePath))
{
dac.ImportBacpac(bacPac, dealer.VSID.ToString(CultureInfo.InvariantCulture));
}
当我们在本地机器上运行它进行初始测试时,它按预期工作。然而,当我把它放在服务器上时(它作为WCF服务的一部分运行)。我得到以下错误:
Microsoft.SqlServer.Dac的类型初始化项。DacServices"扔了一个例外。
服务器堆栈跟踪:atSystem.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息回复,MessageFault错误,字符串动作,messagversion版本,FaultConverter故障转换器)atSystem.ServiceModel.Channels.ServiceChannel.HandleReply (ProxyOperationRuntime操作,ProxyRpc&rpc)System.ServiceModel.Channels.ServiceChannel。调用(字符串操作,单向布尔,ProxyOperationRuntime操作,对象[]Object[] out, TimeSpan timeout)System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage方法调用,ProxyOperationRuntime操作)System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage消息)
异常重新抛出在[0]:atSystem.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessagereqMsg; IMessageSystem.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData&msgData, Int32类型)在IWcfService。方法(字符串字符串,Int32整数)atWcfServiceClient。方法(String String, Int32 integer)
我终于弄明白了。这个有问题的DLL是microsoft . sqlserver . transactssql . scriptdom。一旦我引用了它,一切都如我所料。不过挖了好长时间才挖到那个地方。