浅析SQL Server授予了CREATE TABLE权限但是无法创建表
- 作者: 放屁后自己不要笑
- 来源: 51数据库
- 2021-08-19
在sql server中,如果我想授予一个用户klb拥有创建表的权限,但是我又不想授予其数据库角色db_ddladmin,因为这样会扩大其权限,那么授予下面权限可行吗?如下所示:
use adventureworks2014; go grant create table to klb;
那么这样授权是否就ok呢?答案是这样授权会报错“the specified schema name "dbo" either does not exist or you do not have permission to use it.”
需要授予下面权限,登录名klb才能真正的创建表。
use adventureworks2014; go grant alter on schema::dbo to klb
但是这样又会扩大登录名klb的权限(绕了一圈,又重回老路)。其实,sql server中如果新建一个用户模式(user-schema)的话,那么就可以解决这个问题。
create schema test authorization klb
如果已经存在对应的用户模式
use adventureworks2014; go grant alter on schema::test to klb
按上面这样授权后,那么对比下面脚本,你就会发现klb可以在test这个模式下创建表,但是不能在dbo这个模式下创建表。其实这个也是sql server 用户模式分离设计的原因。
create table dbo.test (id int); --报错 go create table test.test (id int);--正常 go
到此这篇关于浅析sql server授予了create table权限但是无法创建表的文章就介绍到这了,更多相关sql server无法创建表内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
- SQLite数据库操作:原生操作,GreenDao操作讲解
- 数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
- SQLSERVER查询区分大小写的写法分析
- SQL学习总结之SQL的分类介绍
- 阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
- 高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
- 什么是SQL隔离级别?四个SQL隔离级别定义介绍
- Sql递归介绍之用with实现递归查询
- SQLSERVER查询时日期格式化的实例讲解
- 数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
热点文章
SQLite数据库操作:原生操作,GreenDao操作讲解
18
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
4
SQLSERVER查询区分大小写的写法分析
36
SQL学习总结之SQL的分类介绍
6
阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
4
高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
4
什么是SQL隔离级别?四个SQL隔离级别定义介绍
2
Sql递归介绍之用with实现递归查询
6
SQLSERVER查询时日期格式化的实例讲解
4
数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
7