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

时间:2015-10-15 11:31:00

标签: sql-server historian wonderware

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

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

错误讯息:

  

将数据类型nvarchar转换为(null)时出错。

问题出在vValue列。

column vValue(nvarchar, null) 

它在数据库中的外观:

enter image description here

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

上一篇文章的列错了,我道歉。

3 个答案:

答案 0 :(得分:1)

在联系Wonderware支持后,我发现vValue列不支持INSERT设计。它是一个字符串值,更新应该通过StringHistory表执行。

答案 1 :(得分:0)

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

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

Cast" error1" FLOAT是没有意义的。 Float是一个例子:1.15,12.00,150.15 当你尝试CAST" Error1"为了漂浮,他试图改变文本" error1"数字,他不能,这是逻辑。

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

答案 2 :(得分:0)

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

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

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

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

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

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

有了这个说,你需要插入标签历史的原因是什么?可能还有其他可行的解决方法。