/* sys.sql_logins 系统登陆名表 */ /* 创建数据库登陆名 创建数据库登录名密码可选参数 hashed 表示该密码已经经过hash加密处理 如 password = 0x12324124123 hashed, must_change 表示用户首次登陆时必须更改用户密码 必须启用 check_policy check_expiration 表示该用户密码采用密码过期策略 必须启用 check_policy check_policy 表示该用户密码强制采取windows密码策略 */ create login testlogin with password = \'123\' must_change, check_expiration = on, check_policy = on, default_database = inews /*查看当前登陆名列表*/ select * from sys.sql_logins go /*修改登录名信息*/ alter login testlogin with name = testlogin, password = \'123456\' /*停用该登陆名*/ alter login testlogin disable /*启用该登陆名*/ alter login testlogin enable select * from sys.sql_logins go /* 不同的固定服务器角色表示不同权限的用户组 可以通过系统定义的存储过程来控制用户的服务器角色归属 sp_addsrvrolemember 添加到服务器角色 sp_helpsrvrolemember 查看服务器角色成员表 sp_dropsrvrolemember 从角色中删除 is_srvrolemember 判断成员是否隶属于指定角色 */ sp_addsrvrolemember \'testlogin\' , \'securityadmin\'; exec sp_helpsrvrolemember \'securityadmin\'; /*至此登录名 weblearner 完成对数据库的映射以及权限分配,在此之前,仅有登陆权限*/ sp_dropsrvrolemember \'testlogin\' , \'securityadmin\'; /* select is_srvrolemember(\'securityadmin\' , \'testlogin\'); */ go /*关于user的操作*/ /* 为什么建议用user设置登陆名的权限而不是使用角色设置登录名权限? 因为角色的权限是全局的 即一旦分配角色 该登陆名就拥有数据库服务器里所有数据库的权限 这是不合理的 使用user设置权限可以有效的避免权限的过度授予 */ /*启用guest 架构*/ grant connect to guest /*为指定的登录名在指定的数据库内创建用户映射*/ create user testuser from login testlogin with default_schema = guest --用户名修改 alter user testuser with name = testuser go /*删除用户名*/ drop user testuser /*删除数据库登陆名*/ drop login testlogin /*查询指定数据库中用户名表*/ select * from inews..sysusers select * from sys.database_principals /*查询数据库登陆名表*/ select * from sys.sql_logins go