Урок 2. Настройка разрешений для объектов базы данныхLesson 2: Configure permissions on database objects

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (Хранилище данных SQL) Parallel Data Warehouse

Предоставление пользователю доступа к базе данных включает три шага.Granting a user access to a database involves three steps. Вначале создается имя входа.First, you create a login. Имя входа дает пользователю возможность подключиться к компоненту Компонент SQL Server Database EngineSQL Server Database Engine.The login lets the user connect to the Компонент SQL Server Database EngineSQL Server Database Engine. Затем имя входа настраивается как пользователь в заданной базе данных.Then you configure the login as a user in the specified database. Наконец, предоставляются пользовательские разрешения на объекты базы данных.And finally, you grant that user permission to database objects. В этом занятии показаны все три шага, а также создание представления и хранимой процедуры в виде объекта.This lesson shows you these three steps, and shows you how to create a view and a stored procedure as the object.

Примечание

В этом занятии используются объекты, созданные в разделе Урок 1. Создание объектов баз данных.This lesson relies on objects created in Lesson 1 - Create database objects. Пройдите урок 1, прежде чем переходить к уроку 2.Complete Lesson 1 before continuing on to lesson 2.

Предварительные требованияPrerequisites

Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.To complete this tutorial, you need SQL Server Management Studio and access to a SQL Server instance.

Если у вас нет доступа к экземпляру SQL Server, выберите свою платформу в следующих ссылках.If you don't have access to a SQL Server instance, select your platform from the following links. При выборе проверки подлинности SQL используйте учетные данные SQL Server.If you choose SQL Authentication, use your SQL Server login credentials.

Мы слушаем! Если вы обнаружили в этой статье устаревшие или недостоверные сведения, например инструкции или пример кода, сообщите нам.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Можно воспользоваться кнопкой Эта страница в разделе Отзывы внизу страницы.You can click the This page button in the Feedback section at the bottom of this page. Обычно мы читаем отзывы про материалы по SQL на следующий день.We read every item of feedback about SQL, typically the next day. Благодарим вас.Thanks.

Создает входCreate a login

Чтобы получить доступ к компоненту Компонент Database EngineDatabase Engine, необходимо иметь имя входа.To access the Компонент Database EngineDatabase Engine, users require a login. Имя входа может идентифицировать пользователя как учетную запись Windows или как члена группы Windows, или имя входа может быть именем входа SQL ServerSQL Server , которое существует только в SQL ServerSQL Server.The login can represent the user's identity as a Windows account or as a member of a Windows group, or the login can be a SQL ServerSQL Server login that exists only in SQL ServerSQL Server. При возможности используйте проверку подлинности Windows.Whenever possible you should use Windows Authentication.

По умолчанию администраторы компьютера имеют полный доступ к SQL ServerSQL Server.By default, administrators on your computer have full access to SQL ServerSQL Server. Для этого занятия нужно иметь пользователя с меньшим правом доступа; следовательно, вы создадите новую локальную учетную запись проверки подлинности Windows на компьютере.For this lesson, we want to have a less privileged user; therefore, you will create a new local Windows Authentication account on your computer. Чтобы сделать это, нужно быть администратором на своем компьютере.To do this, you must be an administrator on your computer. После этого нужно предоставить новому пользователю доступ к SQL ServerSQL Server.Then you will grant that new user access to SQL ServerSQL Server.

Создание учетной записи WindowsCreate a new Windows account

  1. Нажмите кнопку Пуск, выберите Выполнить, в поле Открыть введите %SystemRoot%\system32\compmgmt.msc /sи нажмите кнопку OK , чтобы открыть программу "Управление компьютером".Click Start, click Run, in the Open box, type %SystemRoot%\system32\compmgmt.msc /s, and then click OK to open the Computer Management program.
  2. В пункте Служебные программыоткройте Локальные пользователи и группы, щелкните правой кнопкой мыши элемент Пользователии выберите пункт Новый пользователь.Under System Tools, expand Local Users and Groups, right-click Users, and then click New User.
  3. В поле Имя пользователя введите Mary.In the User name box type Mary.
  4. В полях Пароль и Подтверждение пароля введите надежный пароль и нажмите кнопку Создать , чтобы создать нового локального пользователя Windows.In the Password and Confirm password box, type a strong password, and then click Create to create a new local Windows user.

Создание имени для входа SQLCreate a SQL login

В окне редактора запросов среды SQL Server Management StudioSQL Server Management Studioвведите и выполните следующий исходный код, заменив computer_name на имя компьютера.In a Query Editor window of SQL Server Management StudioSQL Server Management Studio, type and execute the following code replacing computer_name with the name of your computer. FROM WINDOWS указывает, что Windows проверит подлинность пользователя.FROM WINDOWS indicates that Windows will authenticate the user. Необязательный аргумент DEFAULT_DATABASE соединяет Mary с базой данных TestData , если только в ее строке соединения не указана другая база данных.The optional DEFAULT_DATABASE argument connects Mary to the TestData database, unless her connection string indicates another database. Эта инструкция рассматривает точку с запятой в виде необязательного завершения инструкции языка Transact-SQLTransact-SQL .This statement introduces the semicolon as an optional termination for a Transact-SQLTransact-SQL statement.

CREATE LOGIN [computer_name\Mary]  
    FROM WINDOWS  
    WITH DEFAULT_DATABASE = [TestData];  
GO  

Этим авторизируется имя пользователя Mary, проверенное компьютером, чтобы получить доступ к экземпляру SQL ServerSQL Server.This authorizes a user name Mary, authenticated by your computer, to access this instance of SQL ServerSQL Server. Если на компьютере находится более одного экземпляра SQL ServerSQL Server , нужно создать имя входа для каждого экземпляра, к которому Mary должна иметь доступ.If there is more than one instance of SQL ServerSQL Server on the computer, you must create the login on each instance that Mary must access.

Примечание

Поскольку Mary не является доменной учетной записью, это имя пользователя может быть принято только на данном компьютере.Because Mary is not a domain account, this user name can only be authenticated on this computer.

Предоставление доступа к базе данныхGrant access to a database

Теперь Mary имеет доступ к данному экземпляру SQL ServerSQL Server, но не имеет разрешения на доступ к базе данных.Mary now has access to this instance of SQL ServerSQL Server, but does not have permission to access the databases. У нее даже нет доступа к своей базе данных по умолчанию TestData , пока вы не авторизируете ее в качестве пользователя базы данных.She does not even have access to her default database TestData until you authorize her as a database user.

Чтобы предоставить Mary доступ, переключитесь на базу данных TestData и при помощи инструкции CREATE USER сопоставьте ее имя входа с именем пользователя «Mary».To grant Mary access, switch to the TestData database, and then use the CREATE USER statement to map her login to a user named Mary.

Создание пользователя в базе данныхTo create a user in a database

Введите и выполните следующие инструкции (заменяя computer_name на имя компьютера), чтобы предоставить пользователю Mary доступ к базе данных TestData .Type and execute the following statements (replacing computer_name with the name of your computer) to grant Mary access to the TestData database.

USE [TestData];  
GO  

CREATE USER [Mary] FOR LOGIN [computer_name\Mary];  
GO    

Теперь пользователь Mary имеет доступ к SQL ServerSQL Server и к базе данных TestData .Now, Mary has access to both SQL ServerSQL Server and the TestData database.

Создание представлений и хранимых процедурCreate views and stored procedures

Будучи администратором, можно выполнять инструкцию SELECT из таблицы Products и представления vw_Names, а также выполнять процедуру pr_Names; однако Мэри всего этого не может.As an administrator, you can execute the SELECT from the Products table and the vw_Names view, and execute the pr_Names procedure; however, Mary cannot. Чтобы предоставить Mary необходимые разрешения, воспользуйтесь инструкцией GRANT.To grant Mary the necessary permissions, use the GRANT statement.

Предоставление разрешений на хранимые процедурыGrant permission to stored procedure

Выполните следующую инструкцию, чтобы предоставить Mary разрешение на EXECUTE для хранимой процедуры pr_Names .Execute the following statement to give Mary the EXECUTE permission for the pr_Names stored procedure.

GRANT EXECUTE ON pr_Names TO Mary;  
GO  

В данном сценарии Mary имеет доступ только к таблице Products посредством хранимой процедуры.In this scenario, Mary can only access the Products table by using the stored procedure. Если Mary нужно выполнять инструкцию SELECT к представлению, нужно выполнить инструкцию GRANT SELECT ON vw_Names TO Mary.If you want Mary to be able to execute a SELECT statement against the view, then you must also execute GRANT SELECT ON vw_Names TO Mary. Чтобы удалить доступ к объектам базы данных, воспользуйтесь инструкцией REVOKE.To remove access to database objects, use the REVOKE statement.

Примечание

Если таблицей, представлением или хранимой процедурой не владеет та же схема, процесс предоставления прав становится более сложным.If the table, the view, and the stored procedure are not owned by the same schema, granting permissions becomes more complex.

Об инструкции GRANTAbout GRANT

Нужно иметь разрешение на EXECUTE, чтобы выполнить хранимую процедуру.You must have EXECUTE permission to execute a stored procedure. Нужно иметь разрешения на SELECT, INSERT, UPDATE и DELETE, чтобы получить доступ к данным и изменять их.You must have SELECT, INSERT, UPDATE, and DELETE permissions to access and change data. Инструкция GRANT также используется для других разрешений, например для разрешений на создание таблиц.The GRANT statement is also used for other permissions, such as permission to create tables.

Дальнейшие действияNext steps

В следующей статье вы узнаете, как удалить объекты базы данных, созданные в других уроках.The next article teaches you how to remove database objects you created in the other lessons.

Дополнительные сведения см. в следующей статье:Go to the next article to learn more: