浅析SQL Server授予了CREATE TABLE权限但是无法创建表

作者:潇湘隐者 时间:2024-01-28 18:26:23 

在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.”

浅析SQL Server授予了CREATE TABLE权限但是无法创建表

需要授予下面权限,登录名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

来源:https://www.cnblogs.com/kerrycode/archive/2020/12/08/14100836.html

标签:SQL,Server,建表,CREATE,TABLE,权限
0
投稿

猜你喜欢

  • 对pyqt5之menu和action的使用详解

    2022-03-12 23:00:37
  • python中的随机数 Random介绍

    2022-05-08 09:49:03
  • 让javascript加载速度倍增的方法(解决JS加载速度慢的问题)

    2024-04-19 11:03:22
  • MYSQL主从数据库同步备份配置的方法

    2024-01-23 15:03:43
  • MySQL数据库INNODB表损坏修复处理过程分享

    2024-01-16 10:59:56
  • 给Linux定时备份数据库的实现脚本

    2024-01-15 09:15:22
  • SQL Server 2005 SP3正式版下载

    2008-12-16 12:42:00
  • vue中异步数据获取方式(确保数据被获取)

    2024-05-09 15:23:07
  • python字符串连接方式汇总

    2021-08-19 23:46:14
  • Python实现图片滑动式验证识别方法

    2023-11-05 22:14:52
  • Python OS模块实例详解

    2022-11-18 07:56:01
  • 一文带你吃透什么是PHP中的序列化

    2023-06-12 19:44:20
  • 秒杀场景的缓存、队列、锁使用Redis优化设计方案

    2023-05-29 19:07:18
  • python PaddleOCR库用法及知识点详解

    2023-02-04 16:01:03
  • 重写django的model下的objects模型管理器方式

    2023-04-24 15:10:14
  • 详解flask入门模板引擎

    2023-06-27 00:05:41
  • 用python求一个数组的和与平均值的实现方法

    2021-01-10 20:11:24
  • python如何创建TCP服务端和客户端

    2021-05-20 04:52:52
  • 查找python项目依赖并生成requirements.txt的方法

    2021-11-27 20:41:43
  • 基于python的多进程共享变量正确打开方式

    2022-02-12 10:30:53
  • asp之家 网络编程 m.aspxhome.com