Как сохранить и выполнить хранимую процедуру в базе данных Cosmos через лазурный портал?

Я пытался сделать это из представления Script Explorer->Stored Procedure, но когда я использую там кнопку Сохранить и выполнить, это приводит только к следующему сообщению об ошибке:

Не удалось сохранить скрипт

Учетная запись базы данных: myaccountname, Сценарий: HelloWorld, Сообщение: {"code":500,"body":"{\"message\":\"Произошла ошибка.\"}"}

И текстовое поле под Results не изменилось.

Ниже приведен скриншот того, как это выглядит на портале Azure: Портал Azure не сохраняет и не выполняет хранимую процедуру


person Michael Rätzel    schedule 17.08.2017    source источник
comment
Это секционированная коллекция?   -  person Matias Quaranta    schedule 18.08.2017
comment
Эта коллекция не разделена.   -  person Michael Rätzel    schedule 18.08.2017


Ответы (2)


@MichaelRätzel: я только что написал очень простой сценарий CosmosDB и запустил его на портале Azure.

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

И вот мой результат:

Снимок экрана успешного сохранения портала Azure

У меня та же проблема с вами по поводу Failed to save the stored procedure. Что я сделал для решения этой проблемы:

  1. Save сначала хранимая процедура
  2. Щелкните левой кнопкой мыши на текущем SP в левом столбце.
  3. Save & Execute СП

Я думаю, что это техническая проблема портала Azure. Попробуйте это и скажите мне результат.

person Minh Duc Lai Trung    schedule 09.09.2017
comment
Я попробовал, как вы предложили. Вот что я заметил: Сохранение работало, несмотря на сообщение об ошибке. Затем я использовал кнопку Save & Execute: появилось новое сообщение об ошибке (Failed to save the script), а текстовое поле под Results осталось пустым. Таким образом, этот подход не решил проблему выполнения хранимой процедуры. - person Michael Rätzel; 14.09.2017
comment
Функция сохранения и выполнения отключена, знаете почему? - person Grey Wolf; 08.01.2018

Если вы хотите протестировать эту функцию на портале 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.');
}
person Minh Duc Lai Trung    schedule 31.08.2017
comment
Этот подход не работает. Я попытался Save & Execute после удаления параметра, но все равно получил сообщение об ошибке: Failed to save the script - person Michael Rätzel; 07.09.2017
comment
@MichaelRätzel: Хм... Можете ли вы сохранить только сценарий? Я только что обновил свой скрипт выше (я удалил некоторые символы уценки в своем коде), вы можете скопировать мой код и попробовать сохранить и выполнить. Если вы все еще не можете запустить его, скажите мне. - person Minh Duc Lai Trung; 07.09.2017
comment
Я снова протестировал его с вашим кодом, вот результат: хотя сообщение об ошибке Failed to save the stored procedure все еще появлялось, сценарий был фактически сохранен. Сохраненный сохраненный процесс стал видимым после ручного обновления представления. Так что экономия сработала. Чего я до сих пор не знаю, так это того, как выполнить хранимую процедуру из лазурного портала. Текстовое поле под Results по-прежнему пусто. Но я бы ожидал, что хранимая процедура выведет что-то с данным кодом. - person Michael Rätzel; 07.09.2017
comment
Когда я создаю и сохраняю sproc, кнопка «Сохранить и выполнить» никогда не активируется, что бы я ни делал. Не уверен, как выполнить с портала. Похоже, мне придется написать код, чтобы сделать это. - person Mike W; 12.12.2017