2013-05-26 4 views
4

Есть ли способ, которым можно ограничить доступ к базе данных одним соединением с базой данных и только одним запросом на время? -В SQL Server 2008 R2 -Установить максимальное количество запросов для конкретного пользователя базы данных в SQL Server 2008 R2

Пример 1:

  • База данных: database_1
  • Имя пользователя: some_user
  • Пароль: some_pass

Первое подключение к database_1:

  • Подключение: xxx.xxx.xxx.xx1
  • ... Подключен к xxx.xxx.xxx.xx1

второе соединение с database_1:

  • соединения: xxx.xxx.xxx.xx2
  • ... Не удалось подключиться : xxx.xxx.xxx.xx2

some_user Пользователь пытается выполнить некоторый запрос:

Запрос 1:

select * 
from table1 
join ,...,join tableN 

Пример 2:

  • База данных: database_1
  • Имя пользователя: some_user
  • Пароль: some_pass

Первый Подключение к database_1:

  • соединение: xxx.xxx.xxx.xx1
  • ... Подключен к xxx.xxx.xxx.xx1

второго соединения с database_1:

  • соединение: xxx.xxx.xxx .xx2
  • ... Подключен к xxx.xxx.xxx.xx2

some_user пользователь пытается выполнить некоторый запрос, используя подключение: xxx.xx x.xxx.xx1

Query1:

select * from table1 join ,...,join tableN 

Результат: выполняется ... N записей вернулся

Теперь пользователь пытается выполнить другой запрос с помощью соединения: xxx.xxx.xxx.xx2

Query2:

select * from table1 join , ... , join tableN 

Результат: не выполняется ... не может выполняться более одного раза запроса в то время.

ответ

7

Вы можете создать любую политику доступа к вам, как с помощью logon triggers:

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

См. Ссылку на пример. Если вы ограничиваете пользователя только одним соединением за раз, то вы фактически ограничиваете пользователя только одним запросом за раз, поскольку для всех практических целей соединение может запускать только один запрос (без учета деталей MARS).

Связанная с этим концепция - это Resource Governor, которая позволяет ограничить ресурс, который пользователь может потреблять, назначая пользовательские сессии определенным рабочим нагрузкам и ограничивая распределение ресурсов рабочей нагрузки. Опять же, см. Ссылку для деталей и примеров.

+0

сейчас, он работает как шарм. tnx @Remus Rusanu – crsuarezf