1. 程式人生 > 資料庫 >淺析SQL Server授予了CREATE TABLE許可權但是無法建立表

淺析SQL Server授予了CREATE TABLE許可權但是無法建立表

在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

到此這篇關於淺析SQL Server授予了CREATE TABLE許可權但是無法建立表的文章就介紹到這了,更多相關SQL Server無法建立表內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!