溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQL SERVER數(shù)據(jù)庫(kù)權(quán)限

發(fā)布時(shí)間:2020-06-30 19:09:41 來源:網(wǎng)絡(luò) 閱讀:955 作者:tomy000 欄目:數(shù)據(jù)庫(kù)

在數(shù)據(jù)庫(kù)開發(fā)中,經(jīng)常要設(shè)置用戶對(duì)數(shù)據(jù)庫(kù)的操作權(quán)限,通常有以下2種辦法:

1、在數(shù)據(jù)庫(kù)中,建立一個(gè)權(quán)限表,記錄每個(gè)用戶對(duì)相應(yīng)模塊(界面)的操作權(quán)限,然后在程序中使用。

我看到的一些公司的數(shù)據(jù)庫(kù)開發(fā)(用友也是這樣實(shí)現(xiàn))就用這種方式。

2、直接在SQL SERVER中建立數(shù)據(jù)庫(kù)用戶,配置每個(gè)用戶對(duì)數(shù)據(jù)表的操作權(quán)限。

在這里我主要講述第2種方式,可能使用到的SQL語(yǔ)句,直接配置數(shù)據(jù)表的權(quán)限,然后通過SQL語(yǔ)句返回用戶對(duì)表的操作權(quán)限,可以在應(yīng)用程序中使用。

  select * from sys.sysusers where name=[name]  --查看數(shù)據(jù)庫(kù)用戶的信息

select * from sys.syslogins where name=[name]   --查看登錄用戶的信息

create login [loginName] with password='password' --創(chuàng)建登錄名,并設(shè)置密碼

alter login [old_loginName] with name=[new_name] --修改登錄名

alter login [loginName] with password='[new password]' --修改密碼

drop login [loginName] --刪除登錄名

create user [db user] for login [login name]  --創(chuàng)建用戶(必須要指定登錄名)

alter user [old db user] with name=[new db user] --修改用戶

sp_addrole [role_name] --添加數(shù)據(jù)庫(kù)角色

deny connect sql to [db user] --是否允許用戶連接到數(shù)據(jù)庫(kù)引擎grant 

alter login [login name] enable|disable --允許或禁止登錄名

deny|grant connect to [db user] --禁止或授權(quán)用戶訪問數(shù)據(jù)庫(kù) 

alter role [old_role_name] with name=[new_role_name] --更改角色名稱


查詢登錄名是否有連接到數(shù)據(jù)庫(kù)引擎的權(quán)限

SELECT state_desc from sys.server_permissions perm join sys.server_principals pri

on perm.grantee_principal_id=pri.principal_id where pri.name='[login name]'

查詢登錄用戶是否禁止或啟動(dòng)

select is_disabled from sys.server_principals

 where name='[login name]'

 查詢用戶是否能連接到數(shù)據(jù)庫(kù)的權(quán)限

   select permission_name from sys.database_permissions 

   where class=0 and grantee_principal_id=DATABASE_PRINCIPAL_ID('[db user]')

 

查詢用戶對(duì)表的權(quán)限

  select   sysp.type collate database_default,permission_name,state_desc,obj.name   

  from sys.database_permissions sysp  

  join sys.all_objects obj  on obj.object_id=sysp.major_id

  where  sysp.grantee_principal_id=database_principal_id('db user')  and obj.name='[table name]'


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI