Надеюсь, ты в порядке!До сих пор мне никогда не приходилось сдавать собственный вопрос, потому что я обычно находил решение моей проблемы здесь при переполнении стека.Однако на этот раз я потерян, и я надеюсь, что кто-то может мне помочь:
Я просто пытаюсь понять некоторые основы SSIS.Я уже запрограммировал пакет для загрузки данных из Web-API и помещения их в свою базу данных.Для ответа JSON от API я использую ссылку «Newtonsoft.Json.dll».Сам пакет работает нормально при выполнении в Visual Studio, однако, когда я развертываю его на SQL Server и пытаюсь выполнить его оттуда, происходит сбой.Я получаю следующее сообщение:
Insert and Update:Error: System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=a3ce77dd63f8269a' or one of its dependencies. The system cannot find the file specified.
File name: 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=a3ce77dd63f8269a' ---> System.IO.FileNotFoundException: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PrimeOutput(Int32 outputs, Int32[] outputIDs, PipelineBuffer[] buffers)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPrimeOutput(IDTSManagedComponentWrapper100 wrapper, Int32 outputs, Int32[] outputIDs, IDTSBuffer100[] buffers, IntPtr ppBufferWirePacket)
Итак, я понимаю, что Newtonsoft.Json.dll не может быть найден.
Я искал в интернете и обнаружил, что у нескольких людей были похожие проблемы.Я также мог бы найти темы здесь на этом сайте.Я понял, что мне нужно сделать две вещи:
- Строгое имя Newtonsoft.Json.dll
- Добавить его в GAC
К строгому имениэто, я использовал описанный здесь процесс: http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html
Я также проверил, работает ли это нормально, используя это: https://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/
Затем я установил его в GAC в командной строке, как это: gacutil -i (Path) Newtonsoft.Json.dll
К сожалению, я все еще получаю то же сообщение об ошибке при попытке выполнить его через SSMS.
У кого-нибудь есть другая идея?Я очень ценю вашу поддержку!
Кристиан