Оператор удаления зависает на SQL Server без видимой причины

Я понял, что: - Выполнение запроса HTTP POST со ссылкой « https://fcm.googleapis.com/fcm/send » с требуемым заголовком и данными, на которые ссылаются ЗДЕСЬ . Constants.LEGACY_SERVER_KEY - это локальная переменная класса, вы можете найти это в настройках проекта Firebase -> CLOUD MESSAGING -> Legacy Server. Вы должны пройти токен регистрации устройства (reg_token) в нижеприведенном фрагменте кода ЗДЕСЬ. Однако вам нужна okhttp зависимость библиотеки, чтобы получить этот сниппет.

public static final MediaType JSON
        = MediaType.parse("application/json; charset=utf-8");
private void sendNotification(final String regToken) {
    new AsyncTask(){
        @Override
        protected Void doInBackground(Void... params) {
            try {
                OkHttpClient client = new OkHttpClient();
                JSONObject json=new JSONObject();
                JSONObject dataJson=new JSONObject();
                dataJson.put("body","Hi this is sent from device to device");
                dataJson.put("title","dummy title");
                json.put("notification",dataJson);
                json.put("to",regToken);
                RequestBody body = RequestBody.create(JSON, json.toString());
                Request request = new Request.Builder()
                        .header("Authorization","key="+Constants.LEGACY_SERVER_KEY)
                        .url("https://fcm.googleapis.com/fcm/send")
                        .post(body)
                        .build();
                Response response = client.newCall(request).execute();
                String finalResponse = response.body().string();
            }catch (Exception e){
                //Log.d(TAG,e+"");
            }
            return null;
        }
    }.execute();

}

далее, если вы хотите отправить сообщение в определенную тему, замените 'regToken' на json, как на этом

json.put("to","/topics/foo-bar")

, и, наконец, не забудьте добавить разрешение INTERNET в свой AndroidManifest. xml.

ВАЖНО: - Использование вышеуказанного кода означает, что ваш ключ сервера находится в клиентском приложении. Это опасно, поскольку кто-то может вникнуть в ваше приложение и получить ключ сервера для отправки вредоносных уведомлений вашим пользователям.

9
задан morgb 12 August 2016 в 18:57
поделиться

3 ответа

Одно отсутствие информации является количеством индексов на таблице, из которой Вы удаляете данные. Поскольку SQL Server использует Первичный ключ в качестве указателя в каждом индексе, любое изменение в первичном индексе требует обновления каждого индекса. Хотя, если мы не говорим высокое количество, это не должно быть проблемой.

Я предполагаю из Вашего описания, что это - первичная таблица в базе данных, на которую ссылаются много других таблиц в отношениях FK. Это составляло бы большое количество блокировок, поскольку оно проверяет остальную часть таблиц на ссылки. И, если у Вас есть расположение каскадом, удаляет включенный, это могло бы привести к удалению в таблице, требование проверяет несколько таблиц глубоко.

4
ответ дан 4 December 2019 в 22:31
поделиться

Попытайтесь воссоздать индекс на той таблице и попытайтесь повторно создать статистику.

ПЕРЕИНДЕКС DBCC

UPDATE STATISTICS

3
ответ дан 4 December 2019 в 22:31
поделиться

Хорошо, это является смущающим.

Коллега добавил триггер к той таблице только что, и триггер имел ошибку. Хотя он исправил ошибку, триггер никогда не воссоздавался для той таблицы.

Таким образом, сервер ничего на самом деле не делал, он просто сделал это огромное количество раз.

О, хорошо...

Спасибо за глазные яблоки всем, кто считал это и обдумал проблему.

Я собираюсь принять ответ Josef, поскольку его было самым близким, и косвенно затронул по проблеме с расположением каскадом, удаляет.

1
ответ дан 4 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: