Не является дубликатом Вставка пользовательского типа таблицы, иногда вызывающая ошибку преобразования
У меня есть определенный пользователем тип таблицы:
CREATE TYPE [dbo].[udtImport] AS TABLE(
Name varchar(256) null
Code varchar(32) null
StartDate varchar(256) null
EndDate varchar(256) null
DateCreated datetime null
Поле DateCreated равнозаполняется в моем слое БД с использованием DateTime.Now(),
, тогда как все остальные поля взяты из импортированной таблицы.
Когда я импортирую файл с заполненными полями даты, я получаю ошибку SQL:
Преобразование не удалось при преобразовании даты и / или времени из символьной строки.
Перехват сгенерированного кода с помощью SQL Profiler показывает это:
DECLARE @p1 dbo.udtImport;
INSERT INTO @p1
VALUES
( N'Kit A1',
N'A002',
'2016-04-02 00:00:00.000',
'2016-10-10 00:01:00.000',
'2018-10-22 16:08:28.6823468' );
exec impSaveImport @ImportList=@p1
impSaveImport - это хранимая процедура, которая имеет только однупараметр: таблица типа var и выполняет прямую вставку в таблицу [Import].Нет логики, нет триггеров, нет ссылок на другие таблицы.
Выполнение этого кода в SSMS показывает ту же ошибку, что и ожидалось.
Обрезка последних 4 цифр последнего поля DateTime приводит к успешному выполнению запроса вставки.
Пока все хорошо.
Когда я импортирую файл с пустыми полями StartDate и EndDate, я не получаю ошибки, и данные успешно вставляются в таблицу импорта.
Когда я перехватываю успешную вставку с использованием профилировщика, я получаю это:
DECLARE @p1 dbo.udtImport;
INSERT INTO @p1
VALUES
( N'Kit A1',
N'A002',
null,
null,
'2018-10-22 16:34:11.5243245' );
exec impSaveImport @ImportList=@p1
Имейте в виду, что этот запрос УСПЕШНО вставьте одну строку в таблицу Импорт.
Когда я запускаю этот последний запрос в SSMS, я получаю ту же ошибку преобразования, что и раньше,
но он работал без ошибок из моего приложения MVC!
Эта последняя часть меня поставила в тупик.
Как это может быть?
Проект использует MVC с SQL2016.