powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли для конкретного пользователя задать режим грязного чтения?
25 сообщений из 31, страница 1 из 2
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39663914
Max_11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу дать доступ в базу MS SQL Server 2017 доступ пользователям, чьи запросы я не смогу контролировать.
Можно ли для конкретной учётки/роли указать что все запросы (разрешён только SELECT), которые выполняются от имени данной учётки, выполняются только в неблокирующем режиме?
Также интересует, можно ли для конкретной учётки задать таймаут запросов, чтобы по истечении определённого времени они просто останавливались?
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39663923
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max_11111,

Нет. Просто включите RCSI и забудьте про ваше грязное чтение
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39663972
Max_11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

RCSI больше подходит для OLTP систем с множеством коротких транзакций. У меня же хранилище данных, а к нему RCSI применять не рекомендуется из-за наличия длительных транзакций. Спасибо за ответ, я потестирую, попробую применить данную технологию к своей базе и посмотреть что получится
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39663987
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Max_11111]TaPaK,

авторRCSI больше подходит для OLTP систем с множеством коротких транзакций. нет
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39664015
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max_11111Можно ли для конкретной учётки/роли указать что все запросы (разрешён только SELECT), которые выполняются от имени данной учётки, выполняются только в неблокирующем режиме?
Также интересует, можно ли для конкретной учётки задать таймаут запросов, чтобы по истечении определённого времени они просто останавливались?
А может просто разобраться что тормозит и лочит ? И переписать по людски ?
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39664115
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxxMax_11111Можно ли для конкретной учётки/роли указать что все запросы (разрешён только SELECT), которые выполняются от имени данной учётки, выполняются только в неблокирующем режиме?
Также интересует, можно ли для конкретной учётки задать таймаут запросов, чтобы по истечении определённого времени они просто останавливались?
А может просто разобраться что тормозит и лочит ? И переписать по людски ?

Так запросы-то не его. Другой вопрос, что проанализировать отсутствующие индексы всегда можно.
И кстати, Resourse Governor тут не поможет?
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39664134
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryiMaxxпропущено...

А может просто разобраться что тормозит и лочит ? И переписать по людски ?

Так запросы-то не его. Другой вопрос, что проанализировать отсутствующие индексы всегда можно.
И кстати, Resourse Governor тут не поможет?
главное слово ресурс. И DDL logon тоже не поможет
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39664997
Max_11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxx,
DaniilSeryi,
TaPaK,

Все известные запросы оптимизированы, проблемы могут возникнуть только с неконтролируемыми запросами, написанными пользователями. В этом случае я не знаю к каким таблицам и с какими запросами они обратятся. И я не могу наложить индексы на каждую комбинацию всех полей всех таблиц. А в базе есть таблицы с сотнями миллионов строк, к которым даже максимально оптимизированные запросы подтормаживают.
Соответственно в идеале, чтобы не повесить систему, необходимо иметь механизм контроля, который будет:
1. Выполнять запросы этих пользователей с минимальным приоритетом, не блокируя ресурсы для других (важных) запросов
2. отрубать долгие запросы
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665296
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max_11111,

вы можете создать моментальный снимок базы для таких пользователей, но это связано с некоторым снижением дисковой производительности и требует Enterprise редакции, если не ошибаюсь.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665320
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max_111112. отрубать долгие запросы
С этим у вас, наверное, нет никаких сложностей:
настроить раз в N минут джоб, который ищет запросы дольше N минут от указанных пользователей, отправляет вам на почту отчет, что данные долгие запросы были прерваны, и выполняет kill для всех session_id из списка.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT S.login_name,
    S.host_name,
    R.session_id,
    R.start_time,
    DATEDIFF(MINUTE, R.start_time, GETDATE()) AS DurationMinutes,
    T.text
FROM sys.dm_exec_requests R
JOIN sys.dm_exec_sessions S ON R.session_id = S.session_id
CROSS APPLY sys.dm_exec_sql_text (R.sql_handle) T
WHERE login_name IN {список пользователей}
    AND DATEDIFF(MINUTE, R.start_time, GETDATE()) >= {максимальное время выполнения}
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665328
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, читаем про Resourse Governor:

https://blog.sqlauthority.com/2012/06/04/sql-server-simple-example-to-configure-resource-governor-introduction-to-resource-governor/

Max_11111 Соответственно в идеале, чтобы не повесить систему, необходимо иметь механизм контроля, который будет:
1. Выполнять запросы этих пользователей с минимальным приоритетом, не блокируя ресурсы для других (важных) запросов

А для
Max_11111 2. отрубать долгие запросы
можно рассмотреть нижеприведённый вариант. Но тут не будет сортировки по логинам, так что могут пострадать и "свои" пользователи/запросы.

Tip: Use the Query Governor to Control Excessive Query Execution

The query governor does not allow the execution of any query that has a running time that exceeds a specified query cost. The query cost is the estimated time, in seconds, required to execute a query, and it is estimated prior to execution based on an analysis by the query engine. By default, the query governor is turned off, meaning there is no maximum cost. To activate the query governor, complete the following steps:
1. In the Server Properties dialog box, go to the Connections page.
2. Select the option Use Query Governor To Prevent Long-Running Queries.
3. In the box below the option, type a maximum query cost limit. The valid range is 0 through 2,147,483,647. A value of 0 disables the query governor; any other value sets a maximum query cost limit.
4. Click OK.
With sp_configure, the following Transact-SQL statement will activate the query governor:
exec sp_configure "query governor cost limit", <limit>
You can also set a per-connection query cost limit in Transact-SQL using the following statement:
set query_governor_cost_limit <limit>
Note Before you activate the query governor, you should use the Query view to estimate the cost of current queries you are running on the server. This will give you a good idea of a value to use for the maximum query cost. You can also use the Query view to optimize queries.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665340
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

