GRANT изявление Съвети и трикове на SQL Server - SQL програмиране

Внедряването на оператора GRANT на SQL Server се различава малко от стандарта ANSI. Стандартните клаузи FROM, HIERARCHY и ADMIN не се поддържат. Обаче предоставя възможност за предоставяне на специфични системни привилегии и за предоставянето им от контекста на друг потребител. Синтаксисът е по-долу.

обектни привилегии

Предоставя привилегии за извършване на различни операции, които могат да се използват във всяка комбинация (с изключение на ВСИЧКИ [ПРИВЕЛЕГИ]).

ВСИЧКИ [ПРИВЕЛЕГИ]

Всички привилегии, присвоени в момента на посочените потребители и/или на посочените обекти на база данни, се предоставят. Използването на това предложение се обезкуражава, тъй като допринася за неизвестността на програмирането. Клаузата ALL може да се използва само от потребители със системни роли SYSADMIN и DBOWNER или от собственика на обекта.

На посочения потребител се присвоява определената привилегия за достъп до посочения обект (например таблица или изглед). Използвайте списъка на колоните в скоби, за да посочите привилегии на ниво колона. Привилегии ще се присвояват само на именувани колони.

ПРЕПРАТКИ

Предоставено е привилегията за създаване и отпадане на ограничения за външен ключ, отнасящи се до обекта на базата данни като родителски обект.

ИЗПЪЛНИ

Дайте право да изпълнява съхранена процедура, дефинирана от потребителя функция или разширена съхранена процедура.

системни_привилегии

Предоставят се следните привилегии, всяка от които дава право на изпълнение на съответната инструкция.

Привилегията за изпълнение на израза CREATE също предполага привилегията да изпълнява съответните изрази ALTER и DROP.

Посочва се обектът, право на достъп до който е присвоено. Тази оферта не се изисква при присвояване на системни привилегии. Ако обектът е таблица или изглед, можете по желание да посочите привилегиите за конкретни колони. На таблица или изглед можете да предоставите привилегии SELECT INSERT UPDATE. ИЗТРИВАНЕ И РЕФЕРЕНЦИИ. Можете да присвоявате привилегии SELECT и UPDATE само на колони и изгледи на таблици или UDF. Можете да предоставите привилегия EXECUTE на съхранена процедура и разширена съхранена процедура. Можете също така да предоставите ПРИЛОЖЕНИЯ ЗА РЕФЕРЕНЦИИ за дефинирани от потребителя функции. Необходими са привилегии REFERENCES за функции и изгледи, създадени с клаузата WITH SCHEMABUILDING.

Името на потребителя или ролята, на която е присвоена привилегията. Можете да посочите множество получатели на привилегията, като посочите имената им, разделени със запетаи. За да предоставите привилегии на ролята PUBLIC, използвайте ключовата дума PUBLIC, като се предполага, че тази роля включва всички потребители. SQL Server също поддържа роля, наречена ГОСТ, която се използва от всички потребители, които нямат никакъв друг акаунт в базата данни. Тъй като SQL Server позволява два различни модела на защита (единият се основава на базата данни, а другият на операционната система Windows), можете да предоставите привилегии на потребител на SQL Server, потребител на Windows, група на Windows или роля на база данни на SQL Server. Името на получателя може да бъде някоя от горните опции.

С ГРАНТОВА ОПЦИЯ

Позволява на получателя да присвоява посочената привилегия на други потребители и роли. THE WITH GRANT OPTION може да се използва само с привилегии на обект.

Задава алтернативен потребител или група, която има разрешение за изпълнение на оператора GRANT в базата данни. Можете да използвате клаузата AS за предоставяне на привилегии, сякаш сесията, в която се присвоява привилегията, е част от контекста на група или роля, различна от текущата.

Привилегии могат да се присвояват само в текущата база данни и не могат да се присвояват в няколко бази данни наведнъж.

Моделът на защита на SQL Server е малко по-различен от другите платформи, описани тук (и малко по-различен от стандарта ANSI). Както при стандарта ANSI, SQL Server използва GRANT за присвояване на специфични привилегии на потребител или роля и REVOKE за премахване на тези привилегии. В SQL Server тези команди се допълват от командата DENY, чийто синтаксис е почти идентичен със синтаксиса на командата REVOKE.