2017-08-17 96 views
1

我试图从Script Explorer做到这一点 - >Stored Procedure看法,但是当我使用的按钮保存&执行那里,它只是给出了以下错误消息结果:如何通过天蓝色门户在cosmos数据库中保存和执行存储过程?

无法保存脚本

数据库帐户:myaccountname,脚本:HelloWorld的,消息:{ “代码”:500, “体”: “{\” 消息\ “:\” 已 发生错误\ “}”}

Results下的文本框不变。

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

+0

这是一个分区集合吗? –

+0

该集合未分区。 –

回答

0

如果你想测试在Azure门户网站这个功能,你可以删除参数“前缀”,并添加一个变量名“前缀”来您的存储过程。

此错误的原因是此功能需要来自外部的数据(通过参数),并且您不在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.'); 
} 
+0

这种方法似乎不起作用。删除参数后,我尝试了'Save&Execute',但仍收到错误信息:'无法保存脚本' –

+0

@MichaelRätzel:嗯...你能“保存”脚本吗?我刚才更新了我的脚本(我删除了我的代码中的一些降价字符),您可以复制我的代码并尝试“保存并执行”。如果你仍然无法运行,告诉我。 –

+0

我再次用您的代码对其进行了测试,结果如下:虽然'保存存储过程失败'错误消息仍然出现,但脚本实际上已保存。手动刷新视图后,保存的存储过程变为可见。所以节约工作。我仍然不知道如何从Azure门户执行存储过程。 “结果”下的文本框仍然为空。但我希望存储过程用给定的代码输出一些东西。 –

0

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

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

我认为这是Azure门户的技术问题。试试这个并告诉我结果。

+0

我按照你的建议试过了。以下是我观察到的情况:保存工作,尽管有错误消息。然后我使用了“Save&Execute”按钮:显示一条新的错误信息('保存脚本失败),“Results”下的文本框保持空白。所以这种方法并没有解决执行存储过程的问题。 –

+0

保存并执行被禁用,你知道为什么吗? –