Недавно я столкнулся с ситуацией, когда меня пригласили помочь управлять размещенной системой, в которой мы размещаем наш собственный продукт для наших клиентов. Каждому клиенту предоставляется уникальный пользователь для конкретного экземпляра SQL, и мы запускаем несколько экземпляров, однако один экземпляр может иметь от 50 до 100 пользователей. Мы также позволяем партнерским сторонним поставщикам запускать программное обеспечение, которое также обращается к той же базе данных клиента, что и наше собственное программное обеспечение для того же пользователя. Однако я столкнулся с тем, что сторонние программы часто плохо реализованы и потребляют огромное количество ЦП, сбивая клиента с толку. Я знаю, что с помощью диспетчера ресурсов вы можете ограничить количество ресурсов, к которым имеет доступ конкретный пользователь. Однако мне интересно, есть ли способ ограничить ресурсы, к которым конкретное имя программы имеет доступ, или установить для него более низкий приоритет? У нас есть ограниченные временные рамки, когда могут работать эти сторонние приложения, поэтому я не могу больше растягивать сроки приложения. Я пока не нашел способа ограничить ресурсы или приоритет конкретной программы при доступе к SQL. Мне было интересно, есть ли какие-либо ресурсы для такого рода информации, которая не появлялась при моих поисках?
Я прочитал кое-что, и, судя по всему, с помощью регулятора ресурсов вы можете классифицировать каждый сеанс / соединение и назначить его определенному пулу ресурсов. Пул ресурсов - это то, что может ограничивать ресурсы по вашему усмотрению. Однако для этого вам необходимо определить функцию-классификатор, которая будет смотреть на атрибуты сеанса и определять, к какому пулу ресурсов будет принадлежать соединение.
Вы можете использовать APP_NAME()
функция в SQL (в рамках функции классификатора), чтобы получить имя приложения, которое устанавливает соединение. А затем назначьте пулу ресурсов с назначенными ресурсами арендодателя.
Справочные ссылки:
Регулятор ресурсов - https://msdn.microsoft.com/en-us/library/bb933866(v=sql.105).aspx
Создание и тестирование определяемой пользователем функции классификатора - https://msdn.microsoft.com/en-us/library/cc645892(v=sql.105).aspx