如何:定义数据库对象的权限
可以定义权限以授予或撤消对数据库、数据库对象甚至表中特定列的访问权。 若要定义这些权限,您必须更新 database.sqlpermissions 文件。
打开 database.sqlpermissions 文件
在 Visual Studio 中,打开包含要在其中定义权限的数据库项目的解决方案。
在解决方案资源管理器中,展开数据库项目节点,再展开“属性”节点,然后双击 Database.sqlpermissions。
授予或撤消权限
可以三个粒度级别授予或撤消权限:
数据库级别 在此级别授予或撤消权限可限制对操作(如 CREATE TABLE)的访问。
数据库对象级别 在此级别授予或撤消权限可限制对特定数据库对象(如表)的访问的类型。
表列级别 在此级别授予或撤消权限可限制对表中特定列的访问的类型。
授予数据库级别权限
打开 database.sqlpermissions 文件。
在结束 </Permissions> 标记之前添加以下 XML:
<PermissionStatement Action="GRANT"> <Permission>Operation</Permission> <Grantee>Username</Grantee> </PermissionsStatement>
将 Operation 替换为要授予权限的操作。 例如,若要授予用于创建表的权限,则指定 CREATE TABLE。
将 Username 替换为要授予此权限的用户。
保存并关闭 database.sqlpermissions 文件。
撤消数据库级别权限
打开 database.sqlpermissions 文件。
在结束 </Permissions> 标记之前添加以下 XML:
<PermissionStatement Action="REVOKE"> <Permission>Operation</Permission> <Grantee>Username</Grantee> </PermissionsStatement>
将 Operation 替换为要撤消权限的操作。 例如,若要撤消用于创建表的权限,则指定 CREATE TABLE。
将 Username 替换为要撤消权限的用户。
保存并关闭 database.sqlpermissions 文件。
授予数据库对象的权限
打开 database.sqlpermissions 文件。
在结束 </Permissions> 标记之前添加以下 XML:
<PermissionStatement Action="GRANT"> <Permission>Operation</Permission> <Grantee>Username</Grantee> <Object Name="ObjectName" Schema="SchemaName" Type="OBJECT"/> </PermissionsStatement>
将 Operation 替换为要授予权限的操作。 例如,若要授予用于从表中选择数据的权限,则指定 SELECT。
将 Username 替换为要授予此权限的用户。
将 ObjectName 替换为要授予权限的对象。
将 SchemaName 替换为包含该对象的架构。
保存并关闭 database.sqlpermissions 文件。
撤消数据库对象的权限
打开 database.sqlpermissions 文件。
在结束 </Permissions> 标记之前添加以下 XML:
<PermissionStatement Action="REVOKE"> <Permission>Operation</Permission> <Grantee>Username</Grantee> <Object Name="ObjectName" Schema="SchemaName" Type="OBJECT"/> </PermissionsStatement>
将 Operation 替换为要授予权限的操作。 例如,若要授予用于从表中选择数据的权限,则指定 SELECT。
将 Username 替换为要授予此权限的用户。
将 ObjectName 替换为要授予权限的对象。
将 SchemaName 替换为包含该对象的架构。
保存并关闭 database.sqlpermissions 文件。
授予列的权限
打开 database.sqlpermissions 文件。
在结束 </Permissions> 标记之前添加以下 XML:
<PermissionStatement Action="GRANT"> <Permission>Operation</Permission> <Grantee>Username</Grantee> <Object Name ="TableName" Schema ="SchemaName" Type ="OBJECT"> <Columns Treatment ="INCLUDE"> <Column Name="ColumnName"/> </Columns> </Object> </PermissionsStatement>
将 Operation 替换为要授予权限的操作。 例如,若要授予用于创建表的权限,则指定 CREATE TABLE。
将 Username 替换为要授予此权限的用户。
将 TableName 替换为要授予权限的对象。
将 SchemaName 替换为包含该对象的架构。
将 ColumnName 替换为要将权限应用到的列的名称。 您可以指定多个 <Column> 项以将权限应用于多个列。
保存并关闭 database.sqlpermissions 文件。
撤消列的权限
打开 database.sqlpermissions 文件。
在结束 </Permissions> 标记之前添加以下 XML:
<PermissionStatement Action="REVOKE"> <Permission>Operation</Permission> <Grantee>Username</Grantee> <Object Name ="TableName" Schema ="SchemaName" Type ="OBJECT"> <Columns Treatment ="INCLUDE"> <Column Name="ColumnName"/> </Columns> </Object> </PermissionsStatement>
将 Operation 替换为要授予权限的操作。 例如,若要授予用于创建表的权限,则指定 CREATE TABLE。
将 Username 替换为要授予此权限的用户。
将 TableName 替换为要授予权限的对象。
将 SchemaName 替换为包含该对象的架构。
将 ColumnName 替换为要将权限应用到的列的名称。 您可以指定多个 <Column> 项以将权限应用于多个列。
保存并关闭 database.sqlpermissions 文件。