Поэтому мой сервер MVC при запуске будет создайте экземпляр DbContext на текущем сервере базы данных, загрузите содержимое файла sql с помощью File.ReadAllText, а затем передайте его методу DbContext.Database.ExecuteSqlRaw.
Однако я получаю странную ошибку синтаксического анализа:
Входная строка имела неправильный формат. Не удалось выполнить синтаксический анализ вблизи смещения 17055. Ожидается цифра ASCII.
Причина, по которой это странно, заключается в том, что я могу запустить тот же самый файл sql из SSMS, и там он будет работать без проблем.
Насколько я могу судить, смещение находится в строке 436 сценария резервного копирования:
Код: Выделить всё
@DirectoryStructure nvarchar(max) = '{ServerName}${InstanceName}{DirectorySeparator}{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}',
Я пытался загрузить sql файл с явным указанием кодировки UTF8, но конечный результат тот же. Я не думаю, что это проблема с кодировкой, иначе я бы увидел ошибки и в SSMS.
Существуют ли ограничения на запуск сценариев .sql через DbContext.Database .ExecuteSqlRaw, например, связанный с длиной? Или элементы сценария? Есть ли способ заставить это работать через EntityFramework или для этой цели мне нужен более «надежный» клиентский класс SQL?
Подробнее здесь: https://stackoverflow.com/questions/787 ... fset-error