Пул соединений SQL и аудит Вход / Выход

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
25
задан Page 10 November 2008 в 22:27
поделиться

2 ответа

Помните, что соединения объединены на connectionstring. Если у Вас будет много баз данных и подключения с помощью многих connectionstrings, приложение создаст новое соединение, когда ни один не будет существовать с корректным connectionstring. Тогда это объединит то соединение и, если пул будет полон, ударьте существующее соединение. Значение по умолчанию Размер Объединения Max является 100 соединениями, поэтому если Вы обычно возвратитесь больше чем через 100 баз данных, Вы закроете и откроете соединения все время.

Это не идеально, но можно решить проблему, всегда соединяясь с единой базой данных (одна строка подключения) и затем переключить ИСПОЛЬЗОВАНИЕ 'контекста дб [DBName]'. Существуют недостатки:

  • Вы теряете способность определить, что пользователь/передача для каждого подключения представляет в виде строки (Вашему пользователю приложения нужно разрешение ко всем базам данных).
  • Ваш SQL становится более сложным (особенно при использовании out-of-the-box ORM или сохраненного procs).

Вы могли экспериментировать с увеличением Размера Объединения Max, если Ваше количество базы данных не огромно. Иначе, если некоторые базы данных используются часто, в то время как другие не, Вы могли выключить объединение на нечастом dbs. Оба объекта настроены через connectionstring.

До метрик, следя за развитием событий входа в систему и выхода из системы на SQL Server хорошее начало. Если Ваше приложение объединяет приятно, Вы не должны видеть многие из них.

14
ответ дан Corbin March 10 November 2008 в 22:27
поделиться
  • 1
    Действительно ли возможно сделать это, не импортируя material пакет? т.е. для Cupertino тема? – kosiara - Bartosz Kosarzycki 11 March 2019 в 06:38

В то время как в статье MSDN говорится, что событие будет только сгенерировано для неснова использованных соединений, документация SQL Server противоречит этому оператору:

"Контрольный класс событий Входа в систему указывает, что пользователь успешно вошел в систему Microsoft SQL Server. События в этом классе запущены новыми соединениями или соединениями, которые снова используются от пула соединения".

лучший способ измерить эффективность объединения состоит в том, чтобы собрать время, проведенное в соединении с и без объединения. С объединением необходимо видеть, что первое соединение является медленным, и последующие чрезвычайно быстры. Без объединения каждое соединение займет много времени.

, Если Вы хотите отследить событие Audit Logon, можно использовать столбец данных EventSubClass для того, является ли вход в систему со снова использованным соединением или новым соединением. Значение будет 1 для реального соединения и 2 для снова использованного соединения от pool.application.

35
ответ дан Uwe Keim 10 November 2008 в 22:27
поделиться
  • 1
    I' d как избегайте: InputDecoration' can't be assigned to the parameter type 'BoxDecoration' ошибка типа – kosiara - Bartosz Kosarzycki 11 March 2019 в 06:45
Другие вопросы по тегам:

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