您的位置:首页 > 数据库

MSSQL 创建用户和权限简单操作

2016-03-21 11:25 351 查看
-- 创建登陆,无密码策略,密码不过期
CREATE LOGIN [test_l] WITH PASSWORD='pwd1213',DEFAULT_DATABASE=[db_1], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;
GO
USE db_1;
GO
-- 创建用户
CREATE USER [test_u] FROM LOGIN [test_l];
GO
-- 授权
GRANT SELECT ON dbo.table1 TO [test_u];
GO


下边是查看授权信息

 

--查看 SQL 2008 用户所属数据库角色
use yourdb
go

select DbRole = g.name, MemberName = u.name, MemberSID = u.sid
from sys.database_principals u, sys.database_principals g, sys.database_role_members m
where g.principal_id = m.role_principal_id
and u.principal_id = m.member_principal_id
order by 1, 2
go

--查看 SQL 2005 登陆帐户所属服务器角色 use master
go

select SrvRole = g.name, MemberName = u.name, MemberSID = u.sid
from sys.server_principals u, sys.server_principals g, sys.server_role_members m
where g.principal_id = m.role_principal_id
and u.principal_id = m.member_principal_id
order by 1, 2
go

-- 查看 SQL 2005 用户被赋予的权限 use yourdb
go

exec sp_helprotect @username = 'gelong'
go

--用户或角色在数据库中的授权信息

select b.id,b.name as tName,b.type,a.uid,c.name as uName,a.action,a.protecttype,a.columns
from sysprotects a inner join sysobjects b on a.id = b.id inner join sysusers c on a.uid = c.uid

WHERE A.UID > 0

--或

select OBJECT_NAME(A.id) as tName,a.uid,c.name as uName,a.action,a.protecttype,
a.columns from sysprotects a  inner join sysusers c on a.uid = c.uid WHERE A.UID > 0

--或

select b.name as tName,c.name as objname,
CASE b.type
WHEN 'U' THEN 'Table'
WHEN 'P' THEN 'SP'
ELSE 'OTHER'
END AS TYPE,
CASE WHEN  a.ACTION = 26 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'REFERENCES',
CASE WHEN  a.ACTION = 193 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'SELECT',
CASE WHEN  a.ACTION = 195 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'INSERT',
CASE WHEN  a.ACTION = 197 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'UPDATE',
CASE WHEN  a.ACTION = 196 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'DELETE',
CASE WHEN  a.ACTION = 224 AND a.PROTECTTYPE = 205 THEN '√' ELSE '' END AS 'EXECUTE',
CASE a.PROTECTTYPE
WHEN 204 THEN 'GRANT_W_GRANT '
WHEN 205 THEN 'GRANT'
WHEN 206 THEN 'DENY'
ELSE 'OTHER'  --当有other出现的时候,需要将其他的PROTECTTYPE添加进去。
END AS PROTECTTYPE
from sysprotects a inner join sysobjects b on a.id = b.id
inner join sysusers c on a.uid = c.uid
WHERE c.name in ('gelong')
order by tname;

-- 授权信息
select
'GRANT '+ CASE a.ACTION
WHEN 26 THEN 'REFERENCES'
WHEN 193 THEN 'SELECT'
WHEN 195 THEN 'INSERT'
WHEN 196 THEN 'DELETE'
WHEN 197 THEN 'UPDATE'
WHEN 224 THEN 'EXECUTE'
ELSE 'OTHER' --当有other出现的时候,需要将其他的ACTION类型添加进去。
END +' ON '+ b.name +' TO '+ c.name
from sysprotects a(nolock) inner join sysobjects b(nolock) on a.id = b.id
inner join sysusers  c (nolock)on a.uid = c.uid
WHERE A.UID > 0


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: