登录名与用户名
16:20 2013-04-09 登录名与用户名
通过sp_addlogin创建登录名
1 execute sp_addlogin 'loginame','password' --loginame只能use master
指定登录名为loginame,并且创建test数据库中的用户nameindb
1 use test 2 execute sp_grantdbaccess 'loginame','nameindb' --test库下生成nameiddb用户及架构,loginame能use test
设置所有操作授权
1 exec sp_addrolemember 'db_owner','nameindb' --更改数据库成员角色身份 2 exec sp_addrolemember 'db_backupoperator','bakuser'--管理数据库备份,BACKUP DATABASE和BACKUP LOG语句
设置具体操作权限
1 grant select,insert,update,delete to nameindb --授予nameindb对所有用户表的操作权限 2 grant select,update on tb to nameindb --授予nameindb select,update到具体的表 3 grant select,update on tb(id,col) to nameindb --授予nameindb select,update到具体的表和列 4 grant create table,create view,create proc to nameindb --授予nameindb具有创建表、视图、存储过程等的操作权限
不能使用revoke drop table to nameindb。nameindb创建了table,再revoke create table权限,但还是可以删除自己创建的table
--exp1:

1 grant exec on usp_inserttable to nameindb --授予nameindb对具体存储过程的执行权限 2 deny exec on usp_inserttable to nameindb --禁止nameindb对具体存储过程的执行权限 3 revoke exec on usp_inserttable to nameindb --删除nameindb对具体存储过程的执行权限
删除登录用户
1 exec sp_revokedbaccess 'nameindb' --移除用户对数据库的访问权限 2 exec sp_droprolemember 'db_owner','nameindb' --移除数据库成员角色身份 3 exec sp_droplogin 'loginame' --删除登录用户
--步骤1:列出当前数据库的孤立用户 exec sp_change_users_login 'REPORT' --步骤2:自动将用户名所对应的同名登录添加到syslogins中 exec sp_change_users_login 'AUTO_FIX','用户名' --步骤3:将用户名映射为指定的登录名 exec sp_change_users_login 'UPDATE_ONE','用户名','登录名'--更新库下用户的sid成登录名的sid
--exp2:

1 --通过sp_addlogin 创建与用户名相同的登录名 2 execute sp_addlogin 'test','123' 3 exec sp_change_users_login 'REPORT' 4 exec sp_change_users_login 'AUTO_FIX','test' 5 exec sp_change_users_login 'UPDATE_ONE','test','test'
实际应用
16:06 2013-07-15 数据库errorlog中发现下面信息
The activated proc '[dbo].[sp_syspolicy_events_reader]' running on queue 'msdb.dbo.syspolicy_event_queue' output the following: 'Cannot execute as the database principal because the principal "##MS_PolicyEventProcessingLogin##" does not exist, this type of principal cannot be impersonated, or you do not have permission.'
网上找到问题原因及解决方法
Just check if the principle is valid on master and msdb securables.
If they found to orphaned users fix them using sp_change_users_login.
1 --解决方法 2 use master 3 select * from sys.database_principals where [name]='##MS_PolicyEventProcessingLogin##' 4 use msdb 5 select * from sys.database_principals where [name]='##MS_PolicyEventProcessingLogin##' 6 exec sp_change_users_login 'UPDATE_ONE','##MS_PolicyEventProcessingLogin##','##MS_PolicyEventProcessingLogin##'
|
【作者】: 醒嘞 |
【出处】: http://www.cnblogs.com/Uest/ | |
【声明】: 本文内容仅代表个人观点。如需转载请保留此段声明,且在文章页面明显位置给出原文链接! |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?