Ошибка EF ExecuteSqlRaw «Не удалось проанализировать ближайшее смещение»C#

Место общения программистов C#
Anonymous
Ошибка EF ExecuteSqlRaw «Не удалось проанализировать ближайшее смещение»

Сообщение Anonymous »

Мне хотелось бы выполнить довольно большой скрипт .sql. В частности, я хотел бы обеспечить доступность этих сценариев резервного копирования на сервере, и мне хотелось бы, чтобы мое приложение MVC делало это.
Поэтому мой сервер MVC при запуске будет создайте экземпляр DbContext на текущем сервере базы данных, загрузите содержимое файла sql с помощью File.ReadAllText, а затем передайте его методу DbContext.Database.ExecuteSqlRaw.
Однако я получаю странную ошибку синтаксического анализа:

Входная строка имела неправильный формат. Не удалось выполнить синтаксический анализ вблизи смещения 17055. Ожидается цифра ASCII.

Причина, по которой это странно, заключается в том, что я могу запустить тот же самый файл sql из SSMS, и там он будет работать без проблем.
Насколько я могу судить, смещение находится в строке 436 сценария резервного копирования:

Код: Выделить всё

@DirectoryStructure nvarchar(max) = '{ServerName}${InstanceName}{DirectorySeparator}{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}',
В частности, это указывает на букву S в {ServerName.
Я пытался загрузить sql файл с явным указанием кодировки UTF8, но конечный результат тот же. Я не думаю, что это проблема с кодировкой, иначе я бы увидел ошибки и в SSMS.
Существуют ли ограничения на запуск сценариев .sql через DbContext.Database .ExecuteSqlRaw, например, связанный с длиной? Или элементы сценария? Есть ли способ заставить это работать через EntityFramework или для этой цели мне нужен более «надежный» клиентский класс SQL?

Подробнее здесь: https://stackoverflow.com/questions/787 ... fset-error

Вернуться в «C#»