【问题标题】:'OutputDataConversionError.TypeConversionError' when inserting data into Azure SQL Database table from Azure Stream Analytics将数据从 Azure 流分析插入 Azure SQL 数据库表时出现“OutputDataConversionError.TypeConversionError”
【发布时间】:2019-10-09 13:20:15
【问题描述】:

我正在尝试学习 Azure IoT。我想要将 MQTT 消息发送到 IoT Hub。从 IoT 中心,我使用流分析将数据输出到 SQL 数据库。但目前在流分析输出中,我有这个错误:

[上午 9:12:30] 源“OUTPUTSQL”在处理时间“2019-05-23T01:12:30.5631321Z”和“2019-05-23T01:12”之间出现了 1 次“OutputDataConversionError.TypeConversionError”类型: 30.5631321Z'。

这是我要保存的数据

{"ActionBy":"admin","ActionDate":"2019-05-22T16:00:00.0000000","Topic":"IoT","Message":"Hello World","QoS":" 1","EventProcessedUtcTime":"2019-05-23T00:19:31.8287610Z","PartitionId":0,"EventEnqueuedUtcTime":"2019-05-23T00:19:31.7170000Z","IoTHub":{"MessageId ":null,"CorrelationId":null,"ConnectionDeviceId":"hartaMQTT-Device01","ConnectionDeviceGenerationId":"636936650733289038","EnqueuedTime":"2019-05-23T00:19:31.6820000Z","StreamId":null }}

我认为错误出在 IoTHub 部分。

这是我尝试保存的 Azure Sql Server 中的表:

CREATE TABLE [dbo].[IoTMQTT](
[EventID] [bigint] IDENTITY(1,1) NOT NULL,
[ActionBy] [nvarchar](400) NOT NULL,
[ActionDate] [datetime] NOT NULL,
[Topic] [nvarchar](400) NULL,
[Message] [nvarchar](400) NULL,
[QoS] [nvarchar](400) NULL,
[EventProcessedUtcTime] [datetime] NULL,
[PartitionId] [nvarchar](400) NULL,
[EventEnqueuedUtcTime] [datetime] NULL,
[IoTHub] [nvarchar](max) NULL,
)

有什么问题?是数据类型吗?请帮我。谢谢!

【问题讨论】:

  • Azure SQL Server 无法将日期“2019-05-23T00:19:31.8287610Z”转换为日期时间。

标签: sql-server azure azure-sql-database


【解决方案1】:

Azrue SQL 数据库可以将“2019-05-23T00:19:31.8287610Z”转换为datetime2smalldatetimetimedatedatetime 除外。这是错误按摩:

根据您的数据,我认为数据类型datetime2 最适合您。

请修改您的表格,将 ActionDate、EventProcessedUtcTime、EventEnqueuedUtcTime 列更改为 datetime2

希望这会有所帮助。

【讨论】:

  • 嗨@Leon,我有同样的问题,但即使将其转换为datetime2,它仍然会给出同样的错误。处理时间 '2019-09-30T06:00:01.3315876Z' 和 '2019-09-30T06:00:01.3396220Z' 之间的 OutputDataConversionError.TypeConversionError'... 有什么解决方法吗?
  • 嗨@VivekAnanthan,您可以在堆栈溢出中发布一个新问题,其中包含更多详细信息,例如 Mru。
  • @VivekAnanthan 在我的情况下,它是我没有提供的字段,但它在数据库端不可为空。这很奇怪,因为字段本身不是 datetime 类型,而是错误消息提示日期问题。
猜你喜欢
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多