Ошибка DacServices на одном компьютере, на другом - нет

У нас есть процесс, который включает создание базы данных на серверах баз данных SQL Server 11 и 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 вызвал исключение.

Трассировка стека сервера: в System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderaught (ответ на сообщение, ошибка MessageFault, действие строки, версия MessageVersion, FaultConverter faultConverter) в System.ServiceModel.Channels.ServiceChannel.HandleReply (операция System.ServiceModel.Channels.ServiceChannel.HandleReply) ServiceModel.Channels.ServiceChannel.Call (действие String, одностороннее логическое значение, операция ProxyOperationRuntime, входы Object [], выходы Object [], тайм-аут TimeSpan) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage) в методе System.CallMessage. ServiceModel.Channels.ServiceChannelProxy.Invoke (сообщение IMessage)

Исключение повторно генерируется в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData и msgData, тип Intchodata) String string, целое число Int32) в WcfServiceClient.Method (строка String, целое число Int32)

Заранее спасибо.


person Monzie    schedule 14.08.2015    source источник
comment
звучит для меня только после прочтения вашей проблемы, что есть Dll assembly проблема, как эта конкретная сборка упоминается локально ... помечена ли она CopyLocal = true, также может ли это быть GAC проверить все ваши ссылки и убедиться, что они одинаковы на целевой машине   -  person MethodMan    schedule 14.08.2015


Ответы (1)


Я наконец понял это. Ошибка DLL была Microsoft.SqlServer.TransactSql.ScriptDom. Как только я упомянул об этом, все заработало, как ожидалось. Но чтобы добраться до этого места, потребовалось немало копаний.

person Monzie    schedule 25.08.2015