какое sql выражение можно использовать для добавления прав пользователю
GRANT, предоставление разрешений на объект (Transact-SQL)
Предоставляет разрешения на таблицу, представление, функцию с табличным значением, хранимую процедуру, расширенную хранимую процедуру, скалярную функцию, агрегатную функцию, очередь обслуживания или синоним.
Синтаксические обозначения в Transact-SQL
Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
permission
Указывает разрешение, которое может быть предоставлено на содержащийся в схеме объект. Список разрешений см. в подразделе «Примечания» далее в этом разделе.
ALL
Предоставление ALL не включает все возможные разрешения, оно эквивалентно предоставлению всех разрешений ANSI-92, применимых к указанному объекту. Значение ALL различается для разных типов объектов
PRIVILEGES
Включено для обеспечения совместимости с ANSI-92. Не изменяет работу ALL.
column
Указывает имя столбца в таблице, представление или функции с табличным значением, на которых предоставляется разрешение. Указание круглых скобок ( ) обязательно. На столбец могут быть предоставлены только разрешения SELECT, REFERENCES и UPDATE. Аргумент column может быть указан в предложении PERMISSIONS или после имени защищаемого объекта.
Запрет (DENY) уровня таблицы имеет меньший приоритет, чем разрешение (GRANT) уровня столбца. Такая несогласованность в иерархии разрешений сохранена в целях обратной совместимости.
TO
Участник, которому предоставляется разрешение.
WITH GRANT OPTION
Показывает, что участнику будет дана возможность предоставлять указанное разрешение другим участникам.
Database_user
Указывает пользователя базы данных.
Database_role
Указывает роль базы данных.
Application_role
Указывает роль приложения.
Database_user_mapped_to_Windows_User
Указывает пользователя базы данных, сопоставленного с пользователем Windows.
Database_user_mapped_to_Windows_Group
Указывает пользователя базы данных, сопоставленного с группой Windows.
Database_user_mapped_to_certificate
Указывает пользователя базы данных, сопоставленного с сертификатом.
Database_user_mapped_to_asymmetric_key
Указывает пользователя базы данных, сопоставленного с асимметричным ключом.
Database_user_with_no_login
Указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.
Remarks
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Пример: Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате — выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец.
Сведения об объектах доступны через различные представления каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).
Объект является защищаемым на уровне схемы. Он содержится в схеме, которая является его родителем в иерархии разрешений. В следующей таблице перечислен ряд отдельных разрешений, которые могут быть предоставлены на объект, а также наиболее общие разрешения, которые неявно их подразумевают.
Разрешение объекта | Содержится в разрешении объекта | Содержится в разрешении схемы |
---|---|---|
ALTER | CONTROL | ALTER |
CONTROL | CONTROL | CONTROL |
DELETE | CONTROL | DELETE |
EXECUTE | CONTROL | EXECUTE |
INSERT | CONTROL | INSERT |
RECEIVE | CONTROL | CONTROL |
REFERENCES | CONTROL | REFERENCES |
SELECT | RECEIVE | SELECT |
TAKE OWNERSHIP | CONTROL | CONTROL |
UPDATE | CONTROL | UPDATE |
VIEW CHANGE TRACKING | CONTROL | VIEW CHANGE TRACKING |
VIEW DEFINITION | CONTROL | VIEW DEFINITION |
Разрешения
Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно включает предоставляемое.
При использовании параметра AS налагаются следующие дополнительные требования.
AS | Необходимо дополнительное разрешение |
---|---|
пользователь базы данных; | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
пользователь базы данных, сопоставленный с именем входа Windows; | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
Пользователь базы данных, сопоставленный группе Windows | Членство в группе Windows, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
пользователь базы данных, сопоставленный с сертификатом; | Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
пользователь базы данных, сопоставленный с асимметричным ключом; | Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
Пользователь базы данных, не сопоставленный ни с одним участником на уровне сервера | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
роль базы данных; | Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin. |
Роль приложения | Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin. |
Примеры
A. Предоставление разрешения SELECT на таблицу
Б. Предоставление разрешения EXECUTE на хранимую процедуру
В. Предоставление разрешения REFERENCES на представление с параметром GRANT OPTION
Г. Предоставление разрешения SELECT на таблицу без использования фразы OBJECT
Д. Предоставление учетной записи домена разрешения SELECT на таблицу
Е. Предоставление роли разрешения EXECUTE на процедуру
Урок 2. Настройка разрешений для объектов базы данных
Предоставление пользователю доступа к базе данных включает три шага. Вначале создается имя входа. Имя входа дает пользователю возможность подключиться к компоненту Компонент SQL Server Database Engine. Затем имя входа настраивается как пользователь в заданной базе данных. Наконец, предоставляются пользовательские разрешения на объекты базы данных. В этом занятии показаны все три шага, а также создание представления и хранимой процедуры в виде объекта.
В этом занятии используются объекты, созданные в разделе Урок 1. Создание объектов баз данных. Пройдите урок 1, прежде чем переходить к уроку 2.
Предварительные требования
Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.
Если у вас нет доступа к экземпляру SQL Server, выберите свою платформу в следующих ссылках. При выборе проверки подлинности SQL используйте учетные данные SQL Server.
Мы слушаем! Если вы обнаружили в этой статье устаревшие или недостоверные сведения, например инструкции или пример кода, сообщите нам. Можно воспользоваться кнопкой Эта страница в разделе Отзывы внизу страницы. Обычно мы читаем отзывы про материалы по SQL на следующий день. Благодарим вас.
Создает вход
По умолчанию администраторы компьютера имеют полный доступ к SQL Server. Для этого занятия нужно иметь пользователя с меньшим правом доступа; следовательно, вы создадите новую локальную учетную запись проверки подлинности Windows на компьютере. Чтобы сделать это, нужно быть администратором на своем компьютере. После этого нужно предоставить новому пользователю доступ к SQL Server.
Создание учетной записи Windows
Создание имени для входа SQL
Поскольку Mary не является доменной учетной записью, это имя пользователя может быть принято только на данном компьютере.
Предоставление доступа к базе данных
Чтобы предоставить Mary доступ, переключитесь на базу данных TestData и при помощи инструкции CREATE USER сопоставьте ее имя входа с именем пользователя «Mary».
Создание пользователя в базе данных
Создание представлений и хранимых процедур
Будучи администратором, можно выполнять инструкцию SELECT из таблицы Products и представления vw_Names, а также выполнять процедуру pr_Names; однако Мэри всего этого не может. Чтобы предоставить Mary необходимые разрешения, воспользуйтесь инструкцией GRANT.
Предоставление разрешений на хранимые процедуры
Если таблицей, представлением или хранимой процедурой не владеет та же схема, процесс предоставления прав становится более сложным.
Об инструкции GRANT
Нужно иметь разрешение на EXECUTE, чтобы выполнить хранимую процедуру. Нужно иметь разрешения на SELECT, INSERT, UPDATE и DELETE, чтобы получить доступ к данным и изменять их. Инструкция GRANT также используется для других разрешений, например для разрешений на создание таблиц.
Дальнейшие действия
В следующей статье вы узнаете, как удалить объекты базы данных, созданные в других уроках.
Дополнительные сведения см. в следующей статье:
GRANT, предоставление разрешений на базу данных (Transact-SQL)
Предоставляет разрешения на базу данных в SQL Server.
Синтаксические обозначения в Transact-SQL
Синтаксис
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
permission — указывает предоставляемое разрешение для базы данных. Список разрешений см. в подразделе «Примечания» далее в этом разделе.
ALL — этот параметр предоставляет не все возможные разрешения. Предоставление разрешения ALL эквивалентно предоставлению следующих разрешений: BACKUP DATABASE, BACKUP LOG, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE и CREATE VIEW.
PRIVILEGES — включено для обеспечения совместимости с требованиями ANSI-92. Не изменяет работу ALL.
WITH GRANT OPTION — указывает, что субъекту будет дана возможность предоставлять заданное разрешение другим субъектам.
Database_user — указывает пользователя базы данных.
Database_role — указывает роль базы данных.
Application_role — применимо к: SQL Server 2008 и выше, База данных SQL
Указывает роль приложения.
Database_user_mapped_to_Windows_User — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с пользователем Windows.
Database_user_mapped_to_Windows_Group — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с группой Windows.
Database_user_mapped_to_certificate — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с сертификатом.
Database_user_mapped_to_asymmetric_key — применимо к: SQL Server 2008 и выше
Указывает пользователя базы данных, сопоставленного с асимметричным ключом.
Database_user_with_no_login — указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.
Remarks
Сочетание разрешений ALTER и REFERENCE в некоторых случаях может позволить просматривать данные или выполнять несанкционированные функции. Пример: Пользователь с разрешением ALTER на таблицу и разрешением REFERENCE на функцию может создавать вычисляемый столбец на основе функции и в результате — выполнять ее. В этом случае пользователю также требуется разрешение SELECT на вычисляемый столбец.
База данных — это защищаемый объект, хранящийся на сервере, который является родителем базы данных в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно предоставлять в базе данных, перечислены в следующей таблице вместе с общими разрешениями, неявно содержащими их.
Разрешение в базе данных | Содержится в разрешении базы данных | Подразумевается в разрешении сервера |
---|---|---|
ADMINISTER DATABASE BULK OPERATIONS Область применения: База данных SQL. | CONTROL | CONTROL SERVER |
ALTER | CONTROL | ALTER ANY DATABASE |
ALTER ANY APPLICATION ROLE | ALTER | CONTROL SERVER |
ALTER ANY ASSEMBLY | ALTER | CONTROL SERVER |
ALTER ANY ASYMMETRIC KEY | ALTER | CONTROL SERVER |
ALTER ANY CERTIFICATE | ALTER | CONTROL SERVER |
ALTER ANY COLUMN ENCRYPTION KEY | ALTER | CONTROL SERVER |
ALTER ANY COLUMN MASTER KEY DEFINITION | ALTER | CONTROL SERVER |
ALTER ANY CONTRACT | ALTER | CONTROL SERVER |
ALTER ANY DATABASE AUDIT | ALTER | ALTER ANY SERVER AUDIT |
ALTER ANY DATABASE DDL TRIGGER | ALTER | CONTROL SERVER |
ALTER ANY DATABASE EVENT NOTIFICATION | ALTER | ALTER ANY EVENT NOTIFICATION |
ALTER ANY DATABASE EVENT SESSION Применимо к: База данных SQL. | ALTER | ALTER ANY EVENT SESSION |
ALTER ANY DATABASE SCOPED CONFIGURATION Применимо к: SQL Server 2016 (13.x); и выше, База данных SQL. | CONTROL | CONTROL SERVER |
ALTER ANY DATASPACE | ALTER | CONTROL SERVER |
ALTER ANY EXTERNAL DATA SOURCE | ALTER | CONTROL SERVER |
ALTER ANY EXTERNAL FILE FORMAT | ALTER | CONTROL SERVER |
ALTER ANY EXTERNAL LIBRARY Применимо к: SQL Server 2017 (14.x);. | CONTROL | CONTROL SERVER |
ALTER ANY FULLTEXT CATALOG | ALTER | CONTROL SERVER |
ALTER ANY MASK | CONTROL | CONTROL SERVER |
ALTER ANY MESSAGE TYPE | ALTER | CONTROL SERVER |
ALTER ANY REMOTE SERVICE BINDING | ALTER | CONTROL SERVER |
ALTER ANY ROLE | ALTER | CONTROL SERVER |
ALTER ANY ROUTE | ALTER | CONTROL SERVER |
ALTER ANY SCHEMA | ALTER | CONTROL SERVER |
ALTER ANY SECURITY POLICY Применимо к: База данных SQL Azure. | CONTROL | CONTROL SERVER |
ALTER ANY SERVICE | ALTER | CONTROL SERVER |
ALTER ANY SYMMETRIC KEY | ALTER | CONTROL SERVER |
ALTER ANY USER | ALTER | CONTROL SERVER |
AUTHENTICATE | CONTROL | AUTHENTICATE SERVER |
BACKUP DATABASE | CONTROL | CONTROL SERVER |
BACKUP LOG | CONTROL | CONTROL SERVER |
CHECKPOINT | CONTROL | CONTROL SERVER |
CONNECT | CONNECT REPLICATION | CONTROL SERVER |
CONNECT REPLICATION | CONTROL | CONTROL SERVER |
CONTROL | CONTROL | CONTROL SERVER |
CREATE AGGREGATE | ALTER | CONTROL SERVER |
CREATE ANY EXTERNAL LIBRARY Применимо к: SQL Server 2017 (14.x);. | CONTROL | CONTROL SERVER |
CREATE ASSEMBLY | ALTER ANY ASSEMBLY | CONTROL SERVER |
CREATE ASYMMETRIC KEY | ALTER ANY ASYMMETRIC KEY | CONTROL SERVER |
CREATE CERTIFICATE | ALTER ANY CERTIFICATE | CONTROL SERVER |
CREATE CONTRACT | ALTER ANY CONTRACT | CONTROL SERVER |
CREATE DATABASE | CONTROL | CREATE ANY DATABASE |
CREATE DATABASE DDL EVENT NOTIFICATION | ALTER ANY DATABASE EVENT NOTIFICATION | CREATE DDL EVENT NOTIFICATION |
CREATE DEFAULT | ALTER | CONTROL SERVER |
CREATE FULLTEXT CATALOG | ALTER ANY FULLTEXT CATALOG | CONTROL SERVER |
CREATE FUNCTION | ALTER | CONTROL SERVER |
CREATE MESSAGE TYPE | ALTER ANY MESSAGE TYPE | CONTROL SERVER |
CREATE PROCEDURE | ALTER | CONTROL SERVER |
CREATE QUEUE | ALTER | CONTROL SERVER |
CREATE REMOTE SERVICE BINDING | ALTER ANY REMOTE SERVICE BINDING | CONTROL SERVER |
CREATE ROLE | ALTER ANY ROLE | CONTROL SERVER |
CREATE ROUTE | ALTER ANY ROUTE | CONTROL SERVER |
CREATE RULE | ALTER | CONTROL SERVER |
CREATE SCHEMA | ALTER ANY SCHEMA | CONTROL SERVER |
CREATE SERVICE | ALTER ANY SERVICE | CONTROL SERVER |
CREATE SYMMETRIC KEY | ALTER ANY SYMMETRIC KEY | CONTROL SERVER |
CREATE SYNONYM | ALTER | CONTROL SERVER |
CREATE TABLE | ALTER | CONTROL SERVER |
CREATE TYPE | ALTER | CONTROL SERVER |
CREATE VIEW | ALTER | CONTROL SERVER |
CREATE XML SCHEMA COLLECTION | ALTER | CONTROL SERVER |
DELETE | CONTROL | CONTROL SERVER |
EXECUTE | CONTROL | CONTROL SERVER |
EXECUTE ANY EXTERNAL SCRIPT Применимо к: SQL Server 2016 (13.x);. | CONTROL | CONTROL SERVER |
EXECUTE EXTERNAL SCRIPT Применимо к: SQL Server 2019 (15.x). | EXECUTE ANY EXTERNAL SCRIPT | CONTROL SERVER |
INSERT | CONTROL | CONTROL SERVER |
KILL DATABASE CONNECTION Применимо к: База данных SQL Azure. | CONTROL | ALTER ANY CONNECTION |
REFERENCES | CONTROL | CONTROL SERVER |
SELECT | CONTROL | CONTROL SERVER |
SHOWPLAN | CONTROL | ALTER TRACE |
SUBSCRIBE QUERY NOTIFICATIONS | CONTROL | CONTROL SERVER |
TAKE OWNERSHIP | CONTROL | CONTROL SERVER |
UNMASK | CONTROL | CONTROL SERVER |
UPDATE | CONTROL | CONTROL SERVER |
VIEW ANY COLUMN ENCRYPTION KEY DEFINITION | CONTROL | VIEW ANY DEFINITION |
VIEW ANY COLUMN MASTER KEY DEFINITION | CONTROL | VIEW ANY DEFINITION |
VIEW DATABASE STATE | CONTROL | VIEW SERVER STATE |
VIEW DEFINITION | CONTROL | VIEW ANY DEFINITION |
Разрешения
Объект, предоставляющий разрешение (или участник, указанный параметром AS), должен иметь либо само разрешение, выданное с помощью параметра GRANT OPTION, либо разрешение более высокого уровня, которое неявно включает предоставляемое.
При использовании параметра AS налагаются следующие дополнительные требования.
AS granting_principal | Необходимо дополнительное разрешение |
---|---|
пользователь базы данных; | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
пользователь базы данных, сопоставленный с именем входа Windows; | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
Пользователь базы данных, сопоставленный группе Windows | Членство в группе Windows, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
пользователь базы данных, сопоставленный с сертификатом; | Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
пользователь базы данных, сопоставленный с асимметричным ключом; | Членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
Пользователь базы данных, не сопоставленный ни с одним участником на уровне сервера | Разрешение IMPERSONATE для пользователя, членство в предопределенной роли базы данных db_securityadmin, членство в предопределенной роли базы данных db_owner или членство в предопределенной роли сервера sysadmin. |
роль базы данных; | Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin. |
Роль приложения | Разрешение ALTER на роль, членство в предопределенной роли базы данных db_securityadmin, предопределенной роли базы данных db_owner или предопределенной роли сервера sysadmin. |
Владельцы объектов могут предоставлять разрешения на объекты, которыми они владеют. Участники, имеющие разрешение CONTROL на защищаемый объект, могут предоставлять разрешение на этот защищаемый объект.
Примеры
A. Предоставление разрешения на создание таблиц
Б. Предоставление разрешения SHOWPLAN роли приложения
Применимо к: SQL Server 2008 и выше, База данных SQL
В. Предоставление разрешения CREATE VIEW с параметром GRANT OPTION
В следующем примере пользователю CREATE VIEW предоставляется разрешение AdventureWorks2012 в базе данных CarmineEs с правом предоставлять разрешение CREATE VIEW другим участникам.