INSERT 查询 SQL(将数据类型 nvarchar 转换为 (null) 时出错)

INSERT Query SQL (Error converting data type nvarchar to (null))

我正在尝试 运行 一个 INSERT 查询,但它要求我将 varchar 转换为 null。这是代码:

INSERT Runtime.dbo.History (DateTime, TagName, vValue)
VALUES ('2015-09-10 09:00:00', 'ErrorComment', 'Error1')

错误信息:

Error converting data type nvarchar to (null).

问题出在 vValue 列。

column vValue(nvarchar, null) 

它在数据库中的样子:

vValue 中的值由我正在使用的程序放置。我只是想手动插入数据库。

上次 post 列错了,抱歉。

数据库中列值的类型是什么?

如果是浮点数,你应该插入一个数字,而不是字符串。

将 "error1" 转换为 FLOAT 是无意义的。 浮点数是一个数字,例如:1.15、12.00、150.15 当您尝试将 "Error1" 转换为浮动时,他会尝试将文本 "error1" 转换为数字,但他不能,这是合乎逻辑的。

您应该在该列中插入一个数字。

我想我可以帮助你解决你的问题,因为我有一个不错的测试环境可以用来试验。

Runtime.dbo.History 不是您可以直接与之互动的 table,它是 View。在我们的例子中,视图定义为:

select * from [INSQL].[Runtime].dbo.History

...我认为这意味着您正在查看的历史数据来自 Historian 平面文件存储本身,这是一个 Wonderware 专有系统。如果您扩展 SQL Server Management Studio 的

,您可能会看到一些成功
Server Objects -> Linked Servers -> INSQL

...并在那里玩弄数据,但我真的不推荐它。

话虽如此,您为什么需要插入标签历史记录?可能还有其他解决方法可以满足您的需要。

联系 Wonderware 支持后,我发现 vValue 列在设计上不支持 INSERT。这是一个字符串值,应该通过 StringHistory table.

进行更新