а вы точно понимаете разницу между долго и дорого?
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665344
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKDaniilSeryi,

а вы точно понимаете разницу между долго и дорого?

Вы про "query cost"?
В данном случае это the estimated time, in seconds, required to execute a query.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665357
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryiTaPaKDaniilSeryi,

а вы точно понимаете разницу между долго и дорого?

Вы про "query cost"?
В данном случае это the estimated time, in seconds, required to execute a query.
так суть то одна и таже, оценивается стоимость запроса и для обывателя переводится во время для его конфигурации
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665359
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

ТС хотел, чтобы запросы останавливались после N секунд работы, а не в принципе не запускались на выполнение:
The query cost is the estimated time, in seconds, and it is estimated prior to execution based on an analysis by the query engine.

Для интереса попробовала, как работает данный функционал. Задала порог в 26 секунд и запустила у себя тестовый запрос (subtree cost был 46) - успешно отработал 5 минут. Все-таки оценка времени выполнения у оптимизатора может быть очень грубой.
Код: sql
1.
2.
3.
4.
select top 10000000 *
from sys.columns  A
cross apply sys.columns B
cross apply sys.columns C
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665652
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня какая-то проблема с сервером:
настройка на уровне сервера sp_configure 'query governor cost limit', 26 почему-то не работает. Reconfigure, рестарт инстанса ничего не дает.

Зато опция работает на уровне отдельного соединения set query_governor_cost_limit 26, и запрос при попытке запуска сразу дает ошибку
The query has been canceled because the estimated cost of this query (46) exceeds the configured threshold of 26

Т.е все-таки query governor cost limit - это estimated cost из плана, а не estimated time в секундах, что бы ни говорила документация.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665653
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eleanorнастройка на уровне сервера sp_configure 'query governor cost limit', 26 почему-то не работает. Reconfigure, рестарт инстанса ничего не дает
Не обратила внимания на настройки ssms - там 0, и они переписывают серверные. Все нормально.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665697
Max_11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot DaniilSeryi]В общем, читаем про Resourse Governor:

https://blog.sqlauthority.com/2012/06/04/sql-server-simple-example-to-configure-resource-governor-introduction-to-resource-governor/
[quot]
Спасибо за ссылку. Думаю так и сделаю

EleanorMax_111112. отрубать долгие запросы
С этим у вас, наверное, нет никаких сложностей:
настроить раз в N минут джоб, который ищет запросы дольше N минут от указанных пользователей, отправляет вам на почту отчет, что данные долгие запросы были прерваны, и выполняет kill для всех session_id из списка.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT S.login_name,
    S.host_name,
    R.session_id,
    R.start_time,
    DATEDIFF(MINUTE, R.start_time, GETDATE()) AS DurationMinutes,
    T.text
FROM sys.dm_exec_requests R
JOIN sys.dm_exec_sessions S ON R.session_id = S.session_id
CROSS APPLY sys.dm_exec_sql_text (R.sql_handle) T
WHERE login_name IN {список пользователей}
    AND DATEDIFF(MINUTE, R.start_time, GETDATE()) >= {максимальное время выполнения}


Была схожая идея, но с другим способом получения информации. Ваш запрос лучше подходит для этого, спасибо.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665796
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKMax_11111,

Нет. Просто включите RCSI и забудьте про ваше грязное чтение

Вот так просто возьмите и включите. А вы в курсе, что есть несовместимые с RCSI запросы.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665803
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninTaPaKMax_11111,

Нет. Просто включите RCSI и забудьте про ваше грязное чтение

Вот так просто возьмите и включите. А вы в курсе, что есть несовместимые с RCSI запросы.
просвящайте.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665812
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max_11111,

как вариант, можно рассмотреть разделение системы на 2 слоя: расчетный и витрины (по сути - зеркало)
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665871
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKa_voroninА вы в курсе, что есть несовместимые с RCSI запросы.
просвящайте.
+1
Тоже интересно, с учетом того, что MS сделал этот уровень дефолтным в Азуре.
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665875
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EleanorTaPaKпропущено...

просвящайте.
+1
Тоже интересно, с учетом того, что MS сделал этот уровень дефолтным в Азуре.
3й год живу с RSCI, хочу всё знать.
Может быть расхождения с требованиями бизнес-логики, но прям несовместимые запросы...
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39665881
Max_11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КритикMax_11111,

как вариант, можно рассмотреть разделение системы на 2 слоя: расчетный и витрины (по сути - зеркало)
В планах добавить второй сервер, прикрутить синхронизацию (возможно через AlwaysOn), и настроить один сервер на запись и обработку данных, а другой - на чтение. но пока это планы
...
Рейтинг: 0 / 0
Можно ли для конкретного пользователя задать режим грязного чтения?
    #39666170
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EleanorTaPaKпропущено...

просвящайте.
+1
Тоже интересно, с учетом того, что MS сделал этот уровень дефолтным в Азуре.

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

На обычном SQL Server не работает обновление колумнсторов под RSCI на 2014, DDL операции внутри транзакций и был список из других фич. В общем, полной совместимости, чтобы вот так взять и переключить не тестируя сначала -- нет.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли для конкретного пользователя задать режим грязного чтения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]