在SQL Server 中,使用系统的存储过程管理登录名,主要包括:
sp_addlogin sp_droplogin sp_helploginssp_grantlogin sp_revokelogin sp_denylogin
以下代码实现简单的三层权限:
use S100801A
go
--======================= 数据库登录 =======================
--添加登录用户(sp_addlogin '用户名','密码','默认数据库名')
exec sp_addlogin N'xg',N'xg123'
-- 或者
exec sp_addlogin N'xg',N'xg123',N'master'
--移除登录用户
exec sp_droplogin N'xg'
--======================= 数据库访问 =======================
--添加数据库访问用户(sp_grantdbaccess '用户名','数据库名')
use S100801A
go
exec sp_grantDBaccess N'xg',N'db_xg'
--移除数据库访问用户
exec sp_revokeDBaccess N'db_xg'
--======================= 数据库权限 =======================
--授予对数据库的所有权限(sp_addRoleMember '角色','用户')
exec sp_addRoleMember N'db_owner',N'db_xg'
--只能访问自己的数据库,及guest用户的公共表
--移除对数据库的所有权限(sp_dropRoleMember '角色','用户')
exec sp_dropRoleMember N'db_owner',N'db_xg'
go
--======================= 数据库登录 =======================
--添加登录用户(sp_addlogin '用户名','密码','默认数据库名')
exec sp_addlogin N'xg',N'xg123'
-- 或者
exec sp_addlogin N'xg',N'xg123',N'master'
--移除登录用户
exec sp_droplogin N'xg'
--======================= 数据库访问 =======================
--添加数据库访问用户(sp_grantdbaccess '用户名','数据库名')
use S100801A
go
exec sp_grantDBaccess N'xg',N'db_xg'
--移除数据库访问用户
exec sp_revokeDBaccess N'db_xg'
--======================= 数据库权限 =======================
--授予对数据库的所有权限(sp_addRoleMember '角色','用户')
exec sp_addRoleMember N'db_owner',N'db_xg'
--只能访问自己的数据库,及guest用户的公共表
--移除对数据库的所有权限(sp_dropRoleMember '角色','用户')
exec sp_dropRoleMember N'db_owner',N'db_xg'