SQL Server SCHEMA 結構(擁有者)

SQL Server中有個基礎:

伺服器.資料庫.結構.物件

之前是因為都是管理者的身份,所以怎麼建都找得到
假設現在有不同部份的使用者,各部門有各部門的人事表:

人事部 阿福

會計部 阿麗

如果他們同時都找「員工表」
這時沒有設定結構的話,他們都會找到「dbo.員工表」(假設管理者有建)
但是會計部的阿麗不一定有權看人事部的員工資料

這時可以用結構來各別指定「人事.員工表」,「會計.員工表」

指令也很簡單:

CREATE SCHEMA 人事
CREATE SCHEMA 會計

CREATE TABLE 員工表(欄1 INT,欄2 NCHAR(5))
CREATE TABLE 人事.員工表(欄1 INT,欄2 NCHAR(5))
CREATE TABLE 會計.員工表(欄1 INT,欄2 NCHAR(5))

INSERT INTO 員工表 VALUES(1,'AAA'),(2,'BBB')
INSERT INTO 人事.員工表 VALUES(3,'CCC'),(4,'DDD')
INSERT INTO 會計.員工表 VALUES(5,'EEE'),(6,'FFF')

SELECT * FROM dbo.員工表
SELECT * FROM 人事.員工表
SELECT * FROM 會計.員工表

以上應該不難懂,那如果今天會計部門改名
輸入:

DROP SCHEMA 會計

會出錯,因為還有個「會計.員工表」在「會計」之下
必須先移走才可以
如何將「會計.員工表」移到人事的SCHEMA下呢?
先將該「會計.員工表」重命名為「會計.會員工表」(因為人事裡也有個員工表)
接著指令:

ALTER SCHEMA 人事 TRANSFER 會計.會人事表
DROP SCHEMA 會計 --可以執行

留言

熱門文章