主页 > 知识库 > 浅析SQL Server授予了CREATE TABLE权限但是无法创建表

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

热门标签:地方门户网站 呼叫中心市场需求 百度竞价排名 网站排名优化 AI电销 铁路电话系统 服务外包 Linux服务器

在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无法创建表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • sql server建表时设置ID字段自增的简单方法
  • SqlServer编写数据库表的操作方式(建库、建表、修改语句)
  • sql server建库、建表、建约束技巧
  • SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
  • Sql Server 创建数据库脚本Create DATABASE
  • CREATE FUNCTION sqlserver用户定义函数

标签:崇左 湘潭 仙桃 湖南 黄山 铜川 兰州 衡水

巨人网络通讯声明:本文标题《浅析SQL Server授予了CREATE TABLE权限但是无法创建表》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266