2017年10月11日 星期三

變更資料表的擁有者

變更資料表的擁有者
SQL Server中,擁有權(Ownership)的規則是[建立它,便擁有它],因此建立資料表的使用者將順勢成為擁有者(Owner)

擁有者有權對資料表執行所有與資料表相關的作業與Transact-SQL命令敘述。例如,執行INSERTUPDATEDELETESELECT命令。

擁有者能夠管理資料表的權限。也就是說,擁有者能夠將全部的權限賦予其他使用者。

下列命令敘述為,將資料表CustomersSELECT權限賦予使用者alex
GRANT SELECT ON Customers TO alex

下列命令敘述為,將資料表CustomersREFERENCES權限賦予使用者sandra
GRANT REFERENCES (CustomerID) ON Customers TO sandra

欲變更資料表的擁有者,使用系統預存程序sp_changeobjectowner其語法如下:
sp_changeobjectowner [@objname =] ‘object’,
  [@newowner =] ‘owner’
其中’object’引數即是欲變更其擁有者的資料庫物件(名稱)
    ‘owner’引數用來指定將成為資料表之使用者的登入識別碼。
範例:
USE DemoDb  ------ > 假設資料表Customers位於資料庫DemoDb
EXEC sp_changeobjectowner ‘Customers’ , ‘MainDomain\frank’

必須注意的是,並不是所有的使用者都能夠執行sp_changeobjectowner,只有固定的伺服器角色sysadmin之成員、固定的資料庫角色db_owner之成員、或是同時為固定的資料庫角色db_ddladmindb_securityadmin之成員有權去執行sp_changeobjectowner

範例:
假設資料庫DemoDb中有兩個資料表ProductsOrders,它們目前擁有者分別是alexsandra,假設我(第三者)有足夠的權限,並且希望現在將ProductsOrders的擁有者更改成frank。欲達此目的,可執行下列命令敘述:
USE DemoDb
EXEC sp_changeobjectowner ‘alex.products’ , ‘frank’
EXEC sp_changeobjectowner ‘sandra.orders’ , ‘frank’


沒有留言:

用頭腦去思考,不要人云亦云才好, 宗教信徒就是依賴與自私心態(求東求西)的人, 光是這點就很容易暴露弱點了, 難怪seafood吃飽飽,哈哈。 續上, 除了依賴與自私心態(兩者都是人性)之外。 另外也有很大一部份的人,是人云亦云的思考邏輯, 所以宗教才能譁眾取寵。