SQL插入以错误的行顺序发布

SQL插入以错误的行顺序发布,sql,sql-server,node.js,Sql,Sql Server,Node.js,我使用node.js和mssql将值从嵌入式设备发布到SQL数据库。每个间隔I递增一个行ID和一个传感器值,然后“插入”到数据库中。但是,当我查看数据库时,这些行似乎以错误的顺序发布(请参见屏幕截图)。一些丢失的条目出现得更晚 我已经调试了代码,事件以正确的顺序发生。所以这是在交易的某个地方发生的 代码如下: var sql = require('mssql'); //sql var i = 0; //database configuration var config = {

我使用node.js和mssql将值从嵌入式设备发布到SQL数据库。每个间隔I递增一个行ID和一个传感器值,然后“插入”到数据库中。但是,当我查看数据库时,这些行似乎以错误的顺序发布(请参见屏幕截图)。一些丢失的条目出现得更晚

我已经调试了代码,事件以正确的顺序发生。所以这是在交易的某个地方发生的

代码如下:

var sql = require('mssql');     //sql 

var i = 0;

//database configuration
var config = {
   user: '*****',
   password: '******',
   server: '******', 
   database: '*******',

   options: {
      encrypt: false // Use this if you're on Windows Azure
   }
}

//main activity function to be called every 1 second
periodicActivity();

//setInterval function sets the period and function to be called
setInterval(function () { periodicActivity() }, 1000)

//
function periodicActivity() {    
    i = i + 1;
    var y = Math.random();

    var connection = new sql.Connection(config, function (err) {
        // ... error checks

       // Query       
       var request = new sql.Request(connection); 
       request.query('insert into SensorData (Id, data) values (' + i + ',' + y + ')', function (err, recordset) {
        // ... error checks
    });

});

//close the SQL connection
//connection.close();
}
数据库屏幕截图:

欢迎提供任何帮助或建议。 谢谢
T

插入操作可能按照您的预期进行。数据只是以伪随机顺序显示的,这是由一些内部因素造成的。选择数据时对其进行排序,即可完成

另外,为什么不将id设置为自动递增的主键,然后只设置

request.query('insert into SensorData (data) values (' + y + ')', function (err, recordset) {
    // ... error checks
});

通常,如果您在查询中未指定
ORDER BY
子句,则行将以任意顺序返回,这里似乎就是这种情况。它们似乎没有“错误”的顺序,您的屏幕截图只是显示它们,没有特定的顺序。如果您按
stamp
订购,会发生什么情况?表上是否有聚集索引或任何其他索引?@Adrian-我的“stamp”有问题。格式如下所示:0x00000000000009AA 0x00000000000009AC 0x00000000000009AE 0x00000000000000000009b1 0x00000000000009B2 0x00000000000009B4您是否认为正确?@user3238504您已打开十六进制视图。除此之外,我看不出有什么问题。@Martin-如果我使主键自动递增,那是在我的嵌入式设备发送数据时递增还是在服务器上递增?(你是如何做到这一点的)。目前我知道它们是无序的,因为主键是在测量样本时生成的。(我是新手!)哦,不用担心。sql数据库在服务器上完成自动增量。听起来最好的解决方案是创建一个新的列-时间戳,并在测量数据时发送数据和精确的时间。然后,您可以根据时间戳进行排序,而不必担心插入顺序。我用于发送数据的设备没有准确的时间,因此我希望服务器在输入数据时对其进行标记。如何在查询字符串中命令服务器执行此操作?(谢谢你的帮助。)哦,其实很容易。创建一个数据类型为timestamp的列。在插入数据时,它将自动插入当前时间。当我创建数据类型时间戳时,我看到一个十六进制字符串。我认为十六进制字符串中没有足够的信息来包含日期和时间。问题是,尽管在VisualStudio中,我不知道如何更改“视图”以十六进制显示?(见原始屏幕截图)。