第 2 课:配置数据库对象的权限

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Analytics Platform System (PDW)

注意

开始使用 Transact-SQL 查询学习路径提供了更深入的内容以及实践示例。

授予用户访问数据库的权限涉及三个步骤。 首先,创建登录名。 使用登录名,用户可以连接到 SQL Server 数据库引擎。 然后将登录名配置为指定数据库中的用户。 最后,授予该用户访问数据库对象的权限。 本课介绍了这三个步骤,并介绍了如何将视图和存储过程创建为对象。

注意

本课程依赖第 1 课 - 创建数据库对象中创建的对象。 请在学习第 2 课之前,先完成第 1 课。

先决条件

若要完成本教程,需要 SQL Server Management Studio 以及针对 SQL Server 实例的访问权限。

如果不能访问 SQL Server 实例,请从以下链接选择平台。 如果选择 SQL 身份验证,请使用 SQL Server 登录凭据。

期待您的反馈 :如果在本文中发现过时或不正确的内容(如步骤或代码示例),请告诉我们。 可以单击此页底部的“反馈” 部分中的“本页” 按钮。 我们通常在第二天阅读有关 SQL 的每项反馈。 谢谢。

创建登录名

若要访问 数据库引擎,用户需要有登录名。 登录名可以将用户身份表示为 Windows 帐户或 Windows 组成员,登录名也可以是仅存在于 SQL Server 中的 SQL Server登录名。 应该尽可能使用 Windows 身份验证。

默认情况下,计算机上的管理员具有对 SQL Server的完全访问权限。 在本课中,我们需要一个具有更少特权的用户;因此,您将在计算机上创建一个新的本地 Windows 身份验证帐户。 为此,您必须是计算机上的管理员。 然后授予该新用户访问 SQL Server 的权限。

创建新的 Windows 帐户

  1. 选择“开始”后,选择“运行”,在“打开”框中,键入 %SystemRoot%\system32\compmgmt.msc /s,然后选择“确定”打开“计算机管理”程序。
  2. 在“系统工具”下,展开“本地用户和组”,右键单击“用户”,然后选择“新建用户”。
  3. 在“用户名”框中,键入“Mary”。
  4. 在“密码”和“确认密码”框中,键入强密码,然后选择“创建”创建新的本地 Windows 用户。

创建 SQL 登录名

在 SQL Server Management Studio的查询编辑器窗口中,键入并执行以下代码(将 computer_name 替换为您计算机的名称)。 FROM WINDOWS 表示 Windows 对用户进行身份验证。 除非连接字符串指示其他数据库,否则可选的 DEFAULT_DATABASE 参数将 Mary 连接到 TestData 数据库。 此语句引入了分号作为 Transact-SQL 语句的可选结束符。

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

这将授权通过计算机的身份验证的用户名 Mary访问此 SQL Server实例。 如果计算机上存在多个 SQL Server 实例,则必须在 Mary 必须访问的每个实例上创建登录名。

备注

因为 Mary 不是域帐户,所以此用户名只能在此计算机上进行身份验证。

授予对数据库的访问权限

现在 Mary 帐户具有访问此 SQL Server 实例的权限,但是不具有访问数据库的权限。 在授权该帐户作为数据库用户之前,该帐户甚至无权访问默认数据库 TestData

若要授予 Mary 访问权限,请切换到 TestData 数据库,再使用 CREATE USER 语句将登录名映射到名为 Mary 的用户。

在数据库中创建用户

键入并执行下列语句(将 computer_name 替换为您计算机的名称),以授予 Mary 访问 TestData 数据库的权限。

USE [TestData];
GO

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

现在,对于 SQL Server 和 TestData 数据库,Mary 都具有访问权限。

创建视图和存储过程

作为管理员,可以从 Products 表和 vw_Names 视图执行 SELECT,以及执行 pr_Names 过程;但是 Mary 不能。 若要授予 Mary 必要的权限,请使用 GRANT 语句。

授予对存储过程的权限

执行以下语句将 Mary 存储过程的 EXECUTE 权限授予 pr_Names

GRANT EXECUTE ON pr_Names TO Mary;
GO

在这种情况下,Mary 只能通过使用存储过程访问 Products 表。 如果您希望 Mary 能够对视图执行 SELECT 语句,则您还必须执行 GRANT SELECT ON vw_Names TO Mary。 若要删除对数据库对象的访问权限,请使用 REVOKE 语句。

注意

如果表、视图和存储过程不是由同一架构拥有,则授予权限将变得更复杂。

关于 GRANT

必须具有 EXECUTE 权限才能执行存储过程。 必须具有 SELECT、INSERT、UPDATE 和 DELETE 权限才能访问和更改数据。 GRANT 语句还用于其他权限,如创建表的权限。

后续步骤

下一篇文章将介绍如何删除在其他课程中创建的数据库对象。

转到下一篇文章,了解详细信息: