Установка однопользовательского режима базы данных
В этой статье описывается, как настроить определяемую пользователем базу данных в однопользовательском режиме в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Однопользовательский режим указывает, что одновременный доступ к базе данных получает только один пользователь. Это в основном используется для операций обслуживания.
ограничения
- Если в процессе установки однопользовательского режима к базе данных подключены другие пользователи, то их подключения к базе данных будут закрыты без предупреждения.
- База данных остается в однопользовательском режиме даже после отключения параметра. В этот момент к базе данных могут подключаться и другие пользователи, но одновременно может быть подключен только один.
Предварительные условия
- Перед заданием параметра SINGLE_USER проверьте, чтобы параметру AUTO_UPDATE_STATISTICS_ASYNC было присвоено значение OFF. Если этот параметр имеет значение ON, то фоновый поток, используемый для обновления статистики, соединится с базой данных и доступ к базе данных в однопользовательском режиме будет невозможен. Дополнительные сведения см. в статье Параметры ALTER DATABASE SET (Transact-SQL).
Разрешения
Необходимо разрешение ALTER в базе данных.
Использование среды SQL Server Management Studio
Чтобы установить однопользовательский режим для базы данных, выполните следующие действия:
- В обозревателе объектов подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните этот экземпляр.
- Щелкните правой кнопкой мыши базу данных, которую нужно изменить, и выберите пункт Свойства.
- В диалоговом окне Свойства базы данных выберите страницу Параметры.
- Для параметра Ограничение доступа выберите Один.
- Если к базе данных подключены другие пользователи, то появится сообщение Открытые соединения . Чтобы изменить свойство и закрыть все остальные подключения, нажмите кнопку Да.
С помощью этой процедуры можно также установить режим одновременного или ограниченного доступа к базе данных. Дополнительные сведения о параметрах ограничения доступа см. в разделе «Свойства базы данных» (страница «Параметры»).
Использование Transact-SQL
Чтобы установить однопользовательский режим для базы данных, выполните следующие действия:
- Соединитесь с ядром СУБД .
- На стандартной панели выберите пункт Создать запрос.
- Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере база данных устанавливается в режим SINGLE_USER для получения монопольного доступа. Затем состояние базы данных AdventureWorks2022 устанавливается в READ_ONLY , а также возвращается доступ к базе данных всем пользователям.
Чтобы быстро получить монопольный доступ, в примере кода используется параметр завершения WITH ROLLBACK IMMEDIATE . Произойдет откат всех незавершенных транзакций, а любые другие соединения с базой данных AdventureWorks2022 будут немедленно разорваны.
USE master; GO ALTER DATABASE AdventureWorks2022 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE AdventureWorks2022 SET READ_ONLY; GO ALTER DATABASE AdventureWorks2022 SET MULTI_USER; GO
Далее
Устранение неполадок с правами доступа к данным¶
Если у человека неправильный уровень доступа к данным, возвращаемым вопросом или запросом, вам необходимо устранить неполадки на разных уровнях разрешений на данные , начиная с самого детального.
Разрешения для строк и столбцов¶
Разрешения для собственных запросов (SQL)¶
- Группа пользователей не может получить доступ к редактору SQL.
- Группа пользователей с разрешениями SQL не ограничена их песочницей данных.
Разрешения для таблицы или схемы¶
- Группа пользователей имеет неправильный доступ к таблице или схеме.
- Группа пользователей может просматривать коллекции, содержащие ограниченные данные.
- Получение сообщения об ошибке «отказано в доступе».
- Проверка чьего-либо доступа к таблице или схеме.
Группа пользователей не может получить доступ к редактору SQL¶
- Убедитесь, что скрипты загружаются, отключив расширения браузера и перезагрузив его.
- Перейдите в Администрирование >Разрешения и выберите соответствующую группу.
- Найдите базу данных, к которой вы хотите предоставить доступ SQL.
- Выберите Неограниченный в раскрывающемся списке Доступ к данным.
- Проверьте, устранена ли проблема с доступом.
Объяснение
Чтобы предоставить группе доступ к нативному редактору SQL, вы должны предоставить этой группе неограниченный доступ к базе данных.
Для получения дополнительной информации о различных типах разрешений базы данных ознакомьтесь с разделом о доступе к данным в нашей документации по разрешениям.
Группа пользователей имеет неправильный доступ к таблице или схеме¶
- Перейдите в Администратор >Люди и проверьте, состоит ли человек в более чем одной группе с конфликтующими разрешениями.
- Если человек состоит в нескольких группах:
- Удалить человека из группы с более широкими правами или
- Перейдите в Администрирование >Разрешения и измените тип разрешения Доступ к данным.
- Проверьте, устранена ли проблема с доступом.
Объяснение
Если человек является членом нескольких групп, GlarusBI предоставит самый разрешительный уровень доступа для всех групп, в которых он состоит.
Например, если человек является членом двух групп — одна предоставляет неограниченный доступ к базе данных или таблице, а другая предоставляет доступ без самообслуживания — этот человек будет иметь полный неограниченный доступ.
Помните, что каждый является членом группы Все пользователи. Мы рекомендуем отозвать разрешения у группы Все пользователи и создать новые группы для выборочного применения разрешений к вашим источникам данных.
Группа пользователей может просматривать коллекции, содержащие данные с ограниченным доступом¶
- Перейдите в Администрирование >Разрешения и выберите группу пользователей.
- Выберите базу данных или таблицу, которые вы хотите ограничить.
- Выберите Блокировать из раскрывающегося списка и нажмите Сохранить.
- Проверьте, устранена ли проблема с доступом.
Объяснение
Если вы предоставили группе без самообслуживания доступ к базе данных или таблице, люди по-прежнему могут просматривать сохраненные вопросы и информационные панели, основанные на этой базе данных, при условии, что эти вопросы и информационные панели хранятся в коллекции, которую они иметь доступ к.
Получение сообщения об ошибке “Отказано в доступе”¶
Если вы получите сообщение об ошибке, в котором говорится что-то вроде «отказано в доступе к ”, вам необходимо проверить, есть ли у приложения GlarusBI правильные разрешения для запроса вашей базы данных.
-
Перейдите в редактор SQL и выполните простой запрос к рассматриваемой таблице или схеме:
SELECT 1 FROM your table>;
- предоставить разрешения базы данных , которую GlarusBI использует для подключения, или
- Укажите набор учетных данных базы данных с правильными разрешениями.
Объяснение
Ваша база данных имеет собственный набор разрешений, настроенных для каждого человека (или приложения), который входит в систему.
Разрешения базы данных применяются на уровне вашего подключения к базе данных, до ваших разрешений на данные и коллекции применяются в GlarusBI.
Это означает, что настройки, настроенные на стороне базы данных, могут запретить GlarusBI подключаться к определенным схемам или таблицам, независимо от того, что вы настроили на стороне GlarusBI.
Проверка чьего-либо доступа к таблице или схеме¶
- Откройте окно браузера в режиме инкогнито.
- Войдите в GlarusBI под своей учетной записью.
- Запустите вопрос, информационную панель или собственный запрос, чтобы подтвердить, что человек может видеть данные, которые он запрашивает.
Предоставление разрешений базы данных¶
Эти примеры команд используют синтаксис PostgreSQL. Если вы используете другую базу данных, обратитесь к руководству по синтаксису вашей базы данных.
Чтобы разрешить доступ GlarusBI к определенной таблице:
USE database>; GRANT ALL ON table> IN SCHEMA schema> TO metabase_user>;
Чтобы разрешить доступ GlarusBI к всем таблицам в определенной схеме:
USE database>; GRANT ALL ON table> TO metabase_user>;
У вас другая проблема?¶
- Я не могу просматривать или редактировать свой вопрос или панель инструментов .
- Я не могу сохранить свой вопрос или панель управления .
- Я не вижу свои столы .
Проблема не решена?¶
Если вы не можете решить проблему с помощью руководств по устранению неполадок:
- Найдите или спросите в сообществе GlarusBI.
- Поиск известных ошибок или ограничений .
Как ограничить список баз данных, видимых пользователю
Хорошо быть администратором. Подключаемся к серверу, разворачиваем список баз данных и до каждой базы нам есть дело!
А в сценариях хостинга или персональной аналитики обычно другая картина. Разворачиваем огромный список баз и листаем, листаем, листаем его в поисках той единственной, к которой у нас есть досуп.
Вот один из наших учебных серверов. У каждого пользователя есть своя база данных, в которой он — полноправный хозяин. Есть также несколько баз, в которые пользователь может заглянуть с ограниченными правами. А к большинству баз данных у пользователя вообще нет никакого доступа. Но все эти факторы не принимаются во внимание SQL-сервером, мы всё равно видим весь список:

Давайте посмотрим, что тут можно придумать.
Пользователь «Фёдор Самородов», подключившись, видит список баз данных благодаря тому, что у роли public есть разрешение VIEW ANY DATABASE.

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

Это сработало! Правда, стало ещё хуже — теперь мы не видим вообще никаких баз, кроме master и tempdb.

Заметьте, что на сам доступ к базам это не повлияло. Если мы знаем название нужной базы данных, то сможем переключиться в её контекст:

К сожалению, добиться желаемой гибкости мы не сможем. В общем случае такая задача не решаема. SQL Server покажет нам только те базы, владельцами которых мы являемся. Причём, учитывается именно фактор владения, членства в роли db_owner недостаточно.
На практике это означает, что вы сможете ограничить видимость баз данных только в тех сценариях, когда пользователи сами владеют своими персональными базами.
Сделаем пользователя владельцем одной из баз:

А теперь обновим список:

Или выполним аналогичный запрос к sys.Databases:

Вот это уже похоже на то, что мы задумали, и это — лучшее, чего мы можем добиться в текущих версиях SQL-сервера.
Подробнее об этом Вы сможете узнать на курсах SQL Server
Заказ добавлен в Корзину.
Для завершения оформления, пожалуйста, перейдите в Корзину!
Авторизации


Телефон:
+7 (495) 232-32-16

Whatsapp:

Адрес главного офиса:
ул. Бауманская, д. 6, стр. 2, бизнес-центр «Виктория Плаза», 4-й этаж

E-mail:

English version
SQL пользователь с ограниченным доступом

После восстановления базы MS SQL можем получить такую ошибку Для решения этой проблемы мы должны выполнить команду в консоли
USE test ALTER DATABASE test SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE test SET MULTI_USER GO

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в МИТ
Наши сервисы по этой теме:
Линия консультаций 1С
Консультации по телефону и электронной почте дают специалисты службы технической поддержки по «1С:Предприятию» и обслуживающего партнера
1С:Обновление программ
Получение обновлений программ 1С
