如何通过azure portal在cosmos db中保存和执行存储过程?

时间:2017-08-17 17:29:32

标签: azure stored-procedures azureportal azure-cosmosdb

我尝试从Script Explorer - > Stored Procedure视图执行此操作,但是当我使用按钮保存&执行,只会在以下错误消息中显示结果:

  

无法保存脚本

     

数据库帐户:myaccountname,脚本:HelloWorld,消息:{"代码":500,"正文":" {\"消息\&#34 ;:\"错误有   。发生\"}"}

Results下的文本框未更改。

下面是它在天蓝色门户网站中的外观截图: Azure portal does not Save and Execute Stored Procedure

2 个答案:

答案 0 :(得分:1)

@MichaelRätzel:我刚刚编写了一个非常简单的CosmosDB脚本并在Azure门户上运行它。

function TestSample() {
    getContext().getResponse().setBody("Hello World");
}

这是我的结果:

Azure Portal screenshot of succesful save

关于Failed to save the stored procedure,我遇到了同样的问题。我为解决这个问题所做的是:

    首先
  1. Save存储过程
  2. 左键单击左栏中的当前SP
  3. Save & Execute SP
  4. 我认为这是Azure门户的技术问题。试试这个并告诉我结果。

答案 1 :(得分:0)

如果要在Azure门户上测试此功能,可以删除参数“prefix”并将变量名称“prefix”添加到存储过程。

此错误的原因是此函数需要来自外部的数据(通过参数),并且您不在Azure门户上提供它。

function upsertFans() {
    var prefix = "";
    var collection = getContext().getCollection();

    // Query documents and take 1st item.
    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT * FROM root r',
        function (err, feed, options) {
            if (err) throw err;

            // Check the feed and if empty, set the body to 'no docs found', 
            // else take 1st element from feed
            if (!feed || !feed.length) 
                getContext().getResponse().setBody('no docs found');
            else
                getContext().getResponse().setBody(prefix + JSON.stringify(feed[0]));
        });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}