/*用户与角色管理*/ if db_id('accp') is not null drop database accp create database accp go use accp /* 基于Windows方式登录的实现 1、添加Window用户 下面在cmd下操作 >hostname 查看计算机名称 >net user accp "pass123" /add 添加一个用户accp/pass123 >net user 查看所有用户 >exit 退出cmd窗口 2、创建SQLServer登录名,再添加到数据库登录名 */ --创建SQLServer登录名 accp(事先创建好的window用户) sp_grantlogin 'aspnet/accp' --将数据库用户添加到当前数据库 sp_grantdbaccess 'aspnet/accp','accp' --查看当前登录名 print current_user --sa登录显示的用户名为dbo --更改登录名 execute as user='accp' select current_user --显示当前用户名为accp --新创建的用户没有授权是不能创建表的,下面操作失败! create table t1(sid int) --转换用户 revert --授权 grant create table to accp --重新以新用户登录 execute as user='accp' select current_user --由于有create table的权限,下面成功 create table t1 (sid int) insert into t1 values (101) select * from t1 update t1 set sid=501 drop table t1 --改dbo来操作这张表accp.t1 revert drop table accp.t1 select * from accp.t1 --删除架构,默认的架构名就是用户名 drop schema accp --移除数据库登录权限 sp_revokedbaccess 'accp' --移除SQLServer登录名 sp_revokelogin 'aspnet/accp' /* 基于SQLServer方式登录 1、创建sql登录用户 sp_addlogin new_user,password,defaultdb 2、授权数据库登录 sp_grantdbaccess new_user,login_name 3、移除当前数据库中的用户名 sp_revokedbaccess login_name 4、移除SQLServer登录名 sp_droplogin new_user */ use accp --为SQLServer添加登录名test为用户名,pass123为密码,accp为默认登录数据库 sp_addlogin 'test','pass123',accp --将用户添加到当前数据库 sp_grantdbaccess test,test --移除当前数据库的用户名 sp_revokedbaccess test --移除SQLServer登录名 sp_droplogin test /* 上面的方式已被新版本抛弃 1、创建sql登录用户 create login loginName with password=pass,default_database=dbName 2、授权数据库登录 create user loginName from login userName 3、移除当前数据库中的用户名 drop user userName 4、移除SQLServer登录名 drop login loginName */ use accp create login [aspnet/accp] from windows with default_database=accp create user test2 for login [aspnet/accp] execute as user='test2' select current_user revert grant create table to test2 execute as user='test2' --授于架构的控制权 grant control on schema::dbo to test2 drop user test2 drop login [aspnet/accp]