INSERT Query SQL (ошибка преобразования типа данных nvarchar в (ноль))
Я пытаюсь запустить INSERT
запрос, но он просит меня преобразовать varchar
к нулю. Вот код:
INSERT Runtime.dbo.History (DateTime, TagName, vValue)
VALUES ('2015-09-10 09:00:00', 'ErrorComment', 'Error1')
Сообщение об ошибке:
Ошибка преобразования типа данных nvarchar в (null).
Проблема в vValue
колонка.
column vValue(nvarchar, null)
Как это выглядит в базе данных:
Значения внутри vValue
размещены программой, которую я использую. Я просто пытаюсь вручную вставить в базу данных.
Последний пост был с неправильной колонкой, прошу прощения.
3 ответа
После обращения в службу поддержки Wonderware я обнаружил, что INSERT не поддерживается в столбце vValue. Это строковое значение, и обновления должны выполняться через таблицу StringHistory.
Какой тип значения столбца в базе данных?
Если это число с плавающей точкой, вы должны вставить число, а не строку.
Приведение "error1" к FLOAT не имеет смысла. Число с плавающей точкой является примером числа: 1.15, 12.00, 150.15. Когда вы пытаетесь выполнить CAST "Error1" для перемещения, он пытается преобразовать текст "error1" в число, а он не может, это логика.
Вы должны вставить номер в столбце.
Я думаю, что могу помочь вам с вашей проблемой, так как у меня есть достойная тестовая среда для экспериментов.
Runtime.dbo.History
это не таблица, с которой вы можете напрямую взаимодействовать, это View
, В нашем случае здесь вид определяется как:
select * from [INSQL].[Runtime].dbo.History
... Что, как я считаю, подразумевает, что данные истории, которые вы просматриваете, взяты из самого хранилища плоских файлов Historian, системы, являющейся собственностью Wonderware Вы можете увидеть некоторый успех, если развернете SQL Server Management Studio.
Server Objects -> Linked Servers -> INSQL
... и играть с данными там, но я действительно не рекомендовал бы это.
С учетом сказанного, по какой причине вам нужно вставить историю тегов? Могут быть другие обходные пути для цели, в которой Вы нуждаетесь.