Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Azure计划程序中运行本机SQL命令_Javascript_Azure - Fatal编程技术网

Javascript 在Azure计划程序中运行本机SQL命令

Javascript 在Azure计划程序中运行本机SQL命令,javascript,azure,Javascript,Azure,我已经试着实现这一目标三天了,加上我的知识和搜索都是空白!刚刚编辑并将问题更改为更“一般”的问题,但会引导我找到解决方案 使用azure移动服务调度器JavaScript,我想为表中的每条记录增加一个值。基本上,在桌子上运行“turns++”,最多运行一定数量 有没有办法在azure调度程序中运行本机SQL命令 例如:连接到数据库并运行“SELECT*FROM tableName”,因为这样可以运行所需的增量 或者,是否有一种方法(我假设更复杂)对表中的记录运行“for each”,然后用递增的

我已经试着实现这一目标三天了,加上我的知识和搜索都是空白!刚刚编辑并将问题更改为更“一般”的问题,但会引导我找到解决方案

使用azure移动服务调度器JavaScript,我想为表中的每条记录增加一个值。基本上,在桌子上运行“turns++”,最多运行一定数量

有没有办法在azure调度程序中运行本机SQL命令

例如:连接到数据库并运行“SELECT*FROM tableName”,因为这样可以运行所需的增量

或者,是否有一种方法(我假设更复杂)对表中的记录运行“for each”,然后用递增的字段更新它们


提前谢谢

来自MSDN Evangelist的建议是,您不能在Azure调度程序中执行此操作,因为它只有3个动作动词-HTTP、HTTPS和队列。

解决方案是使用免费的azure网站及其新功能“web作业”。我用PHP实现了这一点,但web作业支持更多的语言

$options = array("Database" => "database name", 

                           "UID" => "userid",

                           "PWD" => "password",

                           "MultipleActiveResultSets" => false);

$conn = sqlsrv_connect($hostname, $options)or die ("Cannot connect to host");


sqlsrv_query($conn, "UPDATE schema.tablename SET turns = turns+1 WHERE turns < 10;")or die (print_r(sqlsrv_errors()));
$options=array(“数据库”=>“数据库名称”,
“UID”=>“userid”,
“PWD”=>“密码”,
“MultipleActiveResultSets”=>false);
$conn=sqlsrv_connect($hostname,$options)或die(“无法连接到主机”);
sqlsrv_查询($conn,“updateschema.tablename SET turns=turns+1,其中turns<10;”)或die(print_r(sqlsrv_errors());

有关Azure web作业的更多信息,请参见此处

您可以在Azure调度程序中执行此操作!它提供了一个特殊的连接,该连接通过与Azure移动服务关联的当前数据库进行初始化。而且非常容易使用:

function sql() {

    mssql.query('select top 3 * from TestTable', {
      success: function(results) {
         console.log(results);
         for (var testObj in results) {
           console.log('id: ' + results[testObj].id + 'name : ' + results[testObj].fname);
        }
      },
      error: function(err) {
                console.log("error is: " + err);
      }
   });
}
(请注意,这里“sql”只是我的调度程序作业的名称)唯一的技巧是,如果要访问不是标准移动服务API表的一部分的表,则必须显式地授予对以下表的读/写访问权

执行上述脚本的结果如下:


通过记录循环,您可以做的不仅仅是转储到日志,即执行其他查询等。您可以阅读的完整文档。

非常有趣,谢谢。事实证明,直接来自和MSDN福音传道者的建议是错误的!然而,我提供的答案没有错,因为它仍然有效!我不同意你的回答是正确的!问题是关于Azure调度器的,您提供了关于使用Azure Web作业的答案。Scheduler和WebJob是完全不同的服务。在您的回答中,您只是假装调度器不支持直接使用SQL Server。你甚至提到了一个来自MSDN的建议,但没有指向该来源的链接。问题是如何在azure中的azure数据库上按计划运行SQL命令,这可以通过这样做来回答。我会很高兴地更新我的答案与来源。我从来没有说过你的答案是错误的,只是他们都达到了相同的目标。事实上,Web作业似乎更好,因为免费的数量有更高的限制,而调度程序只有一个作业!伙计,你的问题,它的标题和内容都是关于Azure移动服务调度器的!!你的问题不是关于如何在特定的时间间隔内运行某些东西的一般问题。您的问题是关于如何在Azure Mobile Services Scheduler上执行XXXX操作。但我会在这里停止这段对话。