SQL-сервер сохраняет только нулевые значения для некоторых столбцов

У меня есть таблица с некоторыми столбцами типа nvarchar (max), varchar (100) и битового типа. Я вставляю в него значения программно, используя SQLCommand.ExecuteNonQuery().

Я предоставляю строковые значения для всех столбцов nvarchar и varchar и 0 или 1 для битового столбца, используя SQLParametr.AddWithValue("@parameterName", parameterValue)

Для некоторых столбцов он сохраняет правильные значения, но для некоторых сохраняются только нулевые значения даже после предоставления правильных значений параметров. Столбцы, в которых хранятся нулевые значения, имеют тип varchar(100) и бит.

В среде разработки все работает нормально, в среде тестирования возникает проблема.

The insert query looks like "INSERT INTO SOME_TABLE(Col1,Col2,Col3,Col4) VAlues(@param1, @param2, @param3, @param4)"

Значения параметров являются правильными даже в тестовой среде, проверенной так же, путем печати значений в файл журнала.

Любое объяснение этому необычному поведению.


person Mac    schedule 12.06.2015    source источник
comment
Для конкретного ответа нужна конкретная проблема. Махнув рукой, ответ будет заключаться в том, что это должно сработать, вы, должно быть, делаете что-то не так.   -  person Lasse V. Karlsen    schedule 12.06.2015
comment
попробуйте открыть профилировщик sql и посмотреть, какой запрос передается на сервер sql, проверьте передаваемые значения. должно быть что-то не так со значениями.   -  person Sushil    schedule 12.06.2015
comment
Попробуйте выполнить вставку, используя значения напрямую, без использования .AddWithValue, и посмотрите, как выглядит оператор SQL.   -  person SteveFerg    schedule 12.06.2015
comment
@stevefreg, да, я сделал это в окне запроса sql, и все работает нормально. завтра постараюсь нырнуть поглубже   -  person Mac    schedule 14.06.2015


Ответы (1)


@ Лассе В. Карлсен, в каком-то смысле вы были правы (размахивающий ответ будет заключаться в том, что это должно сработать). Оказывается, это глупая проблема.

Все запросы были написаны в отдельном файле класса, на который ссылались в проекте через добавление ссылки на проект (dll).

Недавно я внес некоторые изменения в файл класса (запросы) и повторно развернул его. В среде разработки он работал нормально, но в среде тестирования решение все еще ссылается на старую dll, следовательно, старые запросы, в которых я не передаю никаких значений в все и столбцы были разрешены null true, следовательно, сохранялись нулевые значения.

Удаление старой dll из GAC и установка новой dll устранила проблему.

person Mac    schedule 29.06.2015