1. 程式人生 > >SQLServer之刪除使用者自定義資料庫使用者

SQLServer之刪除使用者自定義資料庫使用者

刪除使用者自定義資料庫使用者注意事項

不能從資料庫中刪除擁有安全物件的使用者。 必須先刪除或轉移安全物件的所有權,才能刪除擁有這些安全物件的資料庫使用者。

不能刪除 guest 使用者,但可在除 master 或 tempdb 之外的任何資料庫中執行 REVOKE CONNECT FROM GUEST 來撤消它的 CONNECT 許可權,從而禁用 guest 使用者。

需要對資料庫具有 ALTER ANY USER 許可權。

使用SSMS資料庫管理工具刪除使用者自定義資料庫使用者

1、連線伺服器-》展開資料庫-》選擇要刪除使用者的資料庫-》展開資料庫-》展開安全性-》展開使用者-》選擇要刪除的使用者右鍵點選-》選擇刪除。

2、在刪除物件彈出框-》點選確定。

3、不需要重新整理即可檢視刪除結果。

使用T-SQL指令碼刪除使用者自定義使用者

語法

--宣告資料庫引用
use database_name;
go

--判斷是否存在使用者自定義使用者,如果存在則刪除。
if exists(select * from sys.database_principals where name=user_name)
--把架構所有者修改回來架構自身
alter authorization on schema::[Architecture_name] to Architecture_name;
--刪除角色擁有的成員
alter role [[Architecture_name] drop member user_name;
--刪除擴充套件屬性
exec sys.sp_dropextendedproperty @name=N'tests_description', @level0type=N'user',@level0name=N'user_name'
--刪除使用者架構
drop user user_name;
go

語法註釋

--database_name
--資料庫名稱
--user_name
--使用者名稱稱
--Architecture_name
--架構名稱
--tests_description
--擴充套件屬性名稱

示例

--宣告資料庫引用
use [testss];
go

--判斷是否存在使用者自定義使用者,如果存在則刪除。
if exists(select * from sys.database_principals where name='test1')
--把架構所有者修改回來架構自身
alter authorization on schema::[db_accessadmin] to db_accessadmin;
--刪除角色擁有的成員
alter role [db_accessadmin] drop member test1;
--刪除擴充套件屬性
--exec sys.sp_dropextendedproperty @name=N'tests_description', @level0type=N'user',@level0name=N'test1'
--刪除使用者架構
drop user test1;
go

示例結果:使用T-SQL指令碼刪除使用者需要重新整理使用者資料夾才能檢視刪除結果